Security News
JSR Working Group Kicks Off with Ambitious Roadmap and Plans for Open Governance
At its inaugural meeting, the JSR Working Group outlined plans for an open governance model and a roadmap to enhance JavaScript package management.
The docx npm package is a powerful library for creating and manipulating Microsoft Word documents programmatically. It allows developers to generate .docx files with various elements such as text, images, tables, and more, directly from their JavaScript or TypeScript code.
Creating a Simple Document
This feature allows you to create a simple Word document with text. The code sample demonstrates how to create a document with a single paragraph containing both regular and formatted text.
const { Document, Packer, Paragraph, TextRun } = require('docx');
const fs = require('fs');
const doc = new Document({
sections: [
{
properties: {},
children: [
new Paragraph({
children: [
new TextRun('Hello World!'),
new TextRun({
text: ' This is bold and underlined text.',
bold: true,
underline: {}
})
]
})
]
}
]
});
Packer.toBuffer(doc).then((buffer) => {
fs.writeFileSync('MyDocument.docx', buffer);
});
Adding Images
This feature allows you to add images to your Word document. The code sample demonstrates how to insert an image with specified dimensions into a document.
const { Document, Packer, Paragraph, ImageRun } = require('docx');
const fs = require('fs');
const doc = new Document({
sections: [
{
properties: {},
children: [
new Paragraph({
children: [
new ImageRun({
data: fs.readFileSync('path/to/image.png'),
transformation: {
width: 100,
height: 100
}
})
]
})
]
}
]
});
Packer.toBuffer(doc).then((buffer) => {
fs.writeFileSync('DocumentWithImage.docx', buffer);
});
Creating Tables
This feature allows you to create tables within your Word document. The code sample demonstrates how to create a table with two rows and two columns.
const { Document, Packer, Table, TableRow, TableCell, Paragraph } = require('docx');
const fs = require('fs');
const doc = new Document({
sections: [
{
properties: {},
children: [
new Table({
rows: [
new TableRow({
children: [
new TableCell({
children: [new Paragraph('Cell 1')]
}),
new TableCell({
children: [new Paragraph('Cell 2')]
})
]
}),
new TableRow({
children: [
new TableCell({
children: [new Paragraph('Cell 3')]
}),
new TableCell({
children: [new Paragraph('Cell 4')]
})
]
})
]
})
]
}
]
});
Packer.toBuffer(doc).then((buffer) => {
fs.writeFileSync('DocumentWithTable.docx', buffer);
});
officegen is another npm package that allows you to generate Microsoft Office documents, including Word, Excel, and PowerPoint files. Compared to docx, officegen offers a broader range of document types but may not have as many advanced features specifically for Word documents.
mammoth is a library focused on converting .docx documents to HTML and plain text. While it doesn't offer the same document creation capabilities as docx, it is useful for extracting content from existing Word documents.
pizzip is a low-level library for manipulating ZIP files, which can be used in conjunction with other libraries like docxtemplater to create and modify .docx files. It provides more control over the ZIP structure but requires more effort to use for document creation.
Generate .docx files with JS/TS very easily, written in TS.
$ npm install --save docx
$ npm run demo
will run the demo selector app in the demo
folder. It will prompt you to select a demo number, which will run a demo from that folder.
Please refer to the Wiki for details on how to use this library, examples and much more!
Full documentation can be found here: http://dolanmiu.github.io/docx
// Used to create docx files
var docx = require('docx');
// Create document
var doc = new docx.Document();
// Add some content in the document
var paragraph = new docx.Paragraph("Some cool text here.");
// Add more text into the paragraph if you wish
paragraph.addRun(new docx.TextRun('Lorem Ipsum Foo Bar'));
doc.addParagraph(paragraph);
// Used to export the file into a .docx file
var exporter = new docx.LocalPacker(doc);
// Or use the express packer to make the file downloadable.
// res is express' Response object
var exporter = new docx.ExpressPacker(doc, res);
exporter.pack('My First Document');
// done! A file called 'My First Document.docx'
// will be in your file system if you used LocalPacker
// Or it will start downloading if you are using Express
Check the Wiki for examples.
Made with 💖
Huge thanks to @felipeochoa for awesome contributions to this project
FAQs
Easily generate .docx files with JS/TS with a nice declarative API. Works for Node and on the Browser.
The npm package docx receives a total of 129,205 weekly downloads. As such, docx popularity was classified as popular.
We found that docx demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
At its inaugural meeting, the JSR Working Group outlined plans for an open governance model and a roadmap to enhance JavaScript package management.
Security News
Research
An advanced npm supply chain attack is leveraging Ethereum smart contracts for decentralized, persistent malware control, evading traditional defenses.
Security News
Research
Attackers are impersonating Sindre Sorhus on npm with a fake 'chalk-node' package containing a malicious backdoor to compromise developers' projects.