1

我正在寻找 Node.js 的 RTF 到 PDF 转换器。我在 npm 站点上没有找到太多的包。

该应用程序如下:我需要从 AWS S3 存储桶中提取一个 RTF 文档(在 Word 中创建并保存为 .rtf)。然后我需要将文件作为 RTF 字符串读取。接下来,我需要将 RTF 字符串中的某些占位符标记替换为值(例如,在“{host-name} 想邀请您在 {date} 到 {address}。”--我需要替换 {host-name }、{address} 和 {date} 的实际值)。然后,插入实际值后,我需要将字符串转换为可以附加到电子邮件的 PDF。

出于这个原因,我不能使用任何几个 Word-to-PDF 包中的任何一个(因为我需要干预用值插入占位符的中间步骤),所以我正在寻找一个 RTF-to-PDF 转换(RTF 以字符串开头)。

有这样的事吗?

谢谢。

4

1 回答 1

1

无头模式下的 LibreOffice应提供文件到 PDF 的转换。您可以将它与LibreOffice-Convert集成到节点中。

但是,您的机器中需要 LibreOffice,因为它没有与 npm 一起安装。根据您的系统,请参见此处了解位置。

这是它在命令行中的使用方式,因此它支持 RTF 到 PDF 的转换:

soffice --headless --convert-to pdf file_name.rtf (来源)

理论上它应该这样实现(改编自npmjs):

const libre = require('libreoffice-convert');
const path = require('path');
const fs = require('fs');
const enterPath = path.join(__dirname, '/resources/example.rtf');
const outputPath = path.join(__dirname, '/resources/example.pdf');

// Read file
const file = fs.readFileSync(enterPath);
// Convert it to pdf format with undefined filter (see Libreoffice doc about filter)
libre.convert(file, '.pdf', undefined, (err, done) => {
    if (err) {
      console.log(`Error converting file: ${err}`);
    }
    
    // Here in done you have pdf file which you can save or transfer in another stream
    fs.writeFileSync(outputPath, done);
});
于 2020-11-11T09:25:27.527 回答