我正在使用phantomjs节点模块 . 下面是我得到这个模块的链接 .
https://github.com/sgentle/phantomjs-node
当我从html创建一个jpg图像文件时,这真的很好用 . 但其默认“dpi”为72,不适合打印图像文件 . 所以我想在渲染图像时设置dpi .
从上面的链接我读了一些例子,如page.set('viewportSize',{width:640,height:480}) . 它完美地设置了图像大小 . 但我想设置图像的dpi请指导我如何实现这一目标 .
var phantom = require('phantom');
phantom.create(function (ph) {
ph.createPage(function (page) {
page.open("http://www.google.com", function (status) {
page.render("bla.jpg");
ph.exit();
});
});
});
2 回答
有两种方法 .
1.缩放
您可以使用page.zoomFactor缩放页面 . 在更改zoomFactor之前,您必须相应地增加viewport size:
2. PDF
如果您关注质量,请渲染页面的pdf . pdf是基于矢量的,您可以根据需要放大 . 当您将文件名赋予
render
时,它使用pdf
扩展名:您可以看到rasterize.js示例如何处理页面大小 . 但有一些警告 . 您必须记住调整渲染的pdf的宽度 . 例如,见(未答复)question .
我的解决方案是不使用in phantom pdf渲染过程,因为生成的pdf的质量是不可接受的 .
首先,我以所需的dpi所需的分辨率生成图像 . 对我来说这是3300x2550(在300dpi时为11英寸x 8.5英寸)并且使用了页面缩放系数2.364(最接近11的除数因为我们使用11pt字体到2550/1080; 26/11)来保持相同的近似字体大小和1080p一样 . 然后我使用外部实用程序(例如iText或Aspose)将生成的图像推送到pdf中 . 它打印得很漂亮,在pdf中看起来不错 . 我唯一的问题是存储空间有点大,因为每次运行都会生成3300x2550图像文件 .