【问题标题】:Merging PDFs in Node在节点中合并 PDF
【发布时间】:2017-04-27 08:25:22
【问题描述】:

您好,我正在尝试合并总共 n 个 pdf,但我无法让它工作。

我正在使用 Buffer 模块来连接 pdf,但它只会将最后一个 pdf 应用到最终的 pdf 中。

这甚至可以在节点中做吗?

var pdf1 = fs.readFileSync('./test1.pdf');
var pdf2 = fs.readFileSync('./test2.pdf');

fs.writeFile("./final_pdf.pdf", Buffer.concat([pdf1, pdf2]), function(err) {
    if(err) {
        return console.log(err);
    }

    console.log("The file was saved!");
});

目前有一些库,但它们都依赖于其他软件或编程语言。

【问题讨论】:

    标签: javascript node.js pdf


    【解决方案1】:

    当您执行Buffer.concat([pdf1, pdf2]) 时,您期望得到什么?仅仅通过连接两个 PDF 文件,您不会得到一个包含所有页面的文件。 PDF 是一种复杂的格式(基本上是矢量图形的格式)。如果您只是添加了两个 JPEG 文件,您不会期望得到包含两张图片的大图像,对吗?

    您需要使用外部库。例如,https://github.com/wubzz/pdf-merge 可能会起作用。

    【讨论】:

      【解决方案2】:

      HummusJS 是另一个 PDF 操作库,但不依赖于 PDFtk。有关在缓冲区中组合 PDF 的示例,请参阅 this answer

      【讨论】:

      • 这对于那些使用 Firebase 等不允许安装 PDFtk 的服务的人来说很重要
      • 可以合并7个Pdfs吗?
      • HummusJS 现在不受支持。预建的二进制文件已经丢失,我无法在第一次尝试时运行它
      【解决方案3】:

      Aspose.PDF Cloud SDK for Node.js可以合并/合并pdf文档,无需依赖任何第三方API/工具。但是,目前,它适用于云存储(Aspose Internal Storage、Amazon S3、DropBox、Google Drive Storage、Google Cloud Storage、Windows Azure Storage、FTP Storage)。在不久的将来,我们将支持从请求体(流)中合并文件。

      
      const { PdfApi } = require("asposepdfcloud");
      const { MergeDocuments }= require("asposepdfcloud/src/models/mergeDocuments");
      var fs = require('fs');
      
      pdfApi = new PdfApi("xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx", "xxxxxxxxxxxxxxxxxxxxx");
      
      const file1 = "dummy.pdf";
      const file2 = "02_pages.pdf";
      const localTestDataFolder = "C:\\Temp";
      
      const names = [file1, file2];
      const resultName = "MergingResult.pdf";
      const mergeDocuments = new MergeDocuments();
      mergeDocuments.list = []; 
      names.forEach( (file) => {
              mergeDocuments.list.push(file);
          });
      
      
      // Upload File
      pdfApi.uploadFile(file1, fs.readFileSync(localTestDataFolder + "\\" + file1)).then((result) => {  
                           console.log("Uploaded File");    
                          }).catch(function(err) {
          // Deal with an error
          console.log(err);
      });
      
      // Upload File
      pdfApi.uploadFile(file2, fs.readFileSync(localTestDataFolder + "\\" + file2)).then((result) => {  
                           console.log("Uploaded File");    
                          }).catch(function(err) {
          // Deal with an error
          console.log(err);
      });
      
      
      // Merge PDF documents
      pdfApi.putMergeDocuments(resultName, mergeDocuments, null, null).then((result) => {    
          console.log(result.body.code);    
      }).catch(function(err) {
          // Deal with an error
          console.log(err);
      });
      
      //Download file
      const outputPath = "C:/Temp/" + resultName;
      
      pdfApi.downloadFile(outputPath).then((result) => {    
          fs.writeFileSync(localPath, result.body);
          console.log("File Downloaded");    
      }).catch(function(err) {
          // Deal with an error
          console.log(err);
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-04
        • 1970-01-01
        • 2017-11-04
        • 2019-02-14
        • 1970-01-01
        • 2021-07-20
        相关资源
        最近更新 更多