12

我正在使用 RotativaViewAsPdf方法将 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

4 回答 4

13

如果您仍然有问题,请对 rotativa 进行更多研究。您可以使用来自 wkhtmltopdf 的自定义开关。尝试添加

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

这会阻止程序自动调整你的东西。从那里您可以正确调整您的 html 页面以获得您想要的 pdf 大小。

于 2014-08-07T21:39:02.577 回答
5

我想我可以帮你。

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

 }

1.6.3 对我有用吗?我想您需要遵循该语法来设置您想要的其他内容。

于 2014-07-11T07:00:23.800 回答
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,
                    }
                   
                };
于 2020-11-21T10:49:23.080 回答
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;

    }
于 2019-02-06T18:25:43.213 回答