Rotativa ViewAsPDF CSS尺寸/尺寸

时间:2014-07-08 12:34:18

标签: asp.net-mvc asp.net-mvc-4 rotativa

我使用Rotativa ViewAsPdf方法将ASP.Net MVC中的HTML视图渲染为PDF。我通过设置:

将输出设置为A4尺寸,纵向和无边距
new ViewAsPdf(MVCCfpFormatter.Members.Views.FlightPlansFullPagePrint, model)
                    {
                       // FileName = flightPlan.ListingItemDetailsModel.FlightDetails + ".pdf",
                        PageSize = Size.A4,
                        PageOrientation = Orientation.Portrait,
                        PageMargins = new Margins(0, 0, 0, 0),
                        PageWidth = 210,
                        PageHeight = 297
                    };

然后在CSS中,我设置一个宽度为210mm的元素,它应该扩展页面的整个宽度,但在输出PDF中,210mm宽度并不代表整个PDF的宽度但更少。通过反复试验,生成的PDF的总宽度似乎在246mm左右。

为什么会发生这种情况的任何想法?

4 个答案:

答案 0 :(得分:12)

如果您仍然有问题,我已经对rotativa做了更多的研究。您可以使用wkhtmltopdf中的自定义开关。尝试添加

CustomSwitches = "--disable-smart-shrinking". 

这会阻止程序自动调整您的内容。从那里你可以正确调整你的html页面,以获得你想要的PDF格式。

答案 1 :(得分:3)

我想我可以帮助你。

 {
               FileName = Name + ".pdf",
               PageOrientation = Rotativa.Options.Orientation.Landscape,
               PageSize = Rotativa.Options.Size.A4

 }

1.6.3对我有用。我想你需要遵循这种语法来设置你想要的其他东西。

答案 2 :(得分:0)

如果您使用的是mvc 4,则应使用此格式

         public ActionResult yourAction()
      {

       var yourModel;


        var yourpdf= new PartialViewAsPdf(yourModel)
        {
            RotativaOptions = new DriverOptions()
            {
                PageOrientation=Orientation.Landscape,
                PageSize = Size.A4,
                IsLowQuality=true
                and other your Customiz

            }
        };
        return yourpdf;

    }

答案 3 :(得分:0)

在MVC之前不要忘记添加

using Rotativa.MVC;
using Rotativa;

要使用自定义选项,请这样做

  return new ActionAsPdf
                ("ActionName")
                {
                    FileName = "Filename.pdf",
                    RotativaOptions = new Rotativa.Core.DriverOptions()
                    {
                        PageSize=Rotativa.Core.Options.Size.A4,
                    }
                   
                };