DOCX Processing
.docx is a ZIP archive of XML and resources. Different tasks have different tools and workflows.
Workflow Decision
| Intent | Workflow | Reference |
|---|---|---|
| Read/analyze text only | pandoc → markdown | raw-xml-access.md |
| Read structure, comments, media, formatting | unpack → raw XML | raw-xml-access.md |
| Create new document | docx-js (JS/TS) | docx-js.md |
| Edit own document, simple changes | Document library (Python) | ooxml.md |
| Edit someone else's document | Redlining (tracked changes) | redlining.md |
| Legal / academic / business / gov docs | Redlining — REQUIRED | redlining.md |
| Visual analysis | soffice → PDF → pdftoppm | raw-xml-access.md |
Text Extraction (Quick)
pandoc --track-changes=all path-to-file.docx -o output.md
# --track-changes=accept/reject/all
Create New Document
- MANDATORY — READ ENTIRE FILE:
docx-js.md(~500 lines). NEVER set range limits. - Create JS/TS file using Document, Paragraph, TextRun components.
- Export with
Packer.toBuffer().
Edit Existing Document (Own, Simple)
- MANDATORY — READ ENTIRE FILE:
ooxml.md(~600 lines). NEVER set range limits. python ooxml/scripts/unpack.py <office_file> <output_dir>- Run Python script using Document library.
python ooxml/scripts/pack.py <input_dir> <office_file>
Edit Someone Else's Document → Redlining
See redlining.md for full 6-step workflow with batching strategy and RSID preservation.
Code Style
- Write concise code, no verbose variable names, no unnecessary print statements.
Dependencies
| Package | Install | Purpose |
|---|---|---|
| pandoc | apt install pandoc |
Text extraction |
| docx | npm i -g docx |
Create new docs |
| LibreOffice | apt install libreoffice |
PDF conversion |
| Poppler | apt install poppler-utils |
pdftoppm for images |
| defusedxml | pip install defusedxml |
Secure XML parsing |