Skip to main content

pdf_plus 4.0.1 copy "pdf_plus: ^4.0.1" to clipboard
pdf_plus: ^4.0.1 copied to clipboard

Pdf creation library for dart

4.0.1 #

Signature validation #

  • Validate /adbe.pkcs7.detached signatures that carry no signed attributes (RFC 5652 §5.4). In this form the signature covers the digest of the ByteRange bytes directly — there is no messageDigest attribute and no encapsulated content. PdfSignatureValidator handled only the two other shapes (signed attributes compared against messageDigest, and the legacy /adbe.pkcs7.sha1 encapsulated digest), so here it had nothing to verify the signature against and reported "Atributo messageDigest não encontrado no CMS", rejecting documents the ITI validator (validar.iti.gov.br) approves. ICP-Brasil e-CPF A3 producers emit this shape (SHA-1 + rsaEncryption).
  • The signature is now verified over the ByteRange bytes, and that same verification proves integrity: a byte changed inside the signed range changes the digest and fails the check, so a tampered document is still reported as not intact.
  • Covered by test/signing/detached_sem_atributos_assinados_test.dart, with a real ICP-Brasil document of this shape and a tampered copy.

Dependencies #

  • Cap image below 4.11.0. image 4.11.0 declares archive ^4.0.9 but calls ZLibDecoder.decodeLazy, which only exists in archive 4.1; with this package's archive <4.1.0 cap, pub resolved that pair and nothing compiled.

4.0.0 #

PDF merging #

  • Add PDF merging. PdfDocument.merge combines a list of PDF byte arrays into one document; appendDocument, importPage and importPageRange bring pages into a new PdfDocument; and PdfDocumentMerger drives the same work while collecting warnings. PdfDocumentParser is now exported from pdf.dart.
  • Two strategies through PdfMergeOptions.mode: objectImport (default) copies the object graph of each source page, preserving content, resources, annotations, links, form fields, bookmarks, optional content groups and page labels; flatten draws each source page as a single form XObject, keeping only graphical content.
  • Page tree attributes a source page inherited (/Resources, /MediaBox, /CropBox, /Rotate) are materialized on the imported page, so pages keep their geometry when detached from their original page tree.
  • Link and bookmark destinations are re-targeted at the imported copy of their page; named destinations are resolved to explicit destinations at import time. A destination pointing outside the imported range is dropped and reported through PdfDocumentMerger.warnings.
  • Form field hierarchies are flattened onto fully qualified names. Name collisions are resolved by PdfMergeOptions.fieldNameConflict. Fields that no page widget leads to — the shape SEI-exported documents use for invisible signatures — are imported too.
  • Merging invalidates every digital signature the sources carry. Signed documents merge anyway, as every PDF tool does, and the loss is reported through warnings. Three independent options control the outcome, in this precedence: rejectSignedSources, keepInvalidSignatures and removeSignatureAppearance. By default the field is dropped and the visible mark is kept as a read-only stamp, so no viewer reports a broken signature.
  • Identical streams shared between sources — a font program, an image — are materialized once (deduplicateResources).
  • Encrypted sources and loaded destinations are refused with PdfMergeException instead of producing corrupt output.
  • PdfDocumentParser gained the public API the importer needs: getObject, resolve, objectIds, storageOf, trailer, rootRef, rootDict, pageRefs, pageCount, pageDictAt, resolvePageResources, resolvePageMediaBox and inheritedPageAttribute.
  • PdfGraphics.drawFormXObject is now public.
  • See doc/roteiro_merge_pdf.md for the design, the measurements and the comparison against the SEI output; example/merge_documents.dart for usage.

Parser fixes #

These affect any document, not just merging.

  • Read streams larger than the read window. The windowed reader returned on the first window whose header parsed, so extractStream never found endstream and readStreamData returned null for anything bigger. Stream data is now read straight from the reader, using /Length when endstream actually follows it and scanning in blocks otherwise.
  • Undo the PNG/TIFF predictor of a cross-reference stream. /DecodeParms /Predictor 12 — what most PDF 1.5+ writers emit — left every table row filtered, so object offsets pointed outside the file. In sample3.pdf that meant 4208 of 4416 objects unreadable and 255 pages read instead of 366.
  • Read objects whose dictionary is larger than the window. A signature /Contents holds megabytes of hex string inside the dictionary; the token reader threw or returned a dictionary cut at the window edge, and the object was discarded — which silently dropped /V from signature fields. The window now grows on truncation, and falls back to reading up to the object's endobj.
  • A stale /ByteRange no longer throws in extractSignatureFieldsFromBytes. In a rewritten document the declared offsets do not describe the file, and the read window is now clamped to it.
  • PdfCachedRandomAccessReader exposes inner.

Other fixes #

  • Every page was duplicated when saving a loaded document. mergeDocument appended the pages after PdfPage's constructor had already registered them, so a two-page file was written as /Kids [3 0 R 22 0 R 3 0 R 22 0 R] /Count 4.
  • Drawing on a loaded page erased its fonts and images. When /Resources is an indirect reference that still lives in the original bytes, PdfGraphicStream.prepare replaced it with the new resources. The original dictionary is now read and merged into.
  • A loaded page whose /MediaBox does not start at (0, 0) kept its origin: PdfPage.mediaBoxOverride is filled on load, instead of the box being rewritten as [0 0 w h] and the content shifting.
  • Top-left coordinate conversions (addUriAnnotationTopLeft, addSignatureFieldTopLeft, PdfSignatureBounds.toPdfRect) only subtracted the page height. They now go through PdfCoordinateTransformer, which honours the box origin, /CropBox, /Rotate and /UserUnit.
  • PdfXObject.name returned X4 without the leading slash, producing an invalid resource key and content stream operand for every non-image XObject.
  • PdfSignatureFieldEditor.updateFieldMetadata wrote /Reason, /Location, /Name and /M on the field dictionary. Per ISO 32000-1 §12.8.1 they belong to the signature dictionary, which wins on read.
  • An ECDSA signature in RAW form whose r starts with 0x30 was rejected. DER detection looked at the first byte alone, so roughly one signature in 256 was decoded as a SEQUENCE, failed, and a perfectly valid signature verified as false. Both detection sites now accept DER only when the structure parses whole. Measured: 3 cases in 600 signatures, all failing before and passing after.
  • PdfPageLabel wrote romanLower as /R and lettersUpper as /a, colliding with the other two styles.
  • PdfCatalog.pageMode is mutable: prepare() rewrites /PageMode from it on every save, so writing the key into the catalog dictionary was discarded.
  • PdfOutline accepts a node without a destination instead of throwing on save, and gained destinationOverride so an imported bookmark keeps its original view instead of being normalized to /Fit.

Editing infrastructure #

First part of doc/roteiro_edicao_pdf.md.

  • PdfObjectStore: indirect reference resolution by (objser, objgen) in O(1), with an optional fallback to the parser. PdfAcroForm and PdfGraphicStream no longer scan document.objects linearly, each with its own rule.
  • PdfObjectConverter: the single core converting the parser's token model to the writing model, with an injectable reference policy. PdfParserObjects.toPdfDataType and the merge importer both delegate to it.
  • PdfBox preserves llx/lly/urx/ury for every page box, and PdfCoordinateTransformer unifies top-left conversions.
  • PdfPageContentEditor (drawOverlay, drawUnderlay, drawStamp) wraps existing content with q before and Q after without touching the original stream, plus PdfBatesNumbering for multi-page numbering.
  • PdfNameTokens absorbed the vocabulary that lived in local constants.

Basic editing #

The phases of doc/roteiro_edicao_pdf.md that the merge foundation made cheap. Text replacement and secure redaction stay out: in the open only MuPDF does both, and doing them halfway would be worse than not having them.

  • PdfDocumentRewriter rewrites a document from scratch instead of appending an incremental update. Only what the object graph reaches survives, so orphan objects and superseded revisions are dropped: 12 assinaturas.pdf goes from 1.55 MB to 226 KB with byte-identical page content. This is the prerequisite for sanitization — it is not redaction: content streams are copied verbatim, so whatever was drawn is still drawn.
  • PdfPageCollectionEditor adds insert, remove, removeRange, move, reorder and duplicate, repairing what points at the pages: explicit and named destinations, outlines (children are promoted into the removed node's slot), internal links, page labels, widgets, /P and /OpenAction. A broken reference follows PdfBrokenReferencePolicy: remove, retarget or throwError, which refuses before touching anything.
  • PdfAnnotationCollection gives a typed view over a loaded page's annotations — read, edit, remove, flatten — materializing the object under the same number so the change lands in the incremental update.
  • PdfFormFlattener flattens form fields by drawing the appearance the document already carries (/AP /N, state picked by /AS), the PDFBox route. It never synthesizes an appearance: a field without /AP is kept and reported, rather than removed with its value silently gone.
  • PdfDocumentProperties reads and writes /Info, XMP, /PageMode, /PageLayout, /Lang, /OpenAction and viewer preferences, on new and loaded documents alike.
  • lib/src/pdf/content/: content stream lexer, parser and writer, plus PdfTextExtractor for positional text. Round-trip is equivalence by reparse, not byte for byte — verified over 183 pages of the test corpus, inline images included. Text replacement is deliberately absent: re-encoding into a subset font, recomputing advances and rewriting /Widths, /W and /ToUnicode is the expensive half.

3.17.4 #

  • Fix MultiPage infinite page-creation loop when a non-spanning widget (e.g. a plain Text with the default TextOverflow.visible) is taller than the space available below the header/footer but still fits within a bare page. Previously the layout kept scheduling empty pages until it hit maxPages, surfacing as a confusing TooManyPagesException (and freezing web apps while thousands of layout attempts ran). It now fails fast on an already-empty page with a clear message pointing to the fix (reduce header/footer height, split the content, or use a SpanningWidget such as Text(..., overflow: TextOverflow.span)).

3.17.3 #

  • Improve validation of legacy PDF signatures using /adbe.pkcs7.sha1 (ISO 32000-1 §12.8.3.3). Document integrity is now verified through both required links: SHA1(ByteRange) == eContent and, when signed attributes are present, messageDigest == SHA1(eContent). This fixes a false "tampered" result for signatures that carry signed attributes and prevents a false "intact" result when the ByteRange and encapsulated digest are altered together. CMS signatures without signed attributes are verified against the encapsulated content, and certificate-expiration diagnostics remain separate from document-integrity failures.
  • Expose /ByteRange coverage per signature via PdfSignatureInfoReport.byteRangeCoverage (new PdfSignatureByteRangeCoverage: startsAtDocumentStart, unsignedTrailingBytes, coversEntireDocument, trailingBytesAreIncrementalUpdate). This surfaces unsigned leading/trailing bytes (shadow-attack surface) without failing legitimate incremental updates such as multi-signature revisions and LTV/DSS additions.

3.17.2 #

  • Fix PDF signature /Contents extraction to trim reserved zero padding by the declared ASN.1/DER element length instead of stripping every trailing 00, preserving valid CMS signatures whose DER payload legitimately ends in zero. Added regression coverage for DER padding and the VISTO 24822 ICP-Brasil PDF.
  • Fix TextStyle.copyWith(font: X) being a silent no-op on styles that already carry a non-null fontNormal (any theme/inherited style): the constructor only routes font into a variant slot when that slot is null, so the new typeface was never applied. copyWith/apply now treat an explicit font as the new fontNormal when fontNormal is not passed. Regression tests in test/text_style_copywith_font_test.dart.
  • Fix TextStyle.apply() dropping fontFallback, lineSpacing and the decoration fields, which violated the inherit || field != null constructor asserts for non-inherited styles (e.g. TextStyle.defaultStyle().apply(...)).
  • Fix link annotations to write the action dictionary with the PDF-standard /A key instead of lowercase /a, preserving clickability in PDF.js and other standards-compliant viewers.
  • Add a regression test covering URI and named-destination link annotations.
  • Known dart2js (Dart SDK 3.6.x) codegen bug — avoid List.unmodifiable in code that runs in the browser: when a List.unmodifiable(...) call (e.g. in a getter) is inlined inside an async method that contains loops and awaits, dart2js release builds (with or without --minify) can emit the store tmp.$flags = 3 on an unassigned temporary and crash at runtime with TypeError: Cannot set properties of undefined (setting '$flags'). The same code works on the VM and DDC, so the failure only shows up in release and looks intermittent. Prefer UnmodifiableListView(...) (a view, no $flags in the generated JS) or capture the list once in a local variable before the loop. A minimal reproduction (crashing/fixed pair runnable under Node) lives in new_sali/backend/resources/bug/.

3.17.1 #

  • Fix SpanningTable pagination so a deferred body row is not painted on the previous page and then repeated on the next page in clip overflow mode.
  • Add repeatHeaderRows to TableHelper.fromTextArray and SpanningTable.fromTextArray to control repeated table header rows.
  • Add /Opt parsing for AcroForm choice fields, including direct string options and export/display option pairs.
  • Remove or reword non-actionable TODO markers from utility code and internal notes that were not related to pending PDF library work.
  • Add a Quill Better Table pagination scenario example with numbered cells to make row clipping or repetition easier to inspect visually.

3.17.0 #

  • Add SpanningTable, a paginatable table widget with header repetition, flexible/fixed/fractional column widths, rowspan, colspan, per-cell padding/alignment, widget cell content, and page continuation context.
  • Add SpanningTableOverflowMode.clip, explicit textDirection, layout caching across pages, and SpanningTable.fromTextArray() for easier migration from text-array tables.
  • Fix signature field metadata extraction from Flate-compressed object streams, including field names and page indexes for widget annotations stored inside /ObjStm objects.
  • Report signed PDFs with invalid /ByteRange values as corrupted instead of aborting validation when signature contents cannot be decoded.

3.16.0 #

  • Signature parsing and metadata reliability improvements:

    • Hardened signature field parsing for incremental-update PDFs, including safer token boundary matching and better field inheritance/page resolution.
    • Improved extraction of signature metadata (fieldName, pageIndex, reason, location, name) when values are stored in indirect signature objects.
    • Refined metadata merge strategy across parser/scanner/revision paths to avoid cross-signature contamination.
  • Prepared-context and parse-cache support for validation workflows:

    • Added PdfSignaturePreparedContext and prepareContext(...) to reuse parsed signature data across preflight/extraction/validation calls.
    • Added optional in-memory parse cache in PdfSignatureValidator and propagated preparedContext through validation APIs, including smart trusted-roots flows.
  • Public Base64 API (VM/Web) and crypto exports:

    • Added new public Base64 helpers (base64EncodeBytes, base64DecodeToBytes, base64EncodeUtf8, base64DecodeUtf8).
    • Introduced dedicated VM and Web implementations with browser-native fast paths and compatible fallbacks.
  • Validation/signing utility updates:

    • Added PdfSignatureTextUtils and reused it in inspector flows for normalized signer-text handling (e.g., CN extraction).
    • Enhanced PEM block decoding with optional lenient mode.
    • Reduced allocations in signature /Contents hex decoding and byte-range digest preparation.
  • Tests, fixtures, and tooling:

    • Added regression tests for signature field/page mapping and per-signature reason isolation.
    • Added Base64 functional tests and VM/Browser benchmark suites.
    • Added signature-check utility script and updated related test/tool calls to the new validator static APIs.

3.15.0 #

  • Refactored PDF signing internals:

    • Extracted shared signature internals (ByteRange, /Contents handling, digest preparation, and CMS embedding) into dedicated utilities.
    • Reduced duplication across external signing and PAdES signing flows.
  • Refactored PDF validation modules:

    • Introduced shared validation helpers for ASN.1 parsing, PDF date handling, normalization/hash helpers, and formatting.
    • Updated validator/inspector/LPA/ITI reporting and trusted-roots logic to use the new common layer.
  • New high-level validation API:

    • Added a dedicated validation API module with helpers for preflight checks, trust-profile-based validation, batch execution, and report-friendly outputs.
    • Exported this API through signing public exports.
  • Crypto and hex utility improvements:

    • Added centralized hex casing utilities and unified encoder/decoder behavior.
    • Added web-native hex fast-path support with compatible fallback implementation.
    • Added a public crypto.dart export entrypoint.
  • Keystore/PKI consistency updates:

    • Extracted reusable binary helpers for keystore integer serialization.
    • Unified certificate serial-to-hex conversion paths in X.509 handling.
  • Tests, fixtures, and benchmarking:

    • Added tests for new signing/validation internals and hex/crypto exports.
    • Added a robustness PDF fixture for invalid-signature scenarios.
    • Added VM vs Web validation benchmark tooling.

3.14.0 #

  • Unified platform crypto (VM/Web):

    • Added a new PlatformCrypto abstraction with pure Dart implementation (platform_crypto_impl.dart) and a Web implementation (platform_crypto_web.dart) using Web Crypto API when available, with local fallback.
    • Added new utilities and exports in lib/src/crypto: signature_adapter.dart, rsa_pkcs1v15.dart, pure_ecdsa.dart, pure_ed25519.dart, openssh_ed25519.dart.
    • Expanded algorithm coverage: digest/HMAC/PBKDF2/HKDF, RSA PKCS#1 v1.5, RSA-PSS, ECDSA, and Ed25519.
  • Modernized PDF/CMS signing:

    • PdfExternalSigner now supports signSignedAttributes() and configurable OIDs (digestAlgorithmOid / signatureAlgorithmOid), reducing RSA-specific coupling.
    • PdfCmsSigner, PdfRsaPrivateKeySigner, and signing flows now use SignatureAdapter.
    • Added pdf_modern_signers.dart with PKCS#8 signers for ECDSA and Ed25519.
    • Expanded PdfSignatureValidator to validate modern flows (including ECDSA/Ed25519) while keeping legacy support.
  • PDF parsing and robustness:

    • PdfQuickInfo was expanded with fast detection for %PDF- header, %%EOF, and /Encrypt.
    • parser_fields.dart and parser_xref.dart were hardened for corrupted/legacy scenarios (robust startxref lookup, larger scan windows, tolerance to invalid values).
    • Added PdfSecurityInspector for fast/asynchronous security inspection (encryption, signatures, corruption, ByteRange, SubFilter, optional hash).
  • Tooling for large/corrupted PDF diagnostics:

    • Added tool/pdf_security_info.dart with a fast path optimized for large files via range reads (RandomAccessReader), xref repair fallback, and options --sha256, --deep-signatures, --validate-signatures.
    • Improved alignment with repair behavior seen in tools like mutool for invalid startxref cases.
  • Cross-platform PKI/Keystore:

    • Added a new pki/io/pki_bytes_source* layer for byte loading on VM, Web, and memory (InMemoryPkiBytesSource).
    • IcpBrasilCertificateLoader now accepts file paths/URLs or in-memory bytes, enabling browser-friendly usage.
    • Refactored JKS/BKS/PKCS#12/PKI builder paths to use unified crypto abstractions (HMAC, SHA, MD5, RNG, signing), removing direct dependence on engine-specific calls in these flows.
    • keystore.dart and pki.dart now export the new IO/loader APIs.
  • Security and internal consistency improvements:

    • documentID generation now uses centralized PdfCrypto with secure random source.
    • Hashing in signature/report modules (pdf_external_signing, pdf_timestamp_client, pdf_iti_report) was unified via PdfCrypto.
  • Tests and coverage:

    • Added new suites for crypto, pki, pdf_security_inspector, and modern signers (ECDSA/Ed25519), including CMS integration with OpenSSL.
    • Added extra ASN.1/DER robustness tests and error-path scenarios in parsing/keystore.
    • Full test run reported as successful (dart test: 681 tests passed).

3.13.0 #

  • Dependency Reduction: Removed dependency on pointycastle by implementing necessary cryptographic primitives locally.

  • New Signing Features: Implemented PAdES signature support (including B-B, B-T) and an external signing interface for A3/Token/HSM integration.

  • Signature Validation: Added a robust validator for checking document integrity, certificate chains, and revocation status (CRL/OCSP).

  • Refactor: Moved PdfEditTools functionality (TopLeft annotation/field positioning) into PdfDocument.

  • AcroForms: Added initial support for reading and modifying AcroForm fields via document.form.

  • AcroForms: Added support for removing XFA data to force standard form rendering.

3.12.0 #

  • Reduce dependencies.
  • Target Dart ^3.6.0.

3.11.4 #

  • Improve performance of table layout [Pieter van Loon]
  • Reduce freezes on web [Kostia Sokolovskyi]
  • creates catalog.names earlier for attached files [ilaurillard]
  • fix: Prevent "Index out of range" error when reading simple glyphs in certain fonts [Eghosa Osayande]
  • Improve PdfRect naming consistency
  • Migrate to vector_math 2.2.0

3.11.3 #

  • Fix CMYK

3.11.2 #

  • Add support for custom fonts in SVGs. [Tyler Denniston]
  • Fix MultiPage.maxPages not checked with release builds
  • Fix PdfColorCmyk.fromRgb
  • Table widget refactors [Graham Smith]
  • Add support for creating PDF/A 3b [ilaurillard]
  • Add helper functions to replace text styles and cell content [Brian Kayfitz]
  • Fix TextStyle merge decoration [AtlasAutocode]
  • Use secure random number generator for document ID generation

3.11.1 #

  • Fixed display problems with textfields [ilaurillard]
  • Tighten dependencies

3.11.0 #

  • Save in an isolate when available
  • NewPage with freeSpace extended [Stefan]

3.10.8 #

  • Add Flutter's Logical Pixel constant
  • Add support for existing reference objects
  • Update barcode golden pdf
  • Add support for hyphenation [ilja]
  • Add an option to disable bidirectional support [Olzhas-Suleimen]
  • Fix operator== type in TextDecoration class
  • Fixed wrong empty line height [janiselfert]
  • Add Support old Arabic method without bidi package [Baghdady92]

3.10.7 #

  • Fix empty lines text gap
  • Fix lookup index of glyph for space character [Hendrik-Brower]

3.10.6 #

  • Update bidi dependency

3.10.5 #

  • Improve TTF writer with multi-compound characters
  • Partially revert underline on spans changes
  • Add RTL support [Milad-Akarie]
  • Fix Arabic fonts missing isolated form [Milad-Akarie]
  • Throw multi page error explicitly [Marcin Jeleński]
  • Fix deprecations

3.10.4 #

  • Fix Deprecation warning message
  • TableHelper data accepts Widgets as child
  • Add RTL support on TableHelper

3.10.3 #

  • Set xml 6.3.0 as minimum dependency

3.10.2 #

  • Fix Type1 font widths
  • Deprecate PdfArrayObject and PdfObjectDict
  • Improve PdfArray and PdfDict constructors
  • Fix underline on spans [RomanIvn]
  • Improve verbose output
  • Allow saving an unmodified document
  • Table cell: dynamic widget [Shahriyar Aghajani]
  • Move Table.fromTextArray to TableHelper.fromTextArray
  • Fix PdfImage constructor without alpha channel [Tomasz Gucio]
  • image.fromBytes() pass bytes offset [Aravindhan K]
  • Update xml dependency and deprecated getter

3.10.1 #

  • Fix web debug build

3.10.0 #

  • Apply BoxShape and BorderRadius to selected Checkbox [Joseph Grabinger]
  • Fix Color.toHex()
  • Improve Annotations placement
  • Improve documentation strings
  • Improve verbose output
  • Import already defined form
  • Add support for deleted objects
  • Draw page content only if not empty
  • Fix Page Content
  • Reorganize data types
  • Improve Documents conformity
  • Make PdfXref a PdfIndirect descendent
  • Move Pdf generation settings to PdfSettings
  • Improve PdfXrefTable output

3.9.0 #

  • Improve TTF Writer compatibility
  • Apply THE BIDIRECTIONAL ALGORITHM using dart_bidi [Milad akarie]
  • Add Inseparable Widget
  • Fix unit tests
  • Update Image dependency
  • Fix lints
  • Add options to customise border in Dataset widget [838]
  • Add Choice Field [Carsten Fregin]
  • Add Flutter 3.7 compatibility

3.8.4 #

  • Improve Multi-Page layout
  • Fix SVG stroke-dasharray parsing
  • Fix PDF Generation in WEB release build [gopisekaran krd]

3.8.3 #

  • Fix Arabic TextAlign.justify issues Set default text align based on text direction [Milad akarie]
  • Bump barcode dependency to 2.2.3

3.8.2 #

  • Fix Compressed Cross-Reference ID
  • Fix exif orientation [deepak786]
  • Remove debug print statements

3.8.1 #

  • Fix large PDF generation on web with compressed xref
  • Fix RangeError Exception When MultiPage Wraps Across Pages [scottdewald]
  • Add headerCellDecoration to Table.fromTextArray [Enrique Cardona]

3.8.0 #

  • Update xml dependency range
  • Implement PointDataSet for Chart
  • Implement PdfPageLabels
  • Typo: rename "litteral" with "literal"
  • Fix tabs and other spaces placeholder
  • Prevent modifying the document once saved
  • Improve Table Of Content

3.7.4 #

  • Fix Bidirectional text (Arabic + Latin words) order and line breakers issue #990 [Milad]

3.7.3 #

  • Fix missing endobj with compressed xref
  • Fix missing smask subtype
  • Add missing final "~>" to Ascii85 encoder
  • Fix typo "horizontalCenter"
  • Add OverflowBox

3.7.2 #

  • Improve debugging information
  • Fix parsing TTF fonts with zero-length glyphs

3.7.1 #

  • Fix missing chars with pdfjs

3.7.0 #

  • Fix imports for Dart 2.15
  • Fix TTF font parser for NewsCycle-Regular.ttf
  • Move files
  • Depreciate Font.stringSize
  • Implement fallback font
  • Implement Emoji support
  • Improve outlines containing non-sequential level increments [Roel Spilker]
  • Add debugging information

3.6.5 #

  • Update dependencies

3.6.4 #

  • Update README

3.6.3 #

  • Fix some Spanning Widgets issues
  • Fix Arabic unit tests

3.6.2 #

  • Fix arabic ranges according to Wikipedia [elibyy]

3.6.1 #

  • Fixes crash when array is empty [Kondamon]
  • Fix arabic word issues [Mohamedfaroouk]

3.6.0 #

  • Fix text justify with multiple paragraphs
  • Apply Flutter 2.5 coding style
  • Prefere unicode FontName

3.5.0 #

  • Add annotations [John Harris]
  • Improve image decoding error messages
  • Fix Exif decoding

3.4.2 #

  • Revert dart format

3.4.1 #

  • Fix Nunito font parsing
  • Allow reusing an ImageProvider and Font on multiple documents

3.4.0 #

  • Fix Text.softWrap behavior
  • Add TableOfContent Widget
  • Add LinearProgressIndicator
  • Add PdfOutline.toString()
  • Add equality operator to PdfPageFormat
  • Improve TextStyle decoration merging
  • Add PdfColor.flatten
  • Add A6 page format
  • Apply Flutter 2.2 format
  • Fix Signature Flags

3.3.0 #

  • Implement To be signed fields
  • Improve Text rendering
  • Add individual cell decoration
  • Improve Bullet Widget
  • Use covariant on SpanningWidget
  • ImageProvider.resolve returns non-null object
  • Fix textScalingFactor with lineSpacing
  • Implement SpanningWidget on RichText
  • Passthrough SpanningWidget on SingleChildWidget and StatelessWidget
  • Improve TextOverflow support
  • Fix Table horizontalInside borders
  • Improve PieChart default colors
  • Implement donnut chart

3.2.0 #

  • Fix documentation
  • Add Positioned.fill()
  • Improve GraphicState
  • Add SVG Color filter
  • Implement Compressed XREF
  • Add support for Metadata XML

3.1.0 #

  • Fix some linting issues
  • Add PdfPage.rotate attribute
  • Add RadialGrid for charts with polar coordinates
  • Add PieChart
  • Fix Text layout with softwrap
  • Fix letterSpacing issue

3.0.1 #

  • Improve internal null-safety

3.0.0 #

  • Fix Checkbox Widget
  • Fix SVG colors with percent
  • Fix TextField Widget
  • Fix border painting with TableRow

3.0.0-nullsafety.1 #

  • Fix Table border
  • Convert BorderStyle to a class
  • Implement dashed Divider

3.0.0-nullsafety.0 #

  • Fix SVG fit alignment
  • Add DecorationSvgImage
  • Opt-In null-safety

2.0.0 #

  • A borderRadius can only be given for a uniform Border
  • Add LayoutWidgetBuilder
  • Add GridPaper widget
  • Improve internal structure
  • Add some asserts on the TtfParser
  • Add document loading
  • Remove deprecated methods
  • Document.save() now returns a Future
  • Add Widget.draw() to paint any widget on a canvas
  • Improve Chart labels
  • Improve BoxBorder correctness
  • Fix Exif parsing with an offset

1.13.0 #

  • Implement different border-radius on all corners
  • Add AcroForm widgets
  • Add document outline support
  • Update analysis options
  • Fix the line cap and joint enums
  • Fix PdfOutlineMode enum
  • Improve API documentation
  • Add support for Icon Fonts (MaterialIcons)
  • Opt-out from dart library
  • Improve graphic operations
  • Automatically calculate Shape() bounding box
  • Improve gradient functions
  • Add blend mode
  • Add soft-mask support
  • Remove dependency to the deprecated utf library
  • Fix RichText.maxLines with multiple TextSpan
  • Fix Exif parsing
  • Add Border and BorderSide objects
  • Add basic support for SVG images

1.12.0 #

  • Add textDirection parameter to PageTheme
  • Fix Bar graph offset
  • Implement vertical bar chart

1.11.2 #

  • Fix Table.fromTextArray vertical alignment

1.11.1 #

  • Fix Table.fromTextArray alignments with multi-lines text
  • Fix parameter type typo in Table.fromTextArray [Uli Prantz]

1.11.0 #

  • Fix mixing Arabic with English [Anas Altair]
  • Support Dagger alif in Arabic [Anas Altair]
  • Support ARABIC TATWEEL [Anas Altair]
  • Update Arabic tests [Anas Altair]
  • Add Directionality Widget

1.10.1 #

  • Fix TTF writer with more than 256 CMAP entries

1.10.0 #

  • Fix dependencies
  • Implement Barcode textPadding and bytes data

1.9.0 #

  • Allow MultiPage to re-layout individual pages with support for flex
  • Implement BoxShadow for rect and circle BoxDecorations
  • Implement TextStyle.letterSpacing
  • Implement Arabic writing support [Anas Altair]

1.8.1 #

  • Fix Wrap break condition
  • Fix drawShape method [Paweł Szot]

1.8.0 #

  • Improve Table.fromTextArray()
  • Add curved LineDataSet Chart
  • Fix PdfColors.fromHex()
  • Update Barcode library to 1.9.0
  • Fix exif orientation crash
  • Fix Spacer Widget

1.7.1 #

  • Fix justified text softWrap issue
  • Set a default color for Dividers
  • Fix InheritedWidget issue with multiple pages

1.7.0 #

  • Implement Linear and Radial gradients in BoxDecoration
  • Fix PdfColors.shade()
  • Add dashed lines to Decoration Widgets
  • Add TableRow decoration
  • Add Chart Widget [Marco Papula]
  • Add Divider and VerticalDivider Widget
  • Replace Theme with ThemeData
  • Implement ImageProvider
  • Improve path operations

1.6.2 #

  • Use the Barcode library to generate QR-Codes
  • Fix Jpeg size detection
  • Update dependency to Barcode 1.8.0
  • Fix graphic state operator

1.6.1 #

  • Fix Image width and height attributes

1.6.0 #

  • Improve Annotations
  • Implement table row vertical alignment
  • Improve Internal data structure
  • Remove deprecated functions
  • Optimize file size
  • Add PdfColor.shade
  • Uniformize examples
  • Fix context painting empty Table
  • Fix Text decoration placements
  • Improve image buffer management
  • Optimize memory footprint
  • Add an exception if a jpeg image is not a supported format
  • Add more image loading functions

1.5.0 #

  • Fix Align debug painting
  • Fix GridView when empty
  • Reorder MultiPage paint operations
  • Fix Bullet widget styling
  • Fix HSV and HSL Color constructors
  • Add PageTheme.copyWith
  • Add more font drawing options
  • Add Opacity Widget
  • Fix Text height with TrueType fonts
  • Convert Flex to a SpanningWidget
  • Add Partitions Widget
  • Fix a TrueType parser issue with some Chinese fonts

1.4.1 #

  • Update dependency to barcode ^1.5.0
  • Update type1 font warning URL
  • Fix Image fit

1.4.0 #

  • Improve BarcodeWidget
  • Fix BarcodeWidget positioning
  • Update dependency to barcode ^1.4.0

1.3.29 #

  • Use Barcode stable API

1.3.28 #

  • Add Barcode Widget
  • Add QrCode Widget

1.3.27 #

  • Add Roll Paper support
  • Implement custom table widths

1.3.26 #

  • Update Analysis options

1.3.25 #

  • Add more warnings on type1 fonts
  • Simplify PdfImage constructor
  • Implement Image orientation
  • Add Exif reader
  • Add support for GreyScale Jpeg
  • Add FullPage widget

1.3.24 #

  • Update Web example
  • Add more color functions
  • Fix Pdf format
  • Fix warning in tests
  • Fix warning in example
  • Format Java code
  • Add optional clipping on Page
  • Add Footer Widget
  • Fix Page orientation
  • Add Ascii85 test

1.3.23 #

  • Implement ListView.builder and ListView.separated

1.3.22 #

  • Fix Text alignment
  • Fix Theme creation

1.3.21 #

  • Add TextDecoration

1.3.20 #

  • Fix Transform.rotateBox
  • Add Watermark widget
  • Add PageTheme

1.3.19 #

  • Fix Ascii85 encoding

1.3.18 #

  • Implement InlineSpan and WidgetSpan
  • Fix Theme.withFont factory
  • Implement InheritedWidget
  • Fix Web dependency
  • Add Web example

1.3.17 #

  • Fix MultiPage with multiple save() calls

1.3.16 #

  • Add better debug painting on Align Widget
  • Fix Transform placement when Alignment and Origin are Null
  • Add Transform.rotateBox constructor
  • Add Wrap Widget

1.3.15 #

  • Fix Image shape inside BoxDecoration

1.3.14 #

  • Add Document ID
  • Add encryption support
  • Increase PDF version to 1.7
  • Add document signature support
  • Default compress output if available

1.3.13 #

  • Do not modify the TTF font streams

1.3.12 #

  • Fix TextStyle constructor

1.3.11 #

  • Update Readme

1.3.10 #

  • Deprecate the document argument in Printing.sharePdf()
  • Add a default value to alpha in PdfColor variants
  • Fix Table Widget
  • Add Flexible and Spacer Widgets

1.3.9 #

  • Fix Transform Widget alignment
  • Fix CustomPaint Widget size
  • Add DecorationImage to BoxDecoration
  • Add default values to ClipRRect

1.3.8 #

  • Add jpeg image loading function
  • Add Theme::copyFrom() method
  • Allow Annotations in TextSpan
  • Add SizedBox Widget
  • Fix RichText Widget word spacing
  • Improve Theme and TextStyle
  • Implement properly RichText.softWrap
  • Set a proper value to context.pagesCount

1.3.7 #

  • Add Pdf Creation date
  • Support 64k glyphs per TTF font

1.3.6 #

  • Fix TTF Font SubSetting

1.3.5 #

  • Add some color functions
  • Remove color constants from PdfColor, use PdfColors
  • Add TTF Font SubSetting
  • Add Unicode support for TTF Fonts
  • Add Circular Progress Indicator

1.3.4 #

  • Add available dimensions for PdfPageFormat
  • Add Document properties
  • Add Page.orientation to force landscape or portrait
  • Improve MultiPage Widget
  • Convert GridView to a SpanningWidget
  • Add all Material Colors
  • Add Hyperlink widgets

1.3.3 #

  • Fix a bug with the RichText Widget
  • Update code to Dart 2.1.0
  • Add Document.save() method

1.3.2 #

  • Fix dart lint warnings
  • Improve font bounds calculation
  • Add RichText Widget
  • Fix MultiPage max-height
  • Add Stack Widget
  • Update Readme

1.3.1 #

  • Fix pana linting notices

1.3.0 #

  • Add a Flutter-like Widget system

1.2.0 #

  • Change license to Apache 2.0
  • Improve PdfRect
  • Add support for CMYK, HSL and HSV colors
  • Implement rounded rect

1.1.1 #

  • Improve PdfPoint and PdfRect
  • Change PdfColor.fromInt to const constructor
  • Fix drawShape Bézier curves
  • Add arcs to SVG drawShape
  • Add default page margins
  • Change license to Apache 2.0

1.1.0 #

  • Rename classes to satisfy Dart conventions
  • Remove useless new and const keywords
  • Mark some internal functions as protected
  • Fix annotations
  • Implement default fonts bounding box
  • Add Bézier Curve primitive
  • Implement drawShape
  • Add support for Jpeg images
  • Fix numeric conversions in graphic operations
  • Add Unicode support for annotations and info block
  • Add Flutter example

1.0.8 #

  • Fix monospace TTF font loading
  • Add PDFPageFormat::toString

1.0.7 #

  • Use lowercase page dimension constants

1.0.6 #

  • Fix TTF font name lookup

1.0.5 #

  • Remove dependency to dart:io
  • Add Contributing

1.0.4 #

  • Updated homepage
  • Update source formatting
  • Update README

1.0.3 #

  • Remove dependency to ttf_parser

1.0.2 #

  • Update SDK support for 2.0.0

1.0.1 #

  • Add example
  • Lower vector_math dependency version
  • Uses better page format object

1.0.0 #

  • Initial version
0
likes
0
points
65
downloads

Publisher

unverified uploader

Weekly Downloads

Pdf creation library for dart

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

archive, image, meta

More

Packages that depend on pdf_plus