2014-07-02 91 views
13

我想将HTML页面转换为A4尺寸的PDF。phantomjs将内容合并到A4页面

page.paperSize = { 
    format: 'A4', 
    orientation: 'portrait', 
    border: '1cm' 
}; 

有没有办法缩放网站以适应A4的宽度?

如果我有以下HTML:

<div style="width:1500px; text-align:right;"> 
    right 1500px 
</div> 

的div右端脱落的页面。

我打与viewportSize属性:

page.viewportSize = { 
    width: 480, 
    height: 800 
}; 

我本来期望的是一个更大的视口宽度结果页面的较大部分被渲染成PDF。

page.zoom 

也没有预期的效果。

PDF文件是报告。对于专业的外观,他们应该是A4而不是任意大小。

或者phantomjs是我的问题的错误工具?

我在Ubuntu 12.04.4上使用phantomjs 1.9.7版本。


编辑:

看来,这里有三个不同的维度:

  • vieportSize这是用来渲染大小,写入文档
  • paperSize这是PDF格式文档的大小
  • 然后就是屏幕尺寸。幻象总是适合纸张大小的一个屏幕的宽度。我的phantomjs版本的屏幕尺寸为1024 x 768像素。如果视图端口大于屏幕尺寸,则不显示1024像素以外的所有内容。

我还没有找到方法来改变屏幕尺寸。我发现这个http://www.whatismyscreenresolution.com/为PDF。

+0

您可以操纵元素/页面的宽度,使其适合文档。问题是这是否仍然看起来不错。你使用哪个phantomjs版本和哪个操作系统? –

+1

我宁愿不必设计我的网站围绕phantomjs的要求... – pat

+0

这里是另一个指针:你可以[模拟页面缩放](http://stackoverflow.com/a/9441618/1816580),但这可能会让你的页面变得糟糕透顶。 –

回答

2

一种解决方案是创建一个与A4大小完全相同的元素,并将其中的内容放入其中。这工作在我的机器上:

.page{ 
    position:relative; 
    border: 0px; 
    width:calc(210mm * 1.25); 
    height:calc(297mm * 1.25); 
    padding:0 
} 

请注意,我使用的缩放因子为1.25。这是由于this issue

+0

这似乎工作得很好。我使用“评估”功能动态地执行它,并且它工作正常,例如, document.querySelector('body')。style.height =“calc(297mm * 1.25)” – Ian