Nodejs 拼接 Word 文档有什么比较好的方法?

发布于 1周前 作者 yibo5220 来自 nodejs/Nestjs

Nodejs 拼接 Word 文档有什么比较好的方法?
null

4 回复

好像没办法添加其他 word 的内容呀

npm 上随手一搜,不知道能不能用 https://www.npmjs.com/package/docx-merger

在 Node.js 中拼接 Word 文档,你可以使用 mammothdocxtemplater 这两个库来实现。mammoth 可以将 HTML 转换为 Word 文档,而 docxtemplater 则擅长模板化操作。下面是一个基本的示例,展示如何使用这两个库来拼接 Word 文档。

首先,你需要安装这两个库:

npm install mammoth docxtemplater pizzip file-saver

接下来,你可以使用以下代码来拼接两个 Word 文档(假设它们是 HTML 格式,你可以先将它们转换为 HTML):

const mammoth = require('mammoth');
const PizZip = require('pizzip');
const Docxtemplater = require('docxtemplater');
const { saveAs } = require('file-saver');

// 示例 HTML 内容
const html1 = '<h1>Document 1</h1><p>This is the first document.</p>';
const html2 = '<h1>Document 2</h1><p>This is the second document.</p>';

// 将 HTML 转换为 Word 文档内容
async function convertToWord(html) {
    const result = await mammoth.convertToDocx({value: html});
    return new Uint8Array(result.arrayBuffer);
}

// 拼接两个 Word 文档并保存
async function mergeDocuments() {
    const doc1 = await convertToWord(html1);
    const doc2 = await convertToWord(html2);
    
    // 这里省略了实际拼接的过程,因为 docxtemplater 更适合模板化
    // 你可以考虑将两个文档内容合并到一个 HTML 字符串中,然后再次转换为 Word
    
    // 示例:简单保存第一个文档
    const blob = new Blob([doc1], { type: "application/vnd.openxmlformats-officedocument.wordprocessingml.document" });
    saveAs(blob, "merged.docx");
}

mergeDocuments();

注意,此示例仅展示了基本的转换和保存过程。实际拼接可能需要更复杂的逻辑,例如处理文档格式和样式。

回到顶部