TheBetterPdfViewer.MAUI 1.6.2

dotnet add package TheBetterPdfViewer.MAUI --version 1.6.2
                    
NuGet\Install-Package TheBetterPdfViewer.MAUI -Version 1.6.2
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="TheBetterPdfViewer.MAUI" Version="1.6.2" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="TheBetterPdfViewer.MAUI" Version="1.6.2" />
                    
Directory.Packages.props
<PackageReference Include="TheBetterPdfViewer.MAUI" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add TheBetterPdfViewer.MAUI --version 1.6.2
                    
#r "nuget: TheBetterPdfViewer.MAUI, 1.6.2"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package TheBetterPdfViewer.MAUI@1.6.2
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=TheBetterPdfViewer.MAUI&version=1.6.2
                    
Install as a Cake Addin
#tool nuget:?package=TheBetterPdfViewer.MAUI&version=1.6.2
                    
Install as a Cake Tool

TheBetterPdfViewer.MAUI

A .NET MAUI PDF viewer control with native rendering and embedded-video playback.

Features

  • Annotations (highlight, ink, sticky notes, free text, signatures)
  • User bookmarks + document outline navigation
  • Form fields (text, checkbox, radio, signature) with XFDF export
  • Save an annotated copySaveDocumentAsync(path) flattens annotations, signatures and form-field ink into the pages. The result matches what the viewer displayed, and matches across devices: a file saved on Android and one saved on an iPad look the same. Form values, links, embedded video and the outline are preserved. Use ExportAnnotationsAsync instead if you need the marks to stay editable.
  • Text search and selection
  • Embedded video detection + playback — surfaces /Movie, /Screen, /RichMedia, and /FileAttachment annotations as well as document-level /Names /EmbeddedFiles entries. Set EnableInPageVideoOverlay="True" to mount tap-to-play ▶ buttons over each video's annotation rect on visible pages.
  • Zoom controls — zoom in / out / reset buttons in the built-in toolbar on all platforms, alongside pinch-to-zoom. Bounds are configurable via MinZoomFactor and MaxZoomFactor; ResetZoom() returns to fit-page (SinglePage) or fit-width (Continuous). On iOS, MacCatalyst, and Android, the toolbar scrolls horizontally on narrow screens so every control stays reachable.

Platforms

  • iOS 15+ (PDFKit + CoreGraphics CGPDFDocument; PDFium for saving)
  • MacCatalyst 15+ (PDFKit + CoreGraphics CGPDFDocument; PDFium for saving)
  • Android 33+ (PDFium)
  • Windows (PDFium)

Annotations are drawn by one shared SkiaSharp painter on every platform, so they render identically wherever they are shown or saved.

Embedded video usage

// MauiProgram.cs - this also registers CommunityToolkit.Maui.MediaElement.
builder.UseTheBetterPdfViewer();
// XAML / code-behind
viewer.EmbeddedVideosChanged += (s, e) =>
{
    foreach (var video in e.Videos)
        Console.WriteLine($"p.{video.PageNumber} {video.AnnotationKind} {video.FileName}");
};

// Option 1: open a video at the user's request via the modal player.
await viewer.PlayEmbeddedVideoAsync(viewer.EmbeddedVideos[0]);

// Option 2: let the viewer overlay tappable ▶ buttons over each video
// annotation. Tapping a button opens the same modal player.
viewer.EnableInPageVideoOverlay = true;

License

MIT

1.6.2 notes

Fixes iOS App Store validation. 1.6.0 shipped PDFium as a loose dylib, which Apple rejects (error 90171); 1.6.1 wrapped it in a framework whose declared minimum OS did not match its binary, which Apple also rejects (ITMS-90208). 1.6.2 ships a signed pdfium.xcframework retargeted to iOS 15.0 with matching metadata. Do not use 1.6.0 or 1.6.1 for iOS — both fail upload.

Regenerate it with build/make-pdfium-xcframework.sh after a PDFium bump.

1.6.0 notes

Saving. SaveDocumentAsync(Stream) and SaveDocumentAsync(string) write a copy with annotations flattened in; the source file is never modified. The flattened marks are not editable annotations in the saved file — that is the trade that makes the file match the screen.

One exception, iOS and macCatalyst only: a document that has form fields loses its embedded video when saved. Live form values exist inside PDFKit's widgets and nowhere else, so those documents must be serialized by PDFKit, and that serializer drops embedded media. Documents without form fields are read from the original file and keep everything. Android and Windows are never affected.

Cross-device rendering, measured. Annotating the same document on an Android tablet and an iPhone simulator and diffing the two saved PDFs: highlights, ink, notes and signatures come out pixel-identical. Text annotations do not quite — glyph-edge antialiasing differs, 2,165 pixels of a 1600x900 render (0.15%), entirely inside the text's own bounding box and indistinguishable side by side at 4x magnification. It is not hinting or edging settings, and not the glyph rasterizer (drawing glyphs as filled outlines instead changed almost nothing); the likeliest cause is a sub-pixel baseline difference from font metrics. If you need text bit-identical too, that is where to look.

Behaviour change: annotation anchors. Note and text annotations now anchor consistently across platforms — NoteX/NoteY is the top-left corner for both. Annotations persisted by an earlier version will shift the first time 1.6.0 displays them: notes on iOS and macCatalyst, text on Android. This is a one-time correction and nothing needs migrating.

Fixed, Windows only: ink drew at half the requested width, the note icon was fixed at 16 device pixels and never scaled with zoom, and signatures ignored the chosen colour in favour of hardcoded dark blue. Text annotations were XAML overlays above the page image, so they never appeared in exported or bitmap output at all.

Fixed, iOS and macCatalyst: a large ink stroke's bounding box no longer swallows taps on links drawn inside it.

Product Compatible and additional computed target framework versions.
.NET net10.0-android36.0 is compatible.  net10.0-ios26.0 is compatible.  net10.0-maccatalyst26.0 is compatible.  net10.0-windows10.0.19041 is compatible. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.6.2 95 8/22/2026
1.6.1 86 8/21/2026
1.5.1 93 8/19/2026
1.5.0 86 8/19/2026
1.4.7 126 7/22/2026
1.4.6 110 7/17/2026
1.4.5 103 7/17/2026
1.4.4 106 7/16/2026
1.4.3 98 7/13/2026
1.4.2 99 7/13/2026
1.4.1 116 7/10/2026
1.4.0 146 5/28/2026
1.3.0 123 5/8/2026
1.1.9 128 4/29/2026
1.1.8 130 4/27/2026
1.1.7 126 4/24/2026
1.1.6 132 4/15/2026
1.1.5 133 3/31/2026
1.1.4 225 3/28/2026
Loading failed