我正在使用PhantomJS将网页转换为PDF。 当我在开发环境中运行代码时,输出文件大小约为几KB,但是当我在AWS-Lambda上运行相同的代码时,输出文件大小约为几MB。
我想生成一个与开发环境大小相同的pdf文件。
以下是我用于转换的代码
var system = require('system');
var page = require('webpage').create();
page.settings.userAgent = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36';
var url = system.args[1];
var file_name = system.args[2]
var margin = system.args[3];
page.paperSize = {
format: 'A2',
orientation: 'portrait',
margin: JSON.parse(margin)
};
page.evaluate(function () {
var style = document.createElement('style');
style.innerHTML = '.card-padding{padding-top: 0;padding-bottom: 0;}';
document.body.appendChild(style);
})
page.open(url, function start(status) {
window.setTimeout(function () {
page.render(file_name, {format: 'pdf'});
system.stdout.write(file_name)
phantom.exit();
}, 5000);
});
我也尝试设置页面dpi
page.open(url, function start(status) {
window.setTimeout(function () {
page.dpi=72
page.render(file_name, {format: 'pdf'});
system.stdout.write(file_name)
phantom.exit();
}, 5000);
})
但它没有帮助。 您可以找到项目here
答案 0 :(得分:0)
解决方案;
.fonts
文件夹.fonts
文件夹HOME = /var/task
它会显着缩小文件大小。
问题是什么;
debian和ubuntu上的PhantomJs v2.1.x至少正确处理本地字体,即它们嵌入在pdf中,因此在屏幕上以高质量呈现,文本可搜索和可选,文件大小保持低。对于远程webfonts,文本将转换为轮廓,不嵌入字体,文本不会被搜索和选择,并且对于较长的文档,文件大小会很大。