# What changed in officeparser

> 88 changes in officeparser 8 from its official release notes, upgrade guides and advisories: 22 breaking, 43 new APIs and options. Each one cited. Sources checked 2026-10-28. HTML: https://unstale.sh/npm/officeparser/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## officeparser 8

### Breaking changes

- Unreadable fonts now fail the conversion with PDF_GENERATION_FAILED and name the font option, rather than ending the process or embedding a font viewers cannot draw. (8.4.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.4.0)
- Type3, GlyphLessFont and generic families are no longer written as typefaces. (8.4.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.4.0)
- RTF output starts each page and slide on a page of its own. (8.4.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.4.0)
- Section starts in Word, ODT, and RTF now produce break nodes by default, preserving section page setup regardless of includeBreakNodes. (8.3.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.3.0)
- The default delimiter is now 'auto', so it is read from the file. (8.3.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.3.0)
- Word, ODT, and RTF footers are now separate footer nodes, one per part, rather than paragraphs collected in auxiliary.footers. (8.3.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.3.0)
- The default paper format is now 'auto', using the document's page setup where available and otherwise A4 with inch margins; pass format: 'A4' and a margin for the old output. (8.3.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.3.0)
- Word, ODT, and RTF headers are now separate header nodes, one per part, rather than paragraphs collected in auxiliary.headers. (8.3.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.3.0)
- Nested Word list levels now count afresh under each parent. (8.3.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.3.0)
- PDF output now omits hidden sheet content and speaker notes by default. (8.3.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.3.0)
- Turned PDF text is read whole with its angle, and look-alike CJK ideographs are read as unified ones. (8.3.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.3.0)
- RTF symbol words such as \emdash and \bullet are now read as their characters. (8.3.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.3.0)
- A split table's header row now starts every chunk in chunked output. (8.3.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.3.0)
- Disables remote asset requests; parses needing CDN-hosted PDF.js worker or Tesseract files reject with REMOTE_ASSET_BLOCKED. (8.2.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.2.0)
- Templates are subject to the XML element limit during parsing and reject when their elements, tags, and tag tokens exceed it. (8.2.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.2.0)
- Markdown and HTML embed widths and heights must be CSS lengths, and invalid dimensions are not read. (8.2.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.2.0)
- Cells formatted as dates, times, or durations now read as ISO text instead of Excel serial numbers. (8.2.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.2.0)
- Markdown table headers are emitted as table headers without added bold; authored bold is preserved. (8.2.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.2.0)
- Supplying some OCR options now leaves defaults in place for the remaining options instead of treating the supplied object as complete. (8.2.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.2.0)
- A new error reports when a parse would load remote assets while remote assets are disallowed. (8.2.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.2.0)
- A template field whose value is a list, object, or function now rejects instead of rendering its string representation. (8.2.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.2.0)
- Invalid video IDs are not read, and a YouTube directive with an invalid ID stays text. (8.2.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.2.0)

### New APIs and options

- Each PDF text run exposes its baseline, which PPTX and ODP output use to align page lines. (8.4.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.4.0)
- PDF warnings carry the page number for issues such as failed picture extraction, failed page loading, or an exhausted budget. (8.4.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.4.0)
- Sets the image-pixel limit beyond which a PDF picture is left out and reported with its page. (8.4.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.4.0)
- PDF text drawn invisibly is marked with TextFormatting.invisible; PPTX and ODP preserve its invisibility, while other outputs write it as text. (8.4.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.4.0)
- PPTX and ODP shapes now expose their placement as bounds. (8.3.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.3.0)
- Spreadsheet number cells now record the text displayed by their number format. (8.3.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.3.0)
- Text frames and text boxes in ODT, Word, and RTF are represented as drawing nodes with placement information. (8.3.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.3.0)
- Reads and writes list markers across DOCX, ODT, RTF, HTML, and PDF. (8.3.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.3.0)
- Adds ODP writing via ast.to('odp'), producing decks from presentations, PDFs, or other documents. (8.3.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.3.0)
- Adds configuration for ODP output. (8.3.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.3.0)
- Adds ODS writing via ast.to('ods'), producing workbooks from spreadsheets or other documents. (8.3.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.3.0)
- Adds configuration for ODS output. (8.3.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.3.0)
- Adds page setup metadata for page size, margins, header and footer distances, columns, and page numbering. (8.3.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.3.0)
- Reads and writes paragraph spacing across DOCX, ODT, RTF, HTML, and PDF. (8.3.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.3.0)
- Adds pdfConfig.printHidden to include hidden sheet content in PDF output. (8.3.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.3.0)
- Adds pdfConfig.printSpeakerNotes to include speaker notes in PDF output. (8.3.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.3.0)
- Adds PPTX writing via ast.to('pptx'), producing decks from presentations, PDFs, or other documents. (8.3.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.3.0)
- Adds configuration for PPTX output. (8.3.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.3.0)
- Adds ShapeMetadata for the appearance of PPTX and ODP shapes. (8.3.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.3.0)
- Adds the CLI output format option for writing ODP decks. (8.3.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.3.0)
- Adds the CLI output format option for writing ODS workbooks. (8.3.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.3.0)
- Adds the CLI output format option for writing PPTX decks. (8.3.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.3.0)
- Adds the CLI output format option for writing XLSX workbooks. (8.3.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.3.0)
- Adds XLSX writing via ast.to('xlsx'), producing workbooks from spreadsheets or other documents. (8.3.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.3.0)
- Adds configuration for XLSX output. (8.3.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.3.0)
- Sets the date names used by template formatting. (8.2.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.2.0)
- Sets a bound on how much content template loops can add. (8.2.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.2.0)
- Template fields support Word number and date picture formats, including currency, date patterns, and number sections. (8.2.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.2.0)
- Adds custom template filters. (8.2.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.2.0)
- Identifies whether each heading's level was decided by tags or font size. (8.2.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.2.0)
- Loop context exposes index, number, first, last, and length for the current pass. (8.2.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.2.0)
- Sets how often onPassword is asked. (8.2.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.2.0)
- Sets the number separators used by template formatting. (8.2.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.2.0)
- Controls Tesseract's language-data cache. (8.2.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.2.0)
- Templates can conditionally keep or drop content and repeat content with for-loops over paragraphs and table rows. (8.2.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.2.0)
- This optional peer is needed to embed fonts in the native PDF engine. (8.2.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.2.0)
- Accepts fallback TTF and OTF files for native PDF rendering. (8.2.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.2.0)
- Accepts TTF and OTF files for native PDF rendering, with characters drawn using the first font that contains them. (8.2.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.2.0)
- Enables bookmark outlines in the native PDF engine. (8.2.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.2.0)
- The tags value detects only headings tagged in a PDF's structure tree. (8.2.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.2.0)
- A new error identifies invalid template syntax, including blocks with missing closing tags. (8.2.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.2.0)
- Templates can use the upper filter to uppercase a field. (8.2.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.2.0)
- Sets the UTC offset used by template formatting. (8.2.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.2.0)

### Performance

- HTML under deeply nested wrappers is now read in linear time. (8.2.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.2.0)

### Behavior and default changes

- pdf.js is given decoders for JBIG2, CCITT fax and JPEG 2000 pictures. (8.4.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.4.0)
- DOCX, ODT and RTF output preserve each PDF page's size, and LaTeX output preserves its orientation by starting sections for pages with different sizes or orientations. (8.4.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.4.0)
- A PDF picture that cannot be decoded or exceeds the image-pixel limit is reported instead of being silently left out. (8.4.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.4.0)
- The native PDF engine accepts WOFF and WOFF2 files in this fallback-font configuration. (8.4.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.4.0)
- The native PDF engine accepts WOFF and WOFF2 files in this font configuration. (8.4.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.4.0)
- HTML now reads a page's own stylesheet and the colour in a background shorthand. (8.3.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.3.0)
- The native PDF engine now draws a line or page break inside a paragraph. (8.3.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.3.0)
- The native PDF engine now draws links, alignment, indents, varied text styles, footnotes, shaded cells, content-sized columns, pictures, charts, and Indic scripts. (8.3.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.3.0)
- Native PDF engine warnings now include details.reason; undrawable text is reported once at conversion end with a count and sample. (8.2.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.2.0)
- HTML output loads Chart.js only when a page draws a chart; without a chart script, charts are written as value tables with a warning. (8.2.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.2.0)

### Fixes and other changes

- PDF text extraction reads Indic scripts and Thai whole when PDFs place each letter cluster apart. (8.4.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.4.0)
- Text in fonts that a PDF does not embed is now read using pdf.js CMaps. (8.4.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.4.0)
- An ODT section with its own columns is set in those columns without includeBreakNodes. (8.4.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.4.0)
- An empty glyph is skipped so the next font can draw the character, or the character is reported lost instead of being drawn blank. (8.4.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.4.0)
- PDF table extraction better handles tagged rows with omitted cells, close-set cells, two-line headers, merged cells between rows, and labels with values. (8.4.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.4.0)
- In the browser, pdfCMapUrl specifies where the CMaps come from. (8.4.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.4.0)
- In the browser, pdfDecoderUrl specifies where the image decoders come from. (8.4.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.4.0)
- PPTX and ODP output write invisible PDF text fully transparent, and both PDF engines draw it unseen. (8.4.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.4.0)
- PPTX text using a theme colour now has its colour. (8.3.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.3.0)
- Word justified paragraphs are now read as justified. (8.3.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.3.0)
- Invalid limits that are not numbers greater than or equal to zero are reported and replaced with their defaults. (8.2.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.2.0)
- Reports misspelled render options and unsupported onMissing values, using keep. (8.2.0) — [release notes](https://github.com/harshankur/officeParser/releases/tag/v8.2.0)
