docs_gee 1.0.0
docs_gee: ^1.0.0 copied to clipboard
Pure Dart library for generating Microsoft Word DOCX and PDF documents. Create professional documents with rich formatting, tables, lists, and more. No native dependencies - works on iOS, Android, Web [...]
docs_gee #
A pure Dart library for generating Microsoft Word (DOCX) and PDF documents. Create professional documents programmatically with rich formatting, tables, lists, and more - all from a single document model. Created and supported by Codigee.
Why docs_gee? #
- Pure Dart - No native dependencies, works everywhere Dart runs
- Dual Format - Generate both DOCX and PDF from the same document model
- Cross-Platform - iOS, Android, Web, macOS, Windows, Linux
- Lightweight - Only one dependency (
archivefor ZIP) - Simple API - Intuitive document builder pattern
Features #
| Feature | DOCX | |
|---|---|---|
| Text formatting (bold, italic, underline, strikethrough) | ✅ | ✅ |
| Text colors & highlighting | ✅ | ✅ |
| Headings (H1-H4) | ✅ | ✅ |
| Paragraph styles (subtitle, caption, quote, code, footnote) | ✅ | ✅ |
| Text alignment (left, center, right, justify) | ✅ | ✅ |
| Bullet & numbered lists | ✅ | ✅ |
| Nested lists (up to 9 levels) | ✅ | ✅ |
| Tables with borders & colors | ✅ | ✅ |
| Page breaks | ✅ | ✅ |
| Document metadata | ✅ | ✅ |
| Custom fonts | ✅ | ✅ |
| Emoji support | ✅ | - |
Installation #
dependencies:
docs_gee: ^1.0.0
dart pub add docs_gee
# or
flutter pub add docs_gee
Quick Start #
import 'dart:io';
import 'package:docs_gee/docs_gee.dart';
void main() {
// Create document
final doc = Document(title: 'My Report', author: 'John Doe');
// Add content
doc.addParagraph(Paragraph.heading('Quarterly Report', level: 1));
doc.addParagraph(Paragraph.text('This report summarizes Q4 performance.'));
// Add a table
doc.addTable(Table(
rows: [
TableRow(cells: [
TableCell.text('Metric', backgroundColor: 'E0E0E0'),
TableCell.text('Value', backgroundColor: 'E0E0E0'),
]),
TableRow(cells: [
TableCell.text('Revenue'),
TableCell.text('\$1.2M', alignment: Alignment.right),
]),
],
));
// Generate both formats
File('report.docx').writeAsBytesSync(DocxGenerator().generate(doc));
File('report.pdf').writeAsBytesSync(PdfGenerator().generate(doc));
}
Usage Examples #
Rich Text Formatting #
doc.addParagraph(Paragraph(
runs: [
TextRun('Normal, '),
TextRun('bold, ', bold: true),
TextRun('italic, ', italic: true),
TextRun('colored', color: 'FF0000'),
],
));
Lists #
// Bullet list
doc.addParagraph(Paragraph.bulletItem('First item'));
doc.addParagraph(Paragraph.bulletItem('Second item'));
// Numbered list
doc.addParagraph(Paragraph.numberedItem('Step one'));
doc.addParagraph(Paragraph.numberedItem('Step two'));
// Nested list
doc.addParagraph(Paragraph.bulletItem('Parent'));
doc.addParagraph(Paragraph.bulletItem('Child', indentLevel: 1));
Tables #
doc.addTable(Table(
borders: TableBorders.all(),
rows: [
TableRow(cells: [
TableCell.text('Name', backgroundColor: 'CCCCCC'),
TableCell.text('Score', backgroundColor: 'CCCCCC'),
]),
TableRow(cells: [
TableCell.text('Alice'),
TableCell.text('95', alignment: Alignment.right),
]),
],
));
Semantic Styles #
doc.addParagraph(Paragraph.heading('Title', level: 1));
doc.addParagraph(Paragraph.subtitle('Document subtitle'));
doc.addParagraph(Paragraph.quote('A famous quote...'));
doc.addParagraph(Paragraph.codeBlock('const x = 42;'));
doc.addParagraph(Paragraph.caption('Figure 1: Chart'));
Page Breaks #
doc.addParagraph(Paragraph.heading(
'New Chapter',
level: 1,
pageBreakBefore: true,
));
Platform Support #
| Platform | Support |
|---|---|
| Android | ✅ |
| iOS | ✅ |
| Web | ✅ |
| macOS | ✅ |
| Windows | ✅ |
| Linux | ✅ |
Web Usage #
import 'dart:html' as html;
void downloadDocument(Uint8List bytes, String filename) {
final blob = html.Blob([bytes]);
final url = html.Url.createObjectUrlFromBlob(blob);
html.AnchorElement(href: url)
..setAttribute('download', filename)
..click();
html.Url.revokeObjectUrl(url);
}
Mobile Usage #
import 'package:path_provider/path_provider.dart';
import 'package:share_plus/share_plus.dart';
Future<void> shareDocument(Uint8List bytes) async {
final dir = await getTemporaryDirectory();
final file = File('${dir.path}/document.docx');
await file.writeAsBytes(bytes);
await Share.shareXFiles([XFile(file.path)]);
}
API Reference #
Main Classes #
| Class | Description |
|---|---|
Document / DocxDocument |
Document container with metadata |
Paragraph / DocxParagraph |
Paragraph with text runs and styling |
TextRun / DocxRun |
Text segment with formatting |
Table / DocxTable |
Table with rows and borders |
TableRow / DocxTableRow |
Table row with cells |
TableCell / DocxTableCell |
Table cell with content |
DocxGenerator |
Generates DOCX bytes |
PdfGenerator |
Generates PDF bytes |
Paragraph Styles #
| Style | Method |
|---|---|
| Normal text | Paragraph.text('...') |
| Heading 1-4 | Paragraph.heading('...', level: 1) |
| Subtitle | Paragraph.subtitle('...') |
| Caption | Paragraph.caption('...') |
| Quote | Paragraph.quote('...') |
| Code block | Paragraph.codeBlock('...') |
| Footnote | Paragraph.footnote('...') |
| Bullet list | Paragraph.bulletItem('...') |
| Dash list | Paragraph.dashItem('...') |
| Numbered list | Paragraph.numberedItem('...') |
| Alpha list | Paragraph.alphaItem('...') |
| Roman list | Paragraph.romanItem('...') |
Text Formatting #
| Property | Type | Description |
|---|---|---|
bold |
bool |
Bold text |
italic |
bool |
Italic text |
underline |
bool |
Underlined text |
strikethrough |
bool |
Strikethrough text |
color |
String |
Hex color (e.g., 'FF0000') |
backgroundColor |
String |
Highlight color |
Compatibility #
Generated documents are compatible with:
- Microsoft Word 2007+
- Google Docs
- LibreOffice Writer
- Apple Pages
- WPS Office
- Any OOXML-compatible application
Requirements #
- Dart SDK:
>=3.0.0 <4.0.0 - Flutter:
>=3.0.0(if using with Flutter)
Contributing #
Contributions are welcome! Please feel free to submit issues and pull requests on GitHub.
License #
MIT License - see LICENSE for details.
[Codigee - Best Flutter Experts]
Made with ❤️ by Codigee