使用render()控制图像输出的DPI

11

使用phantomjs,在使用page.render(filename)方法将Web内容光栅化为图像时,是否有一种方法可以控制所使用的DPI设置?

我无法通过接口API找到任何可以控制此设置的内容,但不知道是否已经有人想出了一种方法。

我们的业务案例如下:

通过Web应用程序创建自定义HTML内容,并将其提供给我们的rasterize.js幻影进程,并查询特定标记以设置客户端矩形。该客户端矩形被渲染为HTML的PNG格式,然后可以在其他地方用作图像。

由于某些奇怪的字体大小/加粗组合的文本上存在反锯齿问题,我们希望结果PNG的分辨率要高于默认值。


PNG 中记录的分辨率通常在显示时被忽略。在编辑器中打开时看起来还好吗? - Mark Ransom
2
不,这就是问题所在。他们将PNG包含在PDF中,据说可以保持分辨率,但却产生了“难以阅读的文本”。 - Thomas Jones
啊,你找到了一个情况,在那里分辨率不会被忽略。你可能想要一个96的分辨率。 - Mark Ransom
是的,但在PhantomJS中是否可以指定以哪种分辨率进行render()呢?顺便说一下,他们要求300 DPI,因为它是用于打印的项目。 - Thomas Jones
2个回答

2

我可能混淆了DPI和其他内容,但您是否研究过zoomFactor选项?在页面对象上设置它将导致呈现的图像被放大。


0

这个分支允许设置 dpi https://github.com/martonw/phantomjs/tree/issue-%2313553

然后您可以使用 page.dpi = 72 来设置 dpi

console.log('Loading a web page');  
var page = require('webpage').create();
var url = 'http://phantomjs.org/';
page.open(url, function (status) {
  //Page is loaded!
  page.dpi=300; // this is where you actually set the DPI
  page.render("test.pdf");
  phantom.exit();
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接