Syncfusion WPF PDFViewer – UI Sample Generator
Generate C# Code for the User's Project (default)
Trigger keywords: "how to", "code sample", "show me", "example", "snippet", "integrate", "wpf PdfViewer", "create sample".
Purpose: Generate clean, ready-to-use C# and XAML code snippets that users can directly insert into their WPF applications when working with the Syncfusion WPF PdfViewer control.
Workflow:
- Build the C# code using snippets provided in the
references/*.md files.
- Before generating the sample, ask the user whether the code should be inserted into an existing XAML file in their WPF project or created as a new WPF project application.
- If the user chooses to create a new WPF project, ask them which target framework they want to use:
- .NET Framework (e.g. 4.6, 4.7, 4.8) — uses Syncfusion.PdfViewer.WPF and targets classic .NET Framework. - .NET Core / .NET (e.g., .NET 8, .NET 10) — uses Syncfusion.PdfViewer.WPF with <TargetFramework>net8.0-windows</TargetFramework> (or the selected version). - Based on the user's choice, generate the .csproj file with the correct <TargetFramework> value, and tailor any framework-specific code (e.g., namespace imports, NuGet package versions, startup code) accordingly.
- XAML generation rules — MANDATORY: analyze the reference files BEFORE writing any XAML:
> ⚠️ STRICT RULE — NO EXCEPTIONS: > Open and read the relevant references/.md file(s) for the requested feature before producing any XAML. > Ask yourself: "Does the reference file contain any XAML markup for this feature?"* > - YES → XAML exists in reference → include only those exact XAML elements shown in the snippet. > - NO → reference is C# only → MainWindow.xaml MUST contain only <syncfusion:PdfViewerControl> inside a <Grid>. Stop. Do not add anything else.
Checklist to run before every XAML output: - [ ] I have opened the relevant references/*.md file. - [ ] I have confirmed whether it contains XAML or is C#-only. - [ ] If C#-only: my XAML contains nothing beyond <syncfusion:PdfViewerControl x:Name="pdfViewer"/> inside <Grid>. - [ ] If XAML exists in reference: I am copying only those elements — not inventing new ones.
Forbidden (when reference has no XAML): <Button>, <ComboBox>, <Slider>, <StackPanel>, <TextBlock>, <Grid.RowDefinitions>, or any UI element that does not appear verbatim in the reference snippet.
Known C#-only features (no XAML must be generated): - Ink / shape / stamp / text / highlight annotations (annotation.md) — all settings are C# only. - Magnifying / zoom level (magnifying.md) — C# only. - Interaction mode (interaction-mode.md) — C# only. - Text selection (text-selection.md) — C# only. - PDF layers (pdf-layers.md) — C# only. - Redaction (redaction.md) — C# only. - Print (print.md) — C# only. - Export image (export-image.md) — C# only. - Saving PDF (saving-pdf-files.md) — C# only.
Known features that DO require XAML (sourced from references): - Commands (commands.md): navigation/zoom/annotation/undo/redo/print/unload buttons use Command="{Binding ElementName=..., Path=...}". - Toolbar items (toolbar-items.md): classic style requires Style="{StaticResource SyncfusionPdfViewerCustomControlStyle}" on <syncfusion:PdfViewerControl>.
All XAML additions must be placed inside the same <Grid> that hosts <syncfusion:PdfViewerControl>, using a <StackPanel> or <Grid> sub-layout only when the reference snippet implies it.
- Add only the APIs required to satisfy the user's requested functionality. Do not include optional APIs, additional.
- C# language version compatibility: When the target framework is .NET Framework (e.g., 4.6, 4.7, 4.8), the default C# language version is 7.3. The generated C# code MUST NOT use any C# 8.0+ language features. Specifically, do NOT use:
- Switch expressions (x switch { ... }) - Nullable reference types (string?, #nullable enable, object?) - Default interface implementations - Ranges and indices (^1, 1..^1) - ??= null-coalescing assignment Use if/else or traditional switch statements instead of switch expressions. Use regular null checks (if (x != null)) instead of nullable reference type syntax.
Code References
All templates and operation snippets live in references/*.md. Each file is a focused snippet or template the agent will combine when generating samples.
| File |
Purpose |
| Load-sample.md |
Load and unload PDFs using file paths, streams, or PdfLoadedDocument (encrypted or not); support async loading, MVVM binding, password handling, loading indicator customization, and theme application. |
| navigation.md |
Navigate PDF pages using index‑ or number‑based APIs; retrieve page state information; scroll programmatically; manage thumbnails and bookmarks; and handle hyperlink navigation events. |
| annotation.md |
Enable, customize, and manage all annotation types; handle annotation events; programmatically select, hide, lock, or delete annotations; control comments panel, authorship, hyperlinks, and selection visuals. |
| pdf-rendering.md |
Configure the PDF rendering engine by switching between PDFium and SfPdf and setting the required ReferencePath. |
| text-extraction-engine.md |
Select the text extraction engine (PDFium or SfPdf) to control text extraction behavior. |
| print.md |
Print PDFs with silent or dialog options; configure printers, page size, scaling, orientation, page range, paper source, and document name; and handle print lifecycle events. |
| export-image.md |
Export PDF pages or page ranges as images (JPG, PNG, TIFF, BMP) with control over size, DPI, aspect ratio, and transparency. |
| import-export-annotations.md |
Import and export annotations using FDF or XFDF formats. |
| extract-text-from-pdf.md |
Extract text content and bounding information from pages or the entire document. |
| form-filling.md |
Handle AcroForm fields: manage form events, show or hide icons, import/export form data, and add or edit form fields programmatically. |
| pdf-layers.md |
Access and manage PDF layers by toggling visibility, enabling or disabling layers, and controlling the Layers pane UI. |
| redaction.md |
Apply redactions by marking regions, customizing appearance, and handling redaction events. |
| pdf-coordinates.md |
Convert between coordinate systems, retrieve scroll offsets, and zoom into specific page regions. |
| organize-pages.md |
Rotate, reorder, and remove pages using page organizer features. |
| handwritten-signature.md |
Capture handwritten signatures, customize appearance, handle signature events, and flatten signatures on save. |
| interaction-mode.md |
Switch viewer interaction modes such as text selection, panning, and marquee zoom using cursor settings. |
| pdf-pages.md |
Customize page appearance, handle page interaction events, and convert pixel coordinates to PDF points. |
| saving-pdf-files.md |
Save edited PDFs, detect unsaved changes, cancel save operations, handle save events, and prompt before closing with pending edits. |
| magnifying.md |
Control zoom behavior including zoom levels, fit modes, limits, zoom-to-rectangle, toolbar visibility, and zoom change events. |
| searching-text.md |
Search and highlight text, navigate results, retrieve match bounds and text details, support multi-line search, and control search UI and availability. |
| text-selection.md |
Detect text selection completion, retrieve selected text and bounds, customize highlight color, enable or disable selection, and clear selections programmatically. |
| localization.md |
Localize the PDF Viewer UI using .resx resources and culture settings. |
| customize-contextmenu.md |
Customize context menus by adding, removing, hiding items, and handling menu click events. |
| commands.md |
Use and bind built‑in WPF commands for navigation, zoom, search, annotations, undo/redo, printing, saving, and unloading documents. |
| toolbar-items.md |
Customize viewer UI by showing or hiding toolbars, panels, buttons, menus, notification bars, and switching toolbar styles. |
Prerequisites
- Development Environment: Visual Studio 2022 or Visual Studio Insider 2026 (recommended for .NET 10).
- NET Framework 4.5+ or .NET Core/.NET 8+ with WPF support.
- Syncfusion WPF NuGet Packages:
Syncfusion.PdfViewer.WPF
Theme NuGet Packages
To apply a built-in theme to the WPF PdfViewerControl using SfSkinManager, install the NuGet package that matches the desired theme:
| Theme Name |
Required NuGet Package |
FluentLight |
Syncfusion.Themes.FluentLight.WPF |
FluentDark |
Syncfusion.Themes.FluentDark.WPF |
MaterialLight |
Syncfusion.Themes.MaterialLight.WPF |
MaterialDark |
Syncfusion.Themes.MaterialDark.WPF |
MaterialLight3 |
Syncfusion.Themes.MaterialLight3.WPF |
MaterialDark3 |
Syncfusion.Themes.MaterialDark3.WPF |
Office2019Colorful |
Syncfusion.Themes.Office2019Colorful.WPF |
Office2019Black |
Syncfusion.Themes.Office2019Black.WPF |
Office2019White |
Syncfusion.Themes.Office2019White.WPF |
Office2019DarkGray |
Syncfusion.Themes.Office2019DarkGray.WPF |
Windows11Light |
Syncfusion.Themes.Windows11Light.WPF |
Windows11Dark |
Syncfusion.Themes.Windows11Dark.WPF |
Note: Install only the NuGet package corresponding to the theme the user wants to apply. Theme support requires Syncfusion.SfSkinManager.WPF, which is included as a dependency of the theme packages.
Refer to: Apply theme using SfSkinManager | WPF PdfViewer Theme
Documentations
WPF PdfViewer overview