代码之家  ›  专栏  ›  技术社区  ›  Matt Cashatt

使用CSS@Page呈现的打印页面大小

  •  3
  • Matt Cashatt  · 技术社区  · 14 年前

    嗨,谢谢你的光临!

    出身背景

    我正在使用打印多页报告 Rotativa PDF 其将HTML页面打印成PDF。为此,我需要遵循CSS 2.1及更高版本的@page约定。

    我的应用程序是C#,MVC 3。

    问题/问题:

    即使我在@page声明中指定了8.5英寸乘11英寸,打印的PDF中的页面也只能缩放到8.5X11页面的75%左右。我知道这一点是因为我有一个背景图像,应该覆盖整个页面,但它只打印到整个页面的75%左右的PDF。内容也按比例缩小了,所以一切都是按比例正确的,只是没有像它应该的那样覆盖整个8.5X11框架。

    我正在CSS中设置报告的封面,如下所示:

    @page defaultPage{size:8.5in 11in;margin: 2cm;}    
    #CoverPage {
            page: defaultPage;
            background-image: url(/Resources/rendered_assets/img/cover_bg.jpg); 
            background-repeat:no-repeat;
            width:8.5in;
            height: 11in;           
        }
    

    以及HTML:

     <div id="CoverPage">
            <p>foo</p>
            <p>bar</p>
     </div>
    

    知道我可能做错了什么吗?提前谢谢。

    2 回复  |  直到 6 年前
        1
  •  8
  •   Giorgio Bozio    14 年前

    不知道它是否能解决你的问题。。但最新的 Rotativa 发布后,您可以将一些选项传递给渲染引擎。您可以这样设置PageWidth、PageHeight和Margins:

        return new ViewAsPdf()
        {
            FileName = "TestView.pdf",
            PageSize = Size.A3,
            PageOrientation = Orientation.Landscape,
            PageMargins = { Left = 0, Right = 0 }, // it's in millimeters
            PageWidth = 122, // it's in millimeters
            PageHeight = 44
        };
    
        2
  •  1
  •   Javier Cadiz    12 年前
    var urlHelper = new UrlHelper(Request.RequestContext);
    
    string url = urlHelper.Action("Index", new { name = "value" });
    
    return new UrlAsPdf("http://www.github.com")
    {
        FileName = "TestExternalUrl.pdf",
        PageMargins = new Margins(3, 3, 3, 3)
    };