Skip to content

Bump QuestPDF from 2025.4.0 to 2026.9.1 - #16

Closed
dependabot[bot] wants to merge 1 commit into
masterfrom
dependabot/nuget/QuestPDF-2026.9.1
Closed

dependabot[bot] wants to merge 1 commit into
masterfrom
dependabot/nuget/QuestPDF-2026.9.1

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Oct 28, 2026 •

Copy link
Copy Markdown
Contributor

Updated QuestPDF from 2025.4.0 to 2026.9.1.

Release notes

Sourced from QuestPDF's releases.

2026.9.1

  • Updated Skia to m154.
  • Updated qpdf to 12.4.1.
  • Fixed an issue where garbage collection could corrupt PDF tag attributes during concurrent PDF generation (found and fixed by @​Lurtz7 in Keep PDF/UA attribute strings alive until the document is closed (fixes stale-pointer corruption and crashes in document_close) QuestPDF/QuestPDF#1483),
  • Improved PDF/UA-1 compatibility when generating ZUGFeRD and Factur-X invoices.
  • Fixed an issue in the DocumentOperation API where DocumentAttachmentRelationship.Supplement was incorrectly mapped to /Alternative.
  • Improved handling of stream-writing exceptions during PDF generation.
  • The ShowInCompanion API now automatically starts the Companion App if it is not already running (requires Companion App 2026.9.0 or newer).
  • Improved exception messages related to Settings.ThrowOnMissingFontFamilies, Settings.ThrowOnMissingTextGlyphs, and Settings.UseSystemFonts.
  • Reduced connection time to the Companion App on Windows.
  • Added missing license files for dependencies.

2026.9.0

This release is dedicated to text handling improvements

QuestPDF 2026.9.0 improves font management to make document rendering more predictable across development machines, CI, containers, and cloud environments.

Fonts installed on the operating system vary between machines. A document that looks correct during development may use different fallback fonts, display placeholder glyphs, or lose text after deployment. To help catch these problems before a PDF reaches its recipient, QuestPDF now excludes system fonts by default and validates font availability and glyph coverage during document generation.

Upgrading to 2026.9.0

Deploy the required font files with your application and reference them by the family names stored in those files. Fonts in the application directory are registered automatically; you can also register them explicitly through FontManager. Use FontManager.GetRegisteredFonts() to inspect the available family names.

Please compare previous settings with the new defaults:

// previous behavior:
QuestPDF.Settings.UseSystemFonts = true;
QuestPDF.Settings.ThrowOnMissingFontFamilies = false;
QuestPDF.Settings.ThrowOnMissingTextGlyphs = false;
QuestPDF.Settings.EnableDetailedLayoutErrors = false;

// current behavior:
QuestPDF.Settings.UseSystemFonts = false;
QuestPDF.Settings.ThrowOnMissingFontFamilies = true;
QuestPDF.Settings.ThrowOnMissingTextGlyphs = true;
QuestPDF.Settings.EnableDetailedLayoutErrors = true;

Also review the deployment and API changes below. Renamed APIs remain available under their previous names, marked as obsolete with compiler warnings.

Covering additional languages

QuestPDF includes the bundled Lato font, which covers Latin, Greek, and Cyrillic scripts. For other scripts, such as Chinese, Japanese, Korean, Arabic, Hebrew, Thai, or emoji, we recommend additionally deploying the free, open-source Google Noto font family, registering it with FontManager, and configuring it as a font fallback in the default text style of the document.

// at application startup
FontManager.RegisterFontsFromDirectory("Fonts/Noto");

// in the document
Document.Create(document => 
{
    document.Page(page => 
    {
        page.DefaultTextStyle(style => style.FontFamily("Lato", "Noto Sans", "Noto Sans CJK SC", "Noto Emoji"));
    });
});

⚠️ Breaking changes

... (truncated)

2026.8.0

🚀 This release is dedicated to performance, parallelism, and use of available resources. 🚀

Documents render faster, allocate a fraction of the memory they used to, and scale across all available CPU cores. No code changes are required — existing documents benefit simply by upgrading the package.

The numbers below were measured on a MacBook Pro M5 (18-core CPU), using the invoice document from the Getting Started tutorial, across various levels of parallelism, over a sample of 5,000 documents.

  • Reduced allocated memory amount and allocated object count by 85%.
  • Improved single-threaded performance by around 15%.
  • Substantially improved parallel scaling: throughput previously peaked at 4 threads and flattened beyond that, and now scales with available CPU cores — with around 4x better scaling.
  • Improved performance and scalability for text-heavy documents.
  • Improved cache usage (mainly for fonts) and significantly reduced locking.

✨ Other improvements:

  • Added support for soft hyphens: the library does not hyphenate text automatically, but soft hyphen characters (U+00AD) are now correctly interpreted as optional break points and rendered as hyphens when a line breaks.
  • Added the TextStyle.BreakAnywhere API, which allows a text span to break between any two characters, not only at word boundaries such as spaces or hyphens. Useful for content without natural break points, e.g. long URLs, identifiers, hashes, or file paths.
  • Improved the visual position of the underline and double underline text decorations.
  • Improved reliability of the Companion App integration: document previews are now refreshed from a consistent snapshot, and rendered pages are transferred more efficiently.
  • Increased the zlib compression level used for PDF generation from 1 to 3, which produces significantly smaller files (for text-heavy documents) with a minimal increase in generation time.
  • Updated the Skia native dependency to version m152.

⚠️ Breaking change

XPS generation has been removed. The format was supported only on Windows, had several rendering issues that could not be reliably resolved, and had negligible adoption. The GenerateXps and GenerateXpsAndShow methods are still present, but calling them now results in a compilation error, and code compiled against an earlier version throws an exception at runtime. Please use PDF generation instead.

2026.7.3

  • Breaking change: The Rotate API now rotates elements around their center instead of the top-left corner. Center-origin rotation is the expected behavior in virtually all use cases.
  • Behavioral change: Generated images now use a white background by default, so the output matches how the document appears in a PDF viewer. Previously, PNG and WEBP images had a transparent background. To restore the old behavior, enable ImageGenerationSettings.UseTransparentBackground (applies only to formats supporting transparency: PNG and WEBP).
  • Automated table semantic tagging is now applied whenever a Table element is placed inside a SemanticTable container, even indirectly. Nested semantic captions are now supported as well.
  • Image elements now emit the /BBox attribute, improving PDF/UA-1 compliance with validators that require it.
  • Improved the stability and speed of the QuestPDF Companion integration. The integration now requires .NET 8 or newer.
  • Improved the developer experience of the GeneratePdfAndShow and GenerateXpsAndShow methods.
  • Deprecated AsSemanticHorizontalHeader in favor of SemanticHorizontalHeader for API naming consistency.
  • Deprecated RotateLeft and RotateRight in favor of RotateLayoutCounterclockwise and RotateLayoutClockwise, which better describe what these methods do.

2026.7.2

  • Fixed a rare Windows x64 concurrency issue where generated PDF documents appeared correct in viewers, but selected and copied text was corrupted.
  • Improved text rendering representation to resolve rare compatibility issues in certain PDF viewers that could cause incorrect results when selecting or copying text.
  • Improved compatibility for complex glyphs, such as ligatures, by annotating them with the /ActualText tag. This improves text selection, copying, extraction, and screen-reader accessibility. Ligatures remain disabled by default.
  • Added support for the AllowModification permission in DocumentOperations when encrypting PDF documents with 128-bit or 256-bit keys.
  • Added minor fixes and expanded test coverage for the DocumentOperations API.

2026.7.1

Improved performance

PDF generation is now significantly faster. The Skia native dependency has been recompiled with speed-oriented optimizations (favoring performance over binary size) and with SIMD instructions enabled.

The impact depends on document content and platform. For example, generating image-heavy documents that require image rescaling can be several times faster on Windows x64 🎉

Note: this change slightly increases the size of the native dependency by around 20%.


Continuous performance monitoring

We have also built a solid foundation for measuring library performance going forward. A new GitHub Actions workflow benchmarks QuestPDF across all supported operating systems, processor architectures, and .NET releases.

This infrastructure helps us ensure that performance remains stable and consistent across all platforms, and allows us to detect regressions early — before they ever reach a release.

2026.7.0

  • Updated licensing terms and conditions to version 3.0, including the removal of the developer seat limit for all paid licenses (details: https://www.questpdf.com/pricing).
  • Added full support for .NET Native AOT and trimming.
  • Added and improved warning messages related to library configuration.
  • Fixed a rare rendering issue where the footer was placed incorrectly when the page content was empty.

2026.6.1

  • Updated the Skia native dependency to M150.
  • Improved text rendering stability when handling an excessive number of whitespace characters.
  • Improved the failure message shown when the library runs on an unsupported platform (e.g., Android, iOS, or WASM).
  • Improved platform compatibility checks and introduced more advanced fallback mechanisms.
  • Improved diagnostics for missing font glyph exceptions.
  • Improved PDF output consistency of section links by avoiding name escaping and removing unnecessary documentId prefix.
  • Made the Image.Size property public.

2026.6.0

  • Substantially revised the QuestPDF legal documents to better support enterprise procurement and compliance requirements and to define usage terms more clearly.
  • Introduced native support for Windows ARM64 (win-arm64) environments.
  • Improved compatibility with older Linux distributions (glibc 2.28 and newer).
  • Reduced the NuGet package size by optimizing native dependencies.
  • Renamed the TranslateX / TranslateY methods to OffsetX / OffsetY to improve discoverability.
  • SVG rendering improvements:
    • Prevented zero-width strokes from being rendered as hairlines, aligning behavior with the SVG specification.
    • Added support for embedded Base64 images that use the modern href attribute instead of xlink:href.
    • Added support for the #RGBA and #RRGGBBAA color formats.
    • Added support for the transparent named color.
  • Fixed PDF bookmark titles so they include only text from the associated paragraph, excluding the alternative text of images.
  • Fixed SectionLink behaving incorrectly when target Section is placed in page header.
  • Updated the Skia native dependency to version m149.
  • Updated the qpdf native dependency to version 12.3.2.
  • Modernized the build system for native dependencies, including how QuestPDF-specific patches are applied.
  • Updated all GitHub Actions workflows to use standard runners, reducing costs and making it easier for everyone to contribute to the project.

2026.5.0

  • Fixed a bug where Table elements with RowSpan could render incorrectly or break when spanning across pages.
  • Fixed visual rendering artifacts that could appear in complex or very large paragraphs.
  • Improved error message when native dependency versions are mismatched — the error now includes step-by-step guidance for updating manually copied native files.
  • Updated the underlying Skia native dependency to version m146.

2026.2.4

  • Fixed a bug where using Page.MinSize() or Page.MaxSize() could produce unexpected results
  • Added more helpful validation messages for minimum and maximum size constraints in the Constrained element
  • Improved the welcome message with a clearer explanation of the library license

2026.2.3

  • Fixed visual regression when rendering complex borders

2026.2.2

  • Updated the Skia native dependency to improve compatibility with the win-x86 runtime

2026.2.1

  • Fixed an issue where the DocumentOperation API could throw an exception when a warning occurs
  • Improved error handling in DocumentOperation by including file paths in exception messages

2026.2.0

  • Updated the Skia native dependency to the m144 version.

2025.12.4

  • Enhanced layout debugging algorithms for more accurate error detection.
  • Improved representation of layout root causes in the Companion app.
  • Fixed SVG image scaling when the viewBox attribute is not specified.
  • Fixed SVG incorrect scaling of images that use percentage units.

2025.12.3

  • Improved handling of semantic structure and artifact context, resolving rare edge cases
  • Fixed an issue where element selection could appear blurry in the QuestPDF Companion App

2025.12.2

Fixes:

  • Fixed semantic structure handling in the Dynamic element
  • Fixed semantic structure handling in the Lazy element

Improvements:

  • Updated package icon
  • Updated NuGet package metadata (readme and description)
  • Revised welcome message to clarify licensing options and improve guidance
  • Updated third-party license attributions (removed ICU, added libgrapheme)

2025.12.1

  • Fixed an issue where merged documents rendered incorrectly for the second and subsequent documents.
  • Fixed an issue where the Table layout could fail to render all items in certain row-span scenarios.
  • Fixed semantic tagging in advanced layouts (e.g., MultiColumn) and refactored canvas-related code.

2025.12.0

Features:

  • Added support for the .NET 10 SDK.
  • Added support for semantic tagging.
  • Added support for bookmarks via header-level semantic tags.
  • Added support for the following conformance standards: PDF/A-2b, PDF/A-2u, PDF/A-2a, PDF/A-3b, PDF/A-3u, PDF/A-3a, and PDF/UA-1.

Future-proofing:

  • Introduced automated standard conformance testing using veraPDF.
  • Introduced automated ZUGFeRD conformance testing using Mustang.

Bug fixes:

  • Fixed a bug where row-span calculation logic in the Table component could cause infinite document generation.
  • Fixed an issue where Dynamic components rendered incorrect content when placed inside a MultiColumn layout.
  • Fixed missing input parameter validation for Hyperlink, Section, and SectionLink methods.
  • Fixed an issue where Hyperlinks in the page footer broke accessibility conformance.

Maintenance:

  • Updated the Skia native dependency to version m142.
  • Increased test coverage and test quality.
  • General code cleanup.

2025.12.0-alpha4

  • Simplified the Fluent API.
  • Made minor semantic adjustments.
  • Added a conformance test suite based on the Mustang project (for ZUGFeRD).
  • Performed code refactoring and cleanup.

2025.12.0-alpha3

  • Ported all changes from the 2025.7.3 release.
  • Updated the Skia native dependency to version m142.
  • Added experimental support for the following conformance standards: PDF/A-1a and PDF/A-1b.
  • Improved automated tagging, which is now enabled only when a relevant conformance standard is active.
  • Created a conformance test suite based on the VeraPDF project.

2025.12.0-alpha2

  • Added semantic auto-tagging for paragraphs.
  • Enhanced auto-tagging feature for tables by supporting more complex cases where cells are spanning multiple rows or columns.
  • Adjusted semantic meaning of MultiColumn spacer to be an artifact.
  • Adjusted semantic meaning of contents that repeats on pages by marking the first occurrence as content, and repetitions as artifacts. This change applies to the Repeat, Decoration and Page Header/Footer elements.
  • Fixed semantic handling of background and watermark page layers.
  • Fixed adding content to the semantic tag tree if it is part of the artifact.
  • Improved visual representation of SemanticTags and ArtifactTags in the Companion App.

2025.12.0-alpha1

  • Ported all changes from the 2025.7.2 release.
  • Added support for the following conformance standards: PDF/A-2b, PDF/A-2u, PDF/A-2a, PDF/A-3b, PDF/A-3u, PDF/A-3a, and PDF/UA-1.
  • Improved the semantic structure of links (both external hyperlinks and internal links to named destinations) for better compatibility with PDF/UA-1.
  • Corrected semantic tagging of decorative elements such as shadows, backgrounds, borders, and lines by marking them as artifacts.
  • Enhanced the semantic structure and accessibility of simple tables (without cells spanning multiple rows or columns) by automatically tagging header cells.
  • Introduced support for horizontal headers to further improve the semantic structure and accessibility of simple tables.

2025.12.0-alpha0

We’re excited to share that this release adds initial support for semantic tagging and bookmarks! 🎉

For more details on both features, please see: QuestPDF/QuestPDF#1177

2025.7.4

  • Fixed the DocumentOperation.ExtendMetadata operation to preserve /Metadata tag attributes (/Subtype /XML) and improve compatibility with the Mustang validation tool for ZUGFeRD files.

2025.7.3

  • Fixed an issue that caused the PDF generation process to fail when the application lacked file access permissions to the default temporary folder.
  • Added support for specifying a custom temporary storage path through the QuestPDF.Settings.TemporaryStoragePath property.

2025.7.2

  • Disabled standard ligatures by default, as they often interfere with text copying and may pose accessibility issues,
  • Performance has been improved when generating multiple text-heavy documents at the same time. The more concurrent operations and text elements involved, the more noticeable the benefit,
  • Improved the developer experience by updating the behavior of the GeneratePdfAndShow method to always create a uniquely named file. It ensures that certain PDF viewers automatically refresh the preview,
  • Fixed exception triggered when generating a PDF without defining a Page in the Fluent API,
  • Increased test coverage,
  • Minor bug fixes and improvements.

2025.7.1

  • Fixed a significant memory leak in document operations involving overlay or underlay,
  • Fixed a minor memory leak in general document operations (e.g., merge, save with password),
  • Updated the Skia dependency to M140,
  • Removed unnecessary dependencies on Linux and macOS (OpenSSL, libjpeg-turbo) to improve compatibility across more platforms.

2025.7.0

  • Line element: Added gradient and dashed pattern support
  • Background element: Added linear gradient (multiple colors, arbitrary angle) and rounded corners
  • Border element: Added linear gradient (multiple colors, arbitrary angle), rounded corners, and alignment options (inside, outside, center)
  • Shadow element (new): Added blur, color, offset, and spread support
  • Internal: Introduced visual snapshot testing for the generation process
  • Updated Skia dependency to M138

2025.6.0-rc0

  • Line element: Added gradient and dashed pattern support
  • Background element: Added linear gradient (multiple colors, arbitrary angle) and rounded corners
  • Border element: Added linear gradient (multiple colors, arbitrary angle), rounded corners, and alignment options (inside, outside, center)
  • Shadow element (new): Added blur, color, offset, and spread support
  • Internal: Introduced visual snapshot testing for the generation process

2025.5.1

  • Reduced peak memory usage when generating PDF files by properly implementing a stream-based API,
  • Fixed the exception message displayed when the library cannot successfully parse the provided text as a color.

2025.5.0

  • Feature: Added the CaptureContentPosition API, allowing developers to inspect the exact position and size of arbitrary content. This enables the generation of dynamic, related content within the DynamicComponent, enhancing flexibility for complex layout requirements.
  • Enhancement: Changed the default page background color from white to transparent, which reduces developer confusion during document operations such as content overlaying. Only JPEG images are rendered with a white background.
  • Fix: ShowIfContext.TotalPages is now set to null during the initial rendering phase to avoid confusion when using the ShowIf API.
  • Fix: Improved memory management in the Companion App workflow by immediately disposing of native resources.

2025.4.4

Updated native dependencies:

  • Skia updated to version m137
  • Qpdf updated to version 12.2.0
  • OpenSSL updated to version 3.5.0

2025.4.2

  • Updated the Skia library to version m136,
  • Updated the NuGet package README,
  • Added DocumentOperation.Decrypt featre to remove encryption from PDF documents,
  • Added DocumentOperation.RemoveRestrictions feature,
  • Improved availability of native resources on the legacy .NET Framework,
  • Fixed compatibility with Unity3D on Linux and macOS builds,
  • Fixed encryption of PDF files with 40-bit keys,
  • Fixed encryption of PDF files with 128-bit keys.

Commits viewable in compare view.

@dependabot dependabot Bot added .NET Pull requests that update .NET code dependencies Pull requests that update a dependency file labels Oct 28, 2026
@punkouter27

Copy link
Copy Markdown
Owner

@dependabot rebase

@dependabot
dependabot Bot force-pushed the dependabot/nuget/QuestPDF-2026.9.1 branch from cf6f0de to c8ada37 Compare October 29, 2026 00:52
---
updated-dependencies:
- dependency-name: QuestPDF
  dependency-version: 2026.9.1
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot
dependabot Bot force-pushed the dependabot/nuget/QuestPDF-2026.9.1 branch from c8ada37 to 1fe80b2 Compare October 31, 2026 21:30
@dependabot @github

dependabot Bot commented on behalf of github Oct 31, 2026

Copy link
Copy Markdown
Contributor Author

Superseded by #17.

@dependabot dependabot Bot closed this Oct 31, 2026
@dependabot
dependabot Bot deleted the dependabot/nuget/QuestPDF-2026.9.1 branch October 31, 2026 21:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file .NET Pull requests that update .NET code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant