如何将多个 URL 渲染成单个 PDF

How can I render multiple URL's into a single PDF

我试图打开一系列 URL 来呈现输出,然后使用 PhantomJS 合并成一个 PDF,但我找不到任何关于如何执行此操作的文档。我只是在尝试和错误,但没有取得任何进展 - 希望有人知道如何做到这一点。

我还没有完全了解 PhantomJS,所以如果您知道更好的命令行、节点或 JAVA 工具会更好,我洗耳恭听(在这种情况下是眼睛)。

这是我的呈现单个页面的代码。我试过复制 open/render,但它总是覆盖 PDF 而不是附加到它。

var page = require('webpage').create(),
    system = require('system'),
    fs = require('fs'),
    pages = {
        page1: 'http://localhost/test1.html',
        page2: 'http://localhost/test2.html'
    };

page.paperSize = { 
    format: 'A4',
    orientation: 'portrait',
};

page.settings.dpi = "96";

// this renders a single page and overwrites the existing PDF or creates a new one
page.open('pages.page1', function() {
    setTimeout(function() {
        page.render('capture.pdf');
        phantom.exit();
    }, 5000);
});

PhantomJS 将一个网页呈现为一个 PDF 文件,因此如果您可以将多个 URL 合并为一个 html 文件,您可以在 PhantomJS 中打开它并制作一个 PDF。

但是制作几个PDF然后merge them into one with something like pdfkt at the end of the script, launching merge command from PhantomJS child module

会更简单