NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #3039 most downloaded on pub.dev
Create, read, and convert DOCX documents in pure Dart — fluent builder API, HTML/Markdown import and export, PDF export with Unicode fallback fonts, and a DOCX/PDF reader.
Last release 8 days ago
30 Sep 2026
Release timing varies
gaps range from 8 days to 2 months
Nearly every release is documented
notes for 34 of 35 stable releases
Nothing withdrawn
no release was ever pulled
9 months old
35 releases · first in 2025
One column per month.
Docs: update READMEs for docx_creator 1.4.0, docx_file_viewer 1.0.5 a…
Docs: update READMEs for docx_creator 1.4.0, docx_file_viewer 1.0.5 a…
PdfLayoutEngine delegates paragraph, list and table-cell measurement (and paragraph/list page splitting) to the exporter's own line layout through the new PdfBlockMeasurer hook. Pagination used to wrap a plain-text approximation (regular font only, no bold/heading widths, different spacing), so content could run past the bottom margin and disappear, or leave large gaps. Paragraphs now split at the exact line the renderer would break on, and long lists split between items with their numbering continued.Word<b>glued</b>, H<sub>2</sub>O, word</a>.) were drawn as separate words with a space between. Whitespace is now tracked across run boundaries, glued runs wrap as one word, and multiple spaces keep their width (code indentation is preserved).lineSpacing/lineRule (auto, exact, atLeast), spacingBefore/spacingAfter and indentFirstLine were ignored by the renderer. Space widths are measured in each run's own font, underlines/highlights/links now cover the spaces between words that share them, and justified lines ending in a hard break stay ragged.numberFormat/bullet honoured), sit on the first line's baseline, and items are indented like Word (indentPerLevel/hangingIndent). List items (and lists in table cells, previously plain text) render links, tabs, images, line breaks and all run formatting.colSpan in the first row no longer drops columns (DocxTable.resolvedGridColumns now counts spans and row-spanned columns — this also fixes the w:tblGrid written to DOCX). Tables keep their real width instead of stretching to the page, honour alignment, percentage widths, cell margins, row heights and cell vertical alignment; cell paragraphs keep their alignment; images in cells are drawn; large block images are scaled to fit.rowSpan cell taller than its rows spreads the extra height over all of them instead of stretching only the last row; header rows (<thead>, Word's "repeat as header row") repeat at the top of every page a table continues on and are never left alone at the bottom of a page.DocxTableCell gains marginTop/marginBottom (read from and written to w:tcMar), used by PDF measurement and drawing.Courier New, monospace, ...) render with Courier and are measured with Courier metrics; links without an explicit color use Word's hyperlink blue; all-caps/small-caps runs render in capitals; heading sizes mirror the DOCX heading styles (24/20/16pt at a 12pt base).<ol type="a|A|i|I"> and list-style-type map to list number formats / bullets (nested lists keep their own type).margin-top/margin-bottom/margin map to paragraph spacing, line-height to line spacing, the background shorthand to shading, align attributes to alignment, and text-transform: uppercase/font-variant: small-caps to caps.text-align/align (and center <th> by default) and vertical-align/valign, plus padding-top/padding-bottom, the padding shorthand and the table's cellpadding attribute.indentPerLevel is now stored per level, matching how the writer and PDF exporter apply it.docx_creator: fix PDF export dropping bold-italic/underline/strike (#…
docx_creator: fix PDF export dropping bold-italic/underline/strike (#…
PdfFontManager.selectFont had no bold-italic entry in the standard font set and fell back to bold-only, so any italic run inside a bold context (explicit bold+italic, or an italic run inside a heading, which is forced bold) rendered upright. Added Helvetica-BoldOblique (one of the standard 14 PDF fonts, so nothing to embed) as PdfFontManager.fontBoldItalic._renderList and _renderCellParagraph recorded isUnderline/isStrike on their words but never stroked them. Both now render through the same shared _drawWordLine/_strokeDecorations helpers _renderParagraph already used, instead of duplicating the word-drawing loop, so this and any future paragraph-level fix (background color, checkboxes, superscript, ...) stops needing to be re-applied at each call site. Does not cover _renderListInWidth (a list nested inside a table cell), which still renders plain text with no run formatting at all — a pre-existing gap, called out as unfixed in the original report too, left for a follow-up._drawWordLine (the paragraph word-drawing helper now also used by lists and table cells, above) positioned each word with an absolute text-matrix move and relied on that gap alone to separate words, with no actual space character between them - some PDF text extractors (e.g. pypdf) don't infer a word boundary from position alone, so extracted/searched text could run adjacent words together (worse for lists/cells after the fix above, since they'd previously drawn a real space glyph the old, now-removed, per-path code). _drawWordLine's text branch now draws an explicit space glyph between words, like the code it replaced did; its checkbox branch does too, so a checkbox immediately followed by text (a common task-list shape, e.g. '☐ Task') isn't glued onto it once extracted (images/shapes still lack this - they carry no font of their own to draw whitespace with, a smaller remaining gap since there's no run of text inside them to merge)._drawWordLine's checkbox branch sized the box from the line's base font size instead of the checkbox DocxText run's own fontSize (_renderList/_renderCellParagraph's deleted duplicate drawing loops got this right; the dedup above briefly lost it). A checkbox in a larger/smaller run now draws at its own size again.docx_creator 1.3.3: bump xml to ^7.0.1 (fixes #122 ) + dependency cons…
docx_creator 1.3.3: bump xml to ^7.0.1 (fixes #122) + dependency cons…
xml lower bound to 7.0.1 (#122): was pinned to ^6.6.1.^x.y.z) to explicit ">=x.y.z <(x+1).0.0" ranges for every dependency and dev_dependency, and other lower bounds bumped to the latest versions verified against the full test suite: archive 4.0.9 → 4.2.0, image 4.8.0 → 4.9.2, html 0.15.6 → 0.15.7. dart pub get, dart analyze, and the full dart test suite (406 tests) all pass against the new constraints.PDF export — text/images overlapping other content: several independent bugs that could each cause rendered content to overlap or overwrite whatever w
DocxShape) advanced the cursor by only a normal text line's height, regardless of how tall the image/shape actually was — so anything drawn after it (remaining lines, the next paragraph, a table) landed on top of it instead of below. Both the renderer's per-line height and PdfLayoutEngine's pagination-time paragraph measurement now account for inline media height./Resources /Font dictionary, before rendering happened, so any such font's object was never actually created and every page's font list had already been finalized without it. The content stream still referenced it via Tf, an undefined resource, which viewers handle by substituting a fallback font using the raw character/glyph codes — silently turning readable text using that font into wrong/garbled glyphs. Font objects are now written only after every page has been rendered, once the full set of fonts actually used is known.DejaVu Sans (docx_creator fallback), with both spaces and parentheses) was written straight into /FontName//BaseFont instead of being hex-escaped per PDF name syntax. /DejaVuSans(docx_creatorfallback) parses as the name /DejaVuSans followed by a stray literal string, corrupting the rest of that font dictionary — viewers that recover from the resulting parse error typically can't resolve the font at all, again falling back to raw-code substitution and garbled text (this was the concrete cause behind headings mixing an emoji with plain text, e.g. "✨ Features", rendering as scrambled characters like ") H D W X U H V").PdfExporter switches an entire text run to the (generally wider) Unicode fallback font if any character in that run needs it — not just the fallback-needing character itself. PdfLayoutEngine's line-wrap measurement, however, concatenated every run into one plain-text buffer before wrapping, discarding run boundaries, and always measured with plain standard-font metrics — undercounting the width of plain-ASCII words that share a run with e.g. an emoji, wrapping fewer lines than the renderer actually produces. The extra rendered line then spilled past the row/paragraph's reserved height into whatever was drawn next (most visible in tables with an emoji/icon prefix in a cell alongside longer text).ImageResolver no longer embeds non-decodable "image" bytes: a source that isn't actually a real raster image once fetched/decoded (e.g. an SVG — shields.io-style badges are a common real case — or an HTML error page returned instead of the expected image) is now rejected (resolve returns null, so callers fall back to their normal text placeholder) instead of being passed through under a guessed extension. Previously such bytes reached the PDF writer's raw-bytes-as-pixel-buffer fallback path, which has no relation between the declared image size and the actual byte count, and rendered as a block of solid garbage overlapping whatever content followed it.Docs-only release: adds a link to the docx_creator_showcase GitHub Pages deployment (Builder API, HTML/Markdown parsers, DOCX/PDF readers, and every e
Docs-only release: adds a link to the docx_creator_showcase GitHub Pages
deployment (Builder API, HTML/Markdown parsers, DOCX/PDF readers, and every
export format side by side).
Add MarkdownExporter (DOCX -> Markdown)
MarkdownExporter (DOCX → Markdown): the missing reverse direction of MarkdownParser. Covers headings, inline formatting (bold/italic/strikethrough/inline code/links/superscript/subscript/underline/highlight), fenced code blocks, blockquotes, horizontal rules, nested bullet/numbered/task lists, tables, inline/block images (as data URIs), and footnote/endnote references with trailing definitions.?. The exporter bundles DejaVu Sans (Bitstream Vera License, embeddable/redistributable — see lib/src/exporters/pdf/fonts/DEJAVU_SANS_LICENSE.txt) and lazily embeds it only when actually needed, with zero network or filesystem access so it works identically on web. An explicit addFont()/fontFamily request always takes priority. Does not cover CJK or Arabic, which need dedicated, much larger, shaping-aware fonts — use addFont() for those.lightgreen), rgb(), and 3-digit hex now work, <tr style="..."> is now read (previously only <td>/<th> own style was), and <thead> rows are now marked DocxTableRow.isHeader.<p>Hello\n World</p> → "Hello World", not the literal source whitespace); loose inline content next to a block sibling (<div><p>A</p>loose <span>text</span></div>) now merges into one paragraph instead of splitting into several.font-size now converts px/em/rem/% to points instead of taking the raw number as points; style-keyword matching (font-weight/font-style/text-decoration/text-align) is now case- and whitespace-insensitive; font-weight: 600–900 is now treated as bold; hsl()/hsla() colors are supported; grouped selectors (.foo, .bar { ... }) apply to every class in the group; margin/padding/text-indent now map to paragraph/cell indentation.<ol start="n"> is now honored; nested <ul>/<ol> are stamped with an override style reflecting their own type when flattened into the parent; <dl>/<dt>/<dd> now render as a bold-term paragraph plus an indented definition instead of garbling into one run of concatenated text.:---, :---:, ---:) is now applied; previously parsed by package:markdown but never read, so every column rendered left-aligned. Also fixed in the same pass: computed row isHeader was never actually passed to DocxTableRow.5. Five) are now preserved; a loose list item with multiple paragraphs stays one logical item instead of splitting into one entry per paragraph; nested sublists get the same type-preserving override style as the HTML parser fix above.PdfFontManager/EmbeddedFont iterated UTF-16 code units instead of Unicode code points, so any character outside the Basic Multilingual Plane (most emoji, some rare CJK) was split into two invalid glyph lookups even on the embedded-font path (#106).DocxShapeBlock had no measurement case and used a fixed ~18pt estimate while rendering at its real (possibly much taller) height, so pagination could judge a tall shape as fitting near a page bottom and then draw past the margin (#107, partial).HtmlExporter (DOCX → HTML) — missing node types (#108): DocxShapeBlock, DocxDropCap, DocxSectionBreakBlock, DocxTableOfContents, and DocxRawXml were silently dropped from the output entirely — worst case, a drop-cap paragraph lost its actual text, not just its styling. All now render (or, for constructs with no HTML equivalent, are marked with an HTML comment instead of vanishing without a trace). DocxCheckbox, DocxFootnoteRef, and DocxEndnoteRef are now handled at the inline level, with footnote/endnote content rendered in a trailing linked "notes" section.markdown ^7.3.0 → ^7.3.1, uuid ^4.5.3 → ^4.6.0, equatable ^2.0.8 → ^2.1.0, test ^1.30.0 → ^1.31.2 (dev). xml/image were left on their current major versions pending a compatibility review of their next major releases.`DocxTableCell.marginLeft`/`marginRight` now generate `w:tcMar` (#98): previously stored on the AST but never written to the cell's XML.
DocxTableCell.marginLeft/marginRight now generate w:tcMar (#98): previously stored on the AST but never written to the cell's XML.DocxText.themeColor/themeTint/themeShade are now written to w:color; DocxParagraph.themeFill/themeFillTint/themeFillShade are now written to w:shd (both were silently dropped on export). Extracted a shared writeShading/writeTextColor helper (core/xml_extension.dart) used by DocxText, DocxParagraph, and DocxTableCell so this class of bug can't reoccur independently in each class.DocxSectionDef.breakType (continuous/evenPage/oddPage) is now written as w:type on section breaks; previously every break behaved as nextPage regardless of the setting.DocxTableCell.copyWith/DocxTableStyle.copyWith no longer silently drop themeFill*, cnfStyle, cellPadding, and borderWidth when copying.DocxListStyle theme color/font are now applied when generating custom bullet/number numbering.xml definitions.w:tcMar, image a:ln borders, standalone-paragraph w:cnfStyle, and table-wide w:tblCellMar are now parsed back into the AST (previously write-only).DocxHeader/DocxFooter content was never rendered at all; now renders.colSpan/rowSpan are now honored (previously ignored, causing misaligned/overlapping cells); real column widths are used instead of an even split; per-cell/table borders and DocxTableStyle.plain (no border) are respected instead of always drawing black gridlines; nested lists/tables inside cells now render instead of leaving a blank gap; tables taller than one page now split across pages instead of drawing past the bottom margin.DocxParagraph.pageBreakBefore is now honored; paragraph height calculation now accounts for per-run custom font sizes and spacingBefore/spacingAfter/padding, fixing text overlap at page boundaries.indentRight is now applied; paragraph borders (e.g. <hr>, blockquote rules) are now actually drawn instead of only affecting spacing.DocxImage.align (center/right) is now honored instead of always rendering flush-left; inline DocxInlineImages inside paragraph runs are no longer silently dropped.DocxText.href now produces a real clickable /Annot /Link instead of just styled text.DocxDropCap letter and following text no longer vanish.DocxTableOfContents.cachedContent now renders instead of vanishing./W glyph-width array is now emitted (was previously omitted, so every glyph fell back to a single default width and text spacing was garbled); the ToUnicode CMap now correctly maps glyph ID → Unicode instead of Unicode → Unicode, fixing copy/paste and text search; Helvetica-Bold now declares its own (wider) /Widths array instead of reusing the regular Helvetica table; custom registered fonts now apply inside table cells and list items, not just body paragraphs.String via String.fromCharCodes, which then went through utf8.encode() at final PDF serialization — silently corrupting any raw byte >= 0x80 and desyncing the declared /Length from what was actually written. Every image embedded via the JPEG/DCTDecode path was corrupted in the output file; fixed by building the object as raw bytes instead. Non-JPEG images (PNG/GIF/BMP/etc.) were also wrapped directly in /FlateDecode as if the original container file bytes were already-decoded raw pixels, which does not produce valid image data in any real viewer — they're now decoded and re-embedded as JPEG through the (now-correct) DCTDecode path. Declared /Width//Height are now the image's real pixel dimensions instead of its on-page point size.DocxFootnoteRef/doc.footnotes are now rendered at the bottom of the page, above the footer, with pagination reserving the vertical space each page's referenced footnotes need so body content can't overlap them.DocxSectionDef.backgroundColor and .backgroundImage (stretch/fit/center/tile fill modes, with opacity via a new /ExtGState alpha resource) are now painted per page instead of being silently ignored.DocxImage.border/DocxInlineImage.border are now drawn in PDF (previously written to DOCX only), for both block-level images and inline images inside paragraph runs.DocxShape inside a paragraph run is now rendered instead of being silently dropped (only block-level DocxShapeBlock rendered before).doc.endnotes are now rendered on a trailing "Endnotes" page (previously never rendered in PDF at all), and DocxFootnoteRef/DocxEndnoteRef now draw a visible superscript reference marker in the body text at the citation point (previously footnote/endnote content was found by scanning paragraph children directly, with no marker shown where the citation actually was).DocxDropCap's rest-of-paragraph text flows through a narrower column beside the large letter for its lines span, then returns to full paragraph width, instead of the previous approach of concatenating the letter and all following text into one paragraph at the letter's oversized font. PdfLayoutEngine.measureNode's DocxDropCap case now accounts for the rest-of-paragraph text length (previously estimated only from the letter's own font size), so pagination stays in sync with what's actually drawn.DocxFootnoteRef inside a DocxDropCap.restOfParagraph is now detected by pagination's footnote scan; previously it only looked at top-level DocxParagraph children, so a footnote cited from within a drop cap got no reserved space and its content silently never rendered (the reference marker still drew).lib/src/parsers/html_parser_backup.dart, a 1,261-line unreferenced duplicate of the HTML parser superseded by the split parsers/html/* modules.test/ast_field_completeness_test.dart and test/pdf_table_rendering_test.dart covering the fixes above.test/pdf_table_rendering_test.dart coverage for endnotes (trailing page, no-endnotes no-op), drop cap wrap-around (narrow-then-full-width line positions), and the drop-cap/footnote interaction bug above; test/pdf_pagination_test.dart coverage for the DocxDropCap height estimate scaling with text length.PdfExporter.convertDocxFileToPdfBytes(docxFilePath): a static convenience wrapper around DocxReader.load + exportToBytes for converting an existing .docx file straight to PDF bytes in one call.test: extend timeout for large PDF test to 3 minutes
test: extend timeout for large PDF test to 3 minutes
DocxFooter.imageAndText now correctly sets size: 0 and color: DocxColor.white on the borderNone constant so table borders are truly invisible. Previously the DocxBorderSide defaults (size=4, color=black) were used, producing a 0.5pt black border.Hyperlinks now generate clickable links (#95): DocxText.link and the href parameter on DocxText were previously ignored during export. The generated X
DocxText.link and the href parameter on DocxText were previously ignored during export. The generated XML now wraps the run in a w:hyperlink element with a proper relationship ID, and the corresponding TargetMode=External entry is added to word/_rels/document.xml.rels. All const constructors are preserved.DocxListItem.buildXmlWithStyle previously ignored the style parameter entirely. Custom bullet characters, number formats (lowerAlpha, upperRoman, etc.), indentation, and font/color properties are now applied. Non-default styles receive their own abstractNum definition in numbering.xml, and each list item's w:ind reflects the effective indentPerLevel and hangingIndent from the style or per-item overrideStyle.test/issues_95_94_83_test.dart).Standardized Footer/Header Image Rendering: Fixed a critical issue where images in footers and headers were invisible in Microsoft Word due to missing
distT, distB, distL, and distR attributes to wp:inline.wp:effectExtent element for proper boundary calculation.xmlns:mc, xmlns:w14, and xmlns:wp14 namespaces across all header and footer generators.DocxFooter.imageAndText factory for easier creation of professional footer layouts with images and text.test/footer_global_fix_test.dart to verify OOXML compliance of image generation without workarounds.Images Not Showing in MS Word: Fixed critical issue where images in body, headers, and footers would render in LibreOffice but not in Microsoft Word (
wp:cNvGraphicFramePr element (with a:graphicFrameLocks noChangeAspect="1") to both inline (wp:inline) and floating (wp:anchor) image drawings, as mandated by the OOXML specification.xmlns:a (DrawingML) and xmlns:pic (Picture) namespace declarations to header and footer XML files, which are separate documents from document.xml and require their own namespace bindings.image_ms_word_compat_test.dart) that generate DOCX files, extract the ZIP, and verify XML structure for MS Word compatibility — including wp:cNvGraphicFramePr presence, namespace declarations, .rels files, media inclusion, and content type registration.Invalid Path Decoding: Added try-catch around Uri.decodeFull in FileLoaderImpl to prevent crashes when encountering invalid percent-encoded sequences
Uri.decodeFull in FileLoaderImpl to prevent crashes when encountering invalid percent-encoded sequences (like a literal %) in file paths, especially on Windows (#89).DocxExporter to ensure document integrity (#85).marginTop, marginBottom, marginLeft, and marginRight parameters in DocxDocumentBuilder.section(), allowing precise page layout control (#88).llm.txt to the package root to provide better context for AI agents working with this codebase.FileLoaderImpl to correctly handle encoded file paths for local images (#77).HTML image sizing: HtmlImageParser now honors CSS-declared sizes ( ), converts pixel-valued width/height attributes to DOCX points via the 72/96 DPI r
HtmlImageParser now honors CSS-declared sizes (<img style="width: 600px; height: 400px">), converts pixel-valued width/height attributes to DOCX points via the 72/96 DPI ratio, and falls back to the intrinsic pixel size of the decoded image when no HTML-level sizing is present (#86).ImageResolver now caps the final width at ~451 pt (the printable content width of an A4/Letter page with 1" side margins) preserving aspect ratio, so large source images stay inside the text frame.Modular DOCX Generator Architecture: Refactored the monolithic DocxExporter into specialized generator classes (DocumentGenerator, StylesGenerator, Re
DocxExporter into specialized generator classes (DocumentGenerator, StylesGenerator, RelationshipsGenerator, etc.) for improved maintainability and extensibility.w:tcW (table cell width) generation when gridColumns are specified, ensuring accurate table layouts in Microsoft Word (#82)..rels) files (#80).Multiple Text Decorations: Added support for combining multiple text decorations (e.g., Bold + Underline + Strikethrough) on a single DocxText node.
DocxText node.DocxText to use a decorations list, while maintaining backward compatibility with isUnderline and isStrike getters.HtmlBlockParser where nested elements (like <b> or <i>) inside heading tags (h1-h6) were being lost during HTML parsing.DocxReader and PdfReader to support multiple decorations.Image Borders: Corrected XML element order (a:prstGeom before a:ln) in DocxInlineImage to ensure borders are properly rendered in Microsoft Word.
a:prstGeom before a:ln) in DocxInlineImage to ensure borders are properly rendered in Microsoft Word.w:jc).paddingTop or paddingBottom by defaulting to invisible nil borders (#70).DocxAlign to use modern start and end values for better compatibility and RTL support.Vertical Text Alignment: Added support for vertical text alignment via DocxTextAlignment enum and textAlignment property in DocxParagraph and related
DocxTextAlignment enum and textAlignment property in DocxParagraph and related factory methods (#72).headerReference to w:type="default" (#73).w:hRule="exact" to the generated w:trHeight tag (#74).Paragraph Justification: Fixed critical issue where DocxAlign.justify caused document corruption by incorrectly mapping to w:val="justify". Now correc
DocxAlign.justify caused document corruption by incorrectly mapping to w:val="justify". Now correctly maps to w:val="both".border parameter in DocxImage and DocxInlineImage.test/justification_and_border_test.dart to verify alignment mapping and image border generation.Web Compatibility: Removed all direct dart:io dependencies to enable full Flutter Web support.
dart:io dependencies to enable full Flutter Web support.
dart:io File usages with platform-agnostic FileSaver and FileLoader abstractions.dart:io zlib compression with package:archive for PDF generation and parsing on web.ImageResolver to handle file loading via FileLoader.Nothing published for this version
Critical Word Compatibility: Fixed issue where documents were not opening in Microsoft Word due to incorrect XML tag ordering.
w:rPr (run properties) children to strictly follow the OOXML schema (e.g., rFonts -> color -> sz).w:tblPr (table properties) and w:tcPr (cell properties) to match schema requirements.DocxText were ignored. Now converts \n to <w:br/>.exportToFile failure on web platforms.
dart:io imports with a platform-agnostic FileSaver utility.dart:js_interop and package:web.AST Refactoring: Cleaned up DocxParagraph by removing deprecated fields (borderBottom) and unifying styling logic.
w:pPr element order (pStyle -> numPr -> pBdr -> shd -> ...).w:pBdr child order (top -> left -> bottom -> right) which previously caused border blocks to be invalidated.w:space unit conversion (twips to points) for padding.DocxParagraph by removing deprecated fields (borderBottom) and unifying styling logic.PDF Reader Improvements: Major enhancements for broader PDF compatibility:
PDF Reader Improvements: Major enhancements for broader PDF compatibility:
/W array, /Index array, and proper decompression.PDF Exporter Improvements:
elements and images lists.Code Cleanup: Removed unused optional parameters (isStrikethrough, isUnderline) in PDF reader classes to fix analyzer warnings.
isStrikethrough, isUnderline) in PDF reader classes to fix analyzer warnings.pdf_classes.dart by removing unused fields.PDF Export: New PdfExporter class for exporting documents directly to PDF format.
PdfExporter class for exporting documents directly to PDF format.
import 'package:docx_creator/docx_creator.dart';
final doc = docx().h1('Title').p('Content').build();
await PdfExporter().exportToFile(doc, 'output.pdf');
Table Border Fidelity: Fixed critical issues with conditional table borders (first row, last row, first column, last column, banding) not being correc
Advanced Style Inheritance: Implemented proper docDefaults resolution for paragraph and run properties.
docDefaults resolution for paragraph and run properties.w:rPr).themeColor, themeTint, and themeShade in text and styling.w:spacing in run properties.Table Row Heights: Fixed missing w:trHeight parsing and export. Calendar tables and other tables with explicit row heights now preserve their dimensio
w:trHeight parsing and export. Calendar tables and other tables with explicit row heights now preserve their dimensions.w:tblOverlap attribute on floating tables.w:embedRegular, w:embedBold, w:embedItalic, w:embedBoldItalic) instead of only Regular. This fixes missing font files during round-trip.styleId (e.g., "Calendar3", "LightList-Accent3") no longer emit explicit <w:tblBorders> that was incorrectly overriding the named style definition.cnfStyle conditional formatting.Table Style Fidelity: Fixed critical issue where table cell borders defined in Named Table Styles (via w:tblStylePr) were ignored.
w:tblStylePr) were ignored.
DocxStyle parser to correctly extract w:tcBorders from table style conditionals.Docs: update READMEs for docx_creator 1.4.0, docx_file_viewer 1.0.5 a…
Docs: update READMEs for docx_creator 1.4.0, docx_file_viewer 1.0.5 a…
fontTable.xml.rels handling to ensure valid links to embedded font files.w:lineRule attribute in paragraphs and styles.w:pStyle property in DocxStyle and DocxParagraph.w:asciiTheme, w:eastAsiaTheme, etc.) to preserve theme-based font selection.docx_file_viewer 1.0.4: restore showFootnotes/showEndnotes (fixes #12 …
docx_file_viewer 1.0.4: restore showFootnotes/showEndnotes (fixes #12…
w:tblStylePr) and Conditional Formatting (w:tblLook).
wp:anchor parsing.relativeFrom (margin, page, column) and alignment attributes.w:dropCap) in paragraphs.w:bdr).# prefix) in w:fill attribute generation to ensure compatibility with Microsoft Word.DocxTableCell.copyWith bug that caused style properties to be lost when modifying table cells.Bump version and add CHANGELOG entry for the twips/points pixel-scale fix, PUA bullet fallback, and dotted/dashed border fix.
flutter pub publish --dry-run as too tight for consumers).docx_reader.dart into 11 focused modules:
reader_context.dart - Shared state managerparsers/style_parser.dart - Style resolutionparsers/block_parser.dart - Paragraph/list parsingparsers/inline_parser.dart - Text/image/shape parsingparsers/table_parser.dart - Table/rowspan handlingparsers/section_parser.dart - Headers/footers/sectionshandlers/relationship_manager.dart - OOXML relationshipshandlers/font_reader.dart - Embedded font extractionhtml_parser.dart into 8 modules:
html/parser_context.dart - CSS class map & shared statehtml/style_context.dart - Style inheritance contexthtml/color_utils.dart - 141 CSS named colorshtml/block_parser.dart - Block elementshtml/inline_parser.dart - Inline elementshtml/table_parser.dart - Tables with nested supporthtml/list_parser.dart - Ordered/unordered listshtml/image_parser.dart - Image elementsresetBackground() to properly clear nullable shadingFill valuesstyle: refactor formatting and line wrapping across widgets and tests
style: refactor formatting and line wrapping across widgets and tests
DocxShapeBlock) and inline shapes (DocxShape)dodgerblue, mediumvioletred, papayawhip, etc.manual_builder_example.dart - All builder API featureshtml_parser_example.dart - All HTML/CSS featuresmarkdown_parser_example.dart - All Markdown featuresreader_editor_example.dart - Full read-edit-write workflow# and 0x prefixes)background-color incorrectly inheriting to inline childrenList Rendering: Fixed numbered and bullet lists not displaying markers in Word when multiple lists appear in the same document.
HtmlParser color parsing for font colors and background highlights. Now supports:
grey, lime, maroon, etc.)numbering.xml generation to match python-docx patterns for better Word compatibility (w:nsid, w:tmpl, w:tabs).- Initial version.
Your coding agent can read these notes before it upgrades. Set up the MCP server →