0.1.2 โข Published 6 months ago
@benedicte/docx-merge v0.1.2
๐ docx-merge
A fast and lightweight Node.js library written in TypeScript for merging two Microsoft Word (.docx) documents into one. Easily insert content at specific positions or based on placeholder patterns.
๐ฆ Installation
Install via npm:
npm install @benedicte/docx-merge๐ Dependencies
Only two lightweight dependencies:
adm-zipโ for extracting and rebuilding .docx (ZIP) filesfast-xml-parserโ for parsing and modifying the DOCX XML content
๐ ๏ธ API
mergeDocx(
sourcePath: string,
contentPath: string,
options: {
outputPath?: string;
pattern?: string;
insertStart?: boolean;
insertEnd?: boolean;
}
): void | bufferParameters:
sourcePath(required) โ Path to the base.docxfilecontentPath(required) โ Path to the.docxfile to insert into the baseoptions:outputPathโ If provided, writes the merged document to this path. If omitted, returns aBufferpatternโ String pattern in the source file to replace with the inserted contentinsertStartโ Insert the content at the beginning of the source fileinsertEndโ Insert the content at the end of the source file
๐ Note: You can combine pattern, insertStart, and insertEnd and at least one is required.
๐ก Examples
Replace a placeholder in the source DOCX
import { mergeDocx } from "@benedicte/docx-merge";
mergeDocx("./source.docx", "./table.docx", {
outputPath: "./output.docx",
pattern: "{{table}}",
});Get the merged result as a Buffer
import { mergeDocx } from "@benedicte/docx-merge";
const buffer = mergeDocx("./source.docx", "./table.docx", {
pattern: "{{table}}",
});
// Use buffer (e.g., send as a response in a server)Insert at the start of the document
import { mergeDocx } from "@benedicte/docx-merge";
mergeDocx("./source.docx", "./table.docx", {
outputPath: "./output.docx",
insertStart: true,
});Insert at the end of the document
import { mergeDocx } from "@benedicte/docx-merge";
mergeDocx("./source.docx", "./table.docx", {
outputPath: "./output.docx",
insertEnd: true,
});๐งช Testing
This project uses Vitest for unit testing.
To run tests:
npm run test๐ License
MIT
๐ค Contributing
Contributions, bug reports, and feature requests are welcome! Feel free to open an issue or submit a pull request.