docs_gee 1.2.2
docs_gee: ^1.2.2 copied to clipboard
Pure Dart library for generating DOCX and PDF documents with rich formatting, tables, lists. Cross-platform with no native dependencies.
Changelog #
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
1.2.2 - 2026-02-27 #
Fixed #
PDF Generator
- Accurate text width estimation - Replaced rough character-width approximation (
0.5 * fontSize) with Adobe Helvetica AFM glyph-width table for precise text layout- Helvetica variants use per-character widths from the standard Adobe Font Metrics
- Courier (monospace) uses correct
0.6 * fontSizeper glyph - Includes width data for Latin-1 supplement and Polish characters
- Underline & strikethrough in table cells - Table cell text segments now render underline and strikethrough decorations correctly (previously only worked outside tables)
- Per-segment width calculation - Line width is now computed per text segment (respecting each segment's font) instead of joining all text and measuring as one
1.2.1 - 2026-02-23 #
Fixed #
Page Breaks
- Windows Word compatibility - Page breaks now work correctly in Microsoft Word on Windows
- Replaced
<w:pageBreakBefore/>paragraph property with explicit<w:br w:type="page"/>run element - Applies to regular paragraphs, table cell paragraphs, and TOC page breaks
- No API changes -
pageBreakBefore: trueworks exactly the same way
- Replaced
- Unit tests - Added
test/page_break_test.dartwith 11 tests covering page break XML generation, DOCX and PDF output
1.2.0 - 2026-02-19 #
Added #
Per-Cell Border Control
- Cell-level borders - Override table-level borders on individual cells
DocxCellBordersclass withtop,bottom,left,rightbordersCellBorderstype alias for format-agnostic code- Convenience constructors:
.all(),.none(),.bottom() - Custom border per side with
color,size, andstyle - Cell borders override table-level borders when set
- Works in both DOCX (
<w:tcBorders>) and PDF output
bordersparameter onDocxTableCell- Both constructor and.text()factory acceptDocxCellBorders?- Unit tests - Added
test/cell_borders_test.dartwith 26 tests covering model, XML generation, and PDF/DOCX output
1.1.2 - 2025-01-23 #
Fixed #
PDF Generator
- Bullet points display correctly - Fixed encoding issue where bullet character (•) was displaying as "•"
- Rewrote
_escapePdfStringto properly convert Unicode characters to WinAnsi octal escapes
- Rewrote
- Extended character support - Added proper encoding for:
- Typography: bullet (•), en-dash (–), em-dash (—), smart quotes (' ' " "), ellipsis (…), euro (€), trademark (™), copyright (©), registered (®)
- German: Ä, Ö, Ü, ä, ö, ü, ß
- French: À, Â, Ç, È, É, Ê, Ë, Î, Ï, Ô, Ù, Û, à, â, ç, è, é, ê, ë, î, ï, ô, ù, û
- Polish: Ó, ó (native support), other Polish characters (ą, ę, ć, ź, ż, ń, ł, ś) fall back to base ASCII equivalents due to WinAnsi limitations
DOCX Generator
- List detection fix - Fixed issue where
listDash,listNumberAlpha, andlistNumberRomanstyles didn't trigger inclusion ofnumbering.xml, causing lists to display incorrectly - List level specification - Added explicit
<w:ilvl w:val="0"/>to all list styles instyles.xmlfor consistent formatting
1.1.0 - 2025-01-21 #
Added #
Line Breaks (Soft Return) - DOCX only
- Automatic
\nconversion - Newline characters in text are now converted to<w:br/>line breaksDocxParagraph.text('Line 1\nLine 2\nLine 3')
- Explicit line break runs - New
DocxRun.lineBreak()constructor for manual line breaks- Allows different formatting before and after line break
DocxParagraph(runs: [DocxRun('Bold', bold: true), DocxRun.lineBreak(), DocxRun('Normal')])
- Line breaks create soft returns within a paragraph (like Shift+Enter in Word)
1.0.1 - 2024-12-21 #
Added #
Hyperlinks
- External links - Link text to external URLs
DocxRun('text', hyperlink: 'https://example.com')- Automatic blue color and underline styling
Internal Links (Bookmarks)
- Bookmarks - Create named anchors in document
DocxParagraph.heading('Title', level: 1, bookmarkName: 'section1')
- Bookmark references - Link to internal bookmarks
DocxRun('Go to section', bookmarkRef: 'section1')
Table of Contents
- Automatic TOC generation
DocxDocument(includeTableOfContents: true)- Configurable title (
tocTitle) - Configurable heading depth (
tocMaxLevel: 1-4) - Word auto-updates TOC on document open
Fixed #
- Repository URL in pubspec.yaml
1.0.0 - 2024-12-19 #
Added #
Document Generation
- DocxGenerator - Generates Microsoft Word DOCX files
- Pure Dart implementation using OOXML standard
- Configurable default font name and size
- Compatible with Word 2007+, Google Docs, LibreOffice
- PdfGenerator - Generates PDF documents
- Pure Dart implementation (PDF 1.4 standard)
- No native dependencies
- Cross-platform support including Web
Document Model
- Document - Container for document content
- Title and author metadata
- Mixed content support (paragraphs and tables)
- Creation and modification timestamps
Text Formatting
- TextRun - Rich text formatting
- Bold, italic, underline, strikethrough
- Text color (hex format)
- Background/highlight color
- Text alignment - Left, center, right, justify
Paragraph Styles
- Headings (H1-H4)
- Subtitle
- Caption
- Block quote
- Code block (monospace)
- Footnote
Lists
- Bullet lists (•)
- Dash lists (–)
- Numbered lists (1, 2, 3)
- Alphabetic lists (a, b, c)
- Roman numeral lists (I, II, III)
- Nested lists up to 9 levels deep
Tables
- Basic table support with rows and cells
- Cell background colors
- Cell text alignment
- Table borders (all, none, outside only)
- Border styles (single, double, dashed, dotted)
Other Features
- Page breaks
- Emoji support (DOCX only - Word handles natively)
- Cross-platform: iOS, Android, Web, macOS, Windows, Linux
Documentation #
- Complete API reference
- Usage examples for all features
- Platform-specific guides (Web, Mobile)