Repository navigation
FreePDF 7.9.0
FreePDF 7.9.0
FreePDF 7.9.0 draws the barcodes invoices, labels and tickets need (QR, Data
Matrix, Code 128, EAN and UPC) as vector shapes, renders MigraDoc barcode
elements, and creates fillable form fields, so the whole form cycle is covered:
create, fill, flatten, merge, sign and certify.
Packages
io7.FreePDFhttps://www.nuget.org/packages/io7.FreePDF/7.9.0io7.FreePDF.Layouthttps://www.nuget.org/packages/io7.FreePDF.Layout/7.9.0io7.FreePDF.Gdihttps://www.nuget.org/packages/io7.FreePDF.Gdi/7.9.0io7.FreePDF.Layout.Gdihttps://www.nuget.org/packages/io7.FreePDF.Layout.Gdi/7.9.0io7.FreePDF.Wpfhttps://www.nuget.org/packages/io7.FreePDF.Wpf/7.9.0io7.FreePDF.Layout.Wpfhttps://www.nuget.org/packages/io7.FreePDF.Layout.Wpf/7.9.0
dotnet add package io7.FreePDF --version 7.9.0
dotnet add package io7.FreePDF.Layout --version 7.9.0
New
- Barcodes as vectors.
CodeQR: QR model 2, versions 1 to 40, levels L/M/Q/H, smallest version
chosen to fit, UTF-8 with ECI 26 for text that is not ASCII, one path.CodeDataMatrix: a new ECC 200 encoder written from ISO/IEC 16022, all 30
sizes, ASCII and Base256, ECI and GS1 FNC1, vector modules in every build.Code128with shortest code-set choice and GS1-128 (Code128.Fnc1);
Ean13,Ean8andUpcAwith check digits and guard bars.
- MigraDoc renders barcodes.
Barcodeelements were silently left out of the
PDF; they now draw 2 of 5, Code 39, Code 128, EAN-13, EAN-8, UPC-A, QR and Data
Matrix, withAddBarcode()on sections, cells, text frames, headers and
footers. - Creating form fields.
PdfForm.AddTextField,AddCheckBox,
AddRadioButtonGroup,AddComboBox,AddListBoxandAddSignatureField,
styled withPdfFormFieldStyle, with appearances every viewer shows. - Certifying a document.
DigitalSignatureOptions.Certificationwrites a
certification signature (DocMDP) permitting no changes, form filling, or form
filling and comments; Append mode enforces it. Signature fields whose seed
value names the signature type (/MDP) can now be signed.
Fixed
- Text beyond U+FFFF (emoji, mathematical letters) is extracted correctly; large
ToUnicode maps are split into sections of at most 100. - MigraDoc: default tab stops reach the right edge of the text, and a blank after
a tab no longer breaks the line. - Data Matrix: the inherited encoder drew nothing in the Core build, lost
characters in C40, Text and X12, and wrote unreadable EDIFACT. It appears to
derive from the GPL-licensed iec16022 library and carried no notice of that
origin, so it is removed and replaced (seePROVENANCE.md). - 1-, 2- and 4-bit grayscale and 2-bit palette PNGs load in the Core build.
DigitalSignatureOptions.ContactInfois written; Code 39 refuses an
apostrophe; DDL escapes barcode codes.
Upgrading from 7.8.0
Update all FreePDF packages to 7.9.0 together and rebuild; the assembly version
is now 7.9.0.0. The public API only gains members. Behaviour changes to check:
- MigraDoc documents with
Barcodeelements now draw them: an invalid code makes
rendering throw, and withTaggedPdfa barcode needsAlternativeTextor
Decorative. - Data Matrix C40, Text, X12 and EDIFACT requests are written in ASCII
encodation, so a fixed size can now be too small. - A signature field with a seed value /MDP is signed when
Certification
matches it and refused with anArgumentExceptionwhen it does not. - MigraDoc lines with tabs near the right edge, or a blank after a tab, can be
laid out differently.
Validation
All 7.8.0 release gates apply, plus:
- 124 new regression tests, 962 in all.
- zxing-cpp, as an external decoder only, read 1,004 QR symbols (every version,
level and mode at full capacity), 212 Data Matrix symbols (all 30 sizes), the
linear codes and MigraDoc barcodes; a strict checker written from ISO/IEC 16022
passed 305 Data Matrix symbols. - MuPDF and pypdf read every created field in new, filled and reopened files.
pyHanko 0.6.0 judged certifications at levels 1 to 3 VALID, and filling text
fields, check boxes and combo boxes after levels 2 and 3 permitted. Its
default policy rejects selecting a radio button after a certification, also
when pypdf writes the same minimal update; the support policy lists it. - Independent reviews (two rounds for barcodes, one each for forms and the text
fixes) found issues, including a regression in a tab fix, which were fixed
before release. - A clean install from nuget.org, with an empty package cache: zxing-cpp decodes
every code drawn withXGraphics(QR in ASCII and UTF-8, Data Matrix square and
rectangular, Code 128, GS1-128, EAN-13, EAN-8, UPC-A) and every MigraDoc barcode
(QR, Data Matrix, EAN-13, Code 128 in a table cell); a form with every field
type, certified at levels 1, 2 and 3, is VALID in pyHanko, filling a check box
and a combo box afterwards stays VALID at levels 2 and 3, and level 1 refuses the
fill; poppler extracts emoji drawn with DejaVu Sans; a center tab in a justified
MigraDoc line keeps its gap. The same check passed on the CI packages before
publication.
See the release notes in docs/releases/7.9.0.md and the support policy.
The attached packages are the verified CI artifacts from source revision b65e9859bbd8303cbb34f351f2a17cb4dc629058, and the same files that were
uploaded to NuGet.org. SHA256SUMS and validation.json record their hashes and package-install evidence.
NuGet.org adds its repository signature, so a package downloaded from NuGet.org has a different hash from the attached file.
CI: https://github.com/io7/FreePDF/actions/runs/42854130454 (core),
https://github.com/io7/FreePDF/actions/runs/42854129991 (packages/API/independent checks),
https://github.com/io7/FreePDF/actions/runs/42854129600 (comparisons),
https://github.com/io7/FreePDF/actions/runs/42856275483 (NuGet publication).