gpt4 book ai didi

javascript - 使用 phantomjs 将网页渲染为 pdf 时,如何自动调整 viewportSize 以占用整个页面宽度?

转载 作者:搜寻专家 更新时间:2023-11-01 04:09:12 25 4
gpt4 key购买 nike

我可以使用以下参数正确指定页面大小:

var page = require('webpage').create();
page.paperSize = { format: 'Letter, orientation: 'Portrait'};

我面临的挑战是,我无法让我的网页占据纸张的整个宽度。

这是我可以设置视口(viewport)大小的方法:

page.viewportSize = { width: mybestfitwidth, height: mybestfitheight };

这里的挑战是我不知道 mybestfitwidth 应该是多少。我可以说出我的 pdf 页面的宽度(以英寸为单位),但我不知道那是多少像素,因为这取决于 dpi 设置。我不知道 phantomjs 会使用什么 dpi 设置或如何修改它。

总而言之,我只需要我的页面能够很好地打印并占据我的 pdf 页面的整个宽度。有什么办法可以实现这一目标吗?

最佳答案

这是我今天想出的一个经过充分测试的解决方案:

var pageSize = "A4",
pageOrientation = "portrait",
dpi = 150, //from experimenting with different combinations of viewportSize and paperSize the pixels per inch comes out to be 150
pdfViewportWidth = 1024,
pdfViewportHeight = 768,
cmToInchFactor = 0.393701,
widthInInches,
heightInInches,
temp;

switch(pageSize){
case 'Letter':
default:
widthInInches = 8.5;
heightInInches = 11;
break;
case 'Legal':
widthInInches = 8.5;
heightInInches = 14;
break;
case 'A3':
widthInInches = 11.69
heightInInches = 16.54;
break;
case 'A4':
widthInInches = 8.27;
heightInInches = 11.69;
break;
case 'A5':
widthInInches = 5.83;
heightInInches = 8.27;
break;
case 'Tabloid':
widthInInches = 11;
heightInInches = 17;
break;
}

//reduce by the margin (assuming 1cm margin on each side)
widthInInches-= 2*cmToInchFactor;
heightInInches-= 2*cmToInchFactor;

//interchange if width is equal to height
if(pageOrientation === 'Landscape'){
temp = widthInInches;
widthInInches = heightInInches;
heightInInches = temp;
}

//calculate corresponding viewport dimension in pixels
pdfViewportWidth = dpi*widthInInches;
pdfViewportHeight = dpi*heightInInches;

page = require('webpage').create();
page.paperSize = { format: pageSize, orientation: pageOrientation, margin: '1cm' };
page.viewportSize = { width: pdfViewportWidth, height: pdfViewportHeight };

关于javascript - 使用 phantomjs 将网页渲染为 pdf 时,如何自动调整 viewportSize 以占用整个页面宽度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22017746/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com