【问题标题】:Rotativa ViewAsPDF CSS Sizing / DimensionsRotativa ViewAsPDF CSS 大小/尺寸
【发布时间】:2014-07-08 12:34:17
【问题描述】:

我正在使用 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 左右。

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 你已经有了这个问题的答案!您应该编辑现有答案,而不是发布新答案。
    • 我会试试@user2612373 并告诉你结果,谢谢你的评论。
    • 试过了,当尝试通过 CSS 正确定位项目时,它似乎仍然存在半英寸的差异
    • 您是否确保在页面呈现之前没有其他 CSS 或脚本修改您的页面?我似乎可以让它在我的应用程序中正常工作。
    • 感谢您的回复,非常有帮助。我有关于 Unicode 的问题,当生成 PDF 时,一些 Unicode 会被打乱。你有什么想法吗?
    【解决方案2】:

    我想我可以帮助你。

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

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

    【讨论】:

    • 什么意思?这不是和我上面展示的语法一样,只是使用完整的命名空间Rotativa.Options... 吗?
    • 是的,我的意思是如果不使用完整的命名空间,我就无法正常工作。如果这无助于解决您的问题,听起来它可能在您的 CSS 中?
    • 我的完整命名空间,包括在顶部使用 using 关键字,我没有在这里包括在内。当您设法尝试您的时,它是否在正确的给定尺寸下完美运行?
    • 是的,效果很好。也许只是尝试像我一样设置页面大小,看看你得到了什么?我还没有尝试打印出 pdf,但在阅读器中它的格式完美。
    • 你做了和我@user2612373一样的事情,所以它会输出相同的结果。你能像我之前在我的问题中问过的那样用完全正确的尺寸试一试吗?
    【解决方案3】:

    如果你使用的是 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;
    
        }
    

    【讨论】:

      【解决方案4】:

      对于 MVC,在任何事情之前不要忘记添加

      using Rotativa.MVC;
      using Rotativa;
      

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

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

      【讨论】:

        猜你喜欢
        • 2016-11-11
        • 1970-01-01
        • 1970-01-01
        • 2016-05-02
        • 2012-01-23
        • 1970-01-01
        • 2020-01-24
        • 1970-01-01
        • 2014-12-06
        相关资源
        最近更新 更多