使用CSS @Page渲染打印页面的大小

时间:2012-08-06 13:30:14

标签: c# css pdf-generation css-paged-media

嗨,谢谢你的期待!

背景

我使用Rotativa PDF打印多页报告,将HTML页面打印到PDF。在这样做时,我需要遵循CSS 2.1及更高版本的@page约定。

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

问题/问题:

即使我在@page声明中指定8.5in乘11in,打印的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 个答案:

答案 0 :(得分:8)

不知道它是否可以解决您的问题..但是使用最新的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
    };

答案 1 :(得分:1)

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)
};