TheBetterPdfViewer.MAUI
1.6.2
dotnet add package TheBetterPdfViewer.MAUI --version 1.6.2
NuGet\Install-Package TheBetterPdfViewer.MAUI -Version 1.6.2
<PackageReference Include="TheBetterPdfViewer.MAUI" Version="1.6.2" />
<PackageVersion Include="TheBetterPdfViewer.MAUI" Version="1.6.2" />
<PackageReference Include="TheBetterPdfViewer.MAUI" />
paket add TheBetterPdfViewer.MAUI --version 1.6.2
#r "nuget: TheBetterPdfViewer.MAUI, 1.6.2"
#:package TheBetterPdfViewer.MAUI@1.6.2
#addin nuget:?package=TheBetterPdfViewer.MAUI&version=1.6.2
#tool nuget:?package=TheBetterPdfViewer.MAUI&version=1.6.2
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 copy —
SaveDocumentAsync(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. UseExportAnnotationsAsyncinstead if you need the marks to stay editable. - Text search and selection
- Embedded video detection + playback — surfaces
/Movie,/Screen,/RichMedia, and/FileAttachmentannotations as well as document-level/Names /EmbeddedFilesentries. SetEnableInPageVideoOverlay="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
MinZoomFactorandMaxZoomFactor;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 | Versions 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. |
-
net10.0-android36.0
- bblanchon.PDFium.Android (>= 146.0.7678)
- CommunityToolkit.Maui.MediaElement (>= 8.0.0)
- Microsoft.Maui.Controls (>= 10.0.40)
- PdfPig (>= 0.1.10)
- SkiaSharp (>= 3.116.1)
- SkiaSharp.NativeAssets.Android (>= 3.116.1)
-
net10.0-ios26.0
- bblanchon.PDFium.iOS (>= 146.0.7678)
- CommunityToolkit.Maui.MediaElement (>= 8.0.0)
- Microsoft.Maui.Controls (>= 10.0.40)
- PdfPig (>= 0.1.10)
- SkiaSharp (>= 3.116.1)
- SkiaSharp.NativeAssets.iOS (>= 3.116.1)
-
net10.0-maccatalyst26.0
- bblanchon.PDFium.iOS (>= 146.0.7678)
- CommunityToolkit.Maui.MediaElement (>= 8.0.0)
- Microsoft.Maui.Controls (>= 10.0.40)
- PdfPig (>= 0.1.10)
- SkiaSharp (>= 3.116.1)
- SkiaSharp.NativeAssets.MacCatalyst (>= 3.116.1)
-
net10.0-windows10.0.19041
- bblanchon.PDFium.Win32 (>= 146.0.7678)
- CommunityToolkit.Maui.MediaElement (>= 8.0.0)
- Microsoft.Maui.Controls (>= 10.0.40)
- PdfPig (>= 0.1.10)
- SkiaSharp (>= 3.116.1)
- SkiaSharp.NativeAssets.Win32 (>= 3.116.1)
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 |