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

5

大家好,我目前在使用Angular.js开发网站,想要从用户的输入中生成一个Word文档,并且已经成功完成了!但是问题是,我想让用户预览并下载该Word文档的PDF版本。因此,我尝试更改MIME类型和SaveAs格式,但是没有成功。

我还尝试使用软件包将Word转换为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");
    });
  }

我仍然无法使用输出变量通过docxConverter或任何其他软件包进行转换。


你能把剩下的代码也包含进来吗? - bsheps
@bsheps 是的,当然可以。 - Team Siete
@TeamSiete,你找到解决方案了吗?如果有,请分享。 - Passionate Coder
1个回答

0
我在使用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,但它们只提供有限次数的免费使用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接