将多个PDF页面合并/嵌套到一个

时间:2018-02-12 13:34:46

标签: javascript node.js pdf electron

我试图编写一个小的电子应用程序,将多个pdf文件或页面嵌套到一个更大的页面上(用于在绘制大量CAD图纸时节省纸张)。

基本上来自pdfjam的unix命令pdfnup是我想要的 - 但由于不同的操作系统(Mac和Windows),我需要一个跨平台解决方案。

到目前为止,是否有人对节点/ javascript做过一些熟悉的事情?经过大量的研究后,我还没有找到合理的解决方案或库。

1 个答案:

答案 0 :(得分:0)

感谢Zxifer的回答,我偶然发现了HummusRecipe库,该库为HummusJS项目提供了高级API。叠加方法就是我想要的。

我最终得到了这段代码:

// Maximum plottable height (915 mm) - Conversion to point
const maxPageHeight = (915 / 0.3528);

// Read files and determine width/length of plot
const fileOne = new HummusRecipe('lp.pdf', 'output1.pdf');
const fileTwo = new HummusRecipe('ls.pdf', 'output2.pdf');
let width = Math.max(fileOne.pageInfo(1).width, fileTwo.pageInfo(1).width) + 30;

// Create new pdf file
const pdfDoc = new HummusRecipe('new', 'output.pdf', {
    version: 1.6,
    author: 'IBB Wörn Ingenieure GmbH',
    title: 'Print PDF',
    subject: 'Imposition of various PDF files for optimized printing.'
});

// Get height of first pdf to generate offsett
let heightOne = fileOne.pageInfo(1).height;
// Overlay PDFs to new pdf with offset and ~ 5mm margin
pdfDoc
    .createPage(width, maxPageHeight)
    .overlay('lp.pdf', 15, 15)
    .overlay('ls.pdf', 15, heightOne + 15)
    .endPage()
    .endPDF();