NodeJS 如何使用Docxtemplater将生成的Word文档转换为PDF?

iqxoj9l9  于 2022-12-22  发布在  Node.js
关注(0)|答案(1)|浏览(1081)

大家好,我目前正在开发一个网站使用Angular.js,我想从用户的输入生成一个Word文档,这工作得很好!!
问题是我想让用户预览和下载的Word文档作为PDF文档,因此我尝试改变MIME类型和改变SaveAs格式,但它没有工作
我也试过用包把这个词改成PDF,到目前为止没有运气
下面是保存生成的word文档的代码

this.loadFile("/assets/document/Template.docx", function(
  error,
  content
) {
  if (error) {
   console.log("Load file error: ",error) ;
  }
  var zip = new PizZip(content);
  var doc = new Docxtemplater().loadZip(zip);
doc.setData({
  tag: "Hello"
});
try {
   
        doc.render();
      } catch (error) {
       console.log(error)
      }
       var out = doc.getZip().generate({
        type: "blob",
        mimeType:
        //"application/pdf;charset=utf-8"
        "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
      }); //Output the document using Data-URI

     saveAs(out, "GeneratedDocx.docx");
    });
  }

我仍然不能使用out变量来使用docxConverter或任何其他包进行转换

k3fezbri

k3fezbri1#

我在使用docxtemplater的时候遇到了类似的问题。下面的事情对我很有效。我用docx-pdf npm包把它转换成了pdf。https://www.npmjs.com/package/docx-pdf

var doc = new Docxtemplater()
    .attachModule(imageModule)
    .loadZip(zip)
    .setData(finalData)
    .render();

  var buffer = await doc.getZip().generate({ type: "nodebuffer" });

  fs.writeFile(outputPath, buffer, function (err, result) {
    if (err) {
      return next(new ErrorHandler(err.response, 401));
    }
  });
  
  docxConverter(outputPath,'./output.pdf',function(err,result){
    if(err){
      console.log(err);
    }
    console.log('result'+result);
  });

转换不是那么准确,但它在许多情况下为我工作。也有一些API可用,但他们提供免费的次数有限。

相关问题