使用PhantomJS / Node.js将HTML转换为可搜索的PDF

时间:2015-01-04 19:22:11

标签: node.js pdf phantomjs

我正在使用HTML模板生成PDF服务器端,该模板可以使用来自客户端和服务器的数据完成。以下代码有效,但是:
1)PDF文件比“保存为PDF格式”时大5倍。在客户端。
2)PDF无法搜索。

我假设这两个问题源于PhantomJS生成栅格与基于矢量的PDF。我应该做些什么(希望我只是错过一个或两个PhantomJS选项......)??

    var phantom = require('phantom');

    req.body['invoicenumber'] = 15010001;
    phantom.create(function(ph){
        ph.createPage(function(page) {
            page.set('paperSize', { format: 'Letter',orientation: 'portrait', margin: '1cm' });
            page.open("html/template.html", function(status) {
                page.evaluate(function(data) {
                    $(function() { populate(data); });
                    },function() {
                        var quotenumber
                        page.render('quotes/'+req.body['invoicenumber']+'.pdf', function(){
                            ph.exit();
                            res.send(req.body['invoicenumber']+'.pdf');
                    });
                },req.body); 
            });     
        });
    })

MINOR UPDATE:增加页边距以使页面不按比例放大会缩小文件大小,但仍然是客户端的2.5倍'另存为PDF' ...

1 个答案:

答案 0 :(得分:0)

在html模板中,尝试使用任何这些标头标签(h1,h2 ... h6)来包装您的内容。这些标头标签内的内容将在生成的pdf中呈现为文本。因此它应该是可搜索的。这也会减少pdf文件的大小。不知道为什么div,p,table等标签在pdf中呈现为图像。