Overview
A .docx file is a ZIP archive containing XML files.
Quick Reference
| Task | Approach |
|---|---|
| Read/analyze content | pandoc or unpack for raw XML |
| Create new document | Use docx-js — see references/creating.md |
| Edit existing document | Unpack → edit XML → repack — see references/editing.md |
| Raw XML (tracked changes, comments, images) | See references/xml.md |
Converting .doc to .docx
Legacy .doc files must be converted before editing:
python scripts/office/soffice.py --headless --convert-to docx document.doc
Reading Content
# Text extraction with tracked changes
pandoc --track-changes=all document.docx -o output.md
# Raw XML access
python scripts/office/unpack.py document.docx unpacked/
Converting to Images
python scripts/office/soffice.py --headless --convert-to pdf document.docx
pdftoppm -jpeg -r 150 document.pdf page
Accepting Tracked Changes
To produce a clean document with all tracked changes accepted (requires LibreOffice):
python scripts/accept_changes.py input.docx output.docx
Detailed references
Implementation details live in references/ (one level deep, loaded only when relevant):
- references/creating.md (~340 lines) — Creating new .docx files with docx-js: setup, validation, page size, styles, lists, tables, images, page breaks, hyperlinks, footnotes, tab stops, multi-column layouts, table of contents, headers/footers, critical rules for docx-js.
- references/editing.md (~60 lines) — Editing existing documents: the unpack → edit XML → repack workflow, common pitfalls.
- references/xml.md (~130 lines) — Raw XML reference: schema compliance, tracked changes, comments, images.
When working on a creating or editing task, read the relevant reference file before generating code.
Dependencies
- pandoc: Text extraction
- docx:
npm install -g docx(new documents) - LibreOffice: PDF conversion (auto-configured for sandboxed environments via
scripts/office/soffice.py) - Poppler:
pdftoppmfor images