关于 syncfusion-wpf-pdf-viewer
此技能为 Syncfusion WPF PdfViewer 生成 C# 和 XAML 示例,帮助开发者集成查看器功能,并根据所选目标框架调整项目设置与代码。
主要功能
- 01生成 C# 和 XAML 示例
- 02涵盖 PDF 查看功能
- 03按目标框架调整代码
- 04依据功能参考片段生成
适用场景
- 01在 WPF 应用中加载 PDF
- 02自定义查看器控件和工具栏
- 03实现 PDF 批注或打印
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ syncfusion/ pdf-viewer-sdk-skills --skill syncfusion-wpf-pdf-viewer安装后在 Claude Code 中输入/syncfusion-wpf-pdf-viewer确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
README.mdreferences/annotation.mdcommands.mdcustomize-contextmenu.mdexport-image.mdextract-text-from-pdf.mdform-filling.mdhandwritten-signature.mdimport-export-annotations.mdinteraction-mode.mdLoad-sample.mdlocalization.mdmagnifying.mdnavigation.mdorganize-pages.mdpdf-coordinates.mdpdf-layers.mdpdf-pages.mdpdf-rendering.mdprint.mdredaction.mdsaving-pdf-files.mdsearching-text.mdtext-extraction-engine.mdtext-selection.mdtoolbar-items.md详细介绍
Syncfusion WPF PDFViewer – UI 示例生成器
为用户的项目生成 C# 代码 (默认)
触发关键词:“how to”、“code sample”、“show me”、“example”、“snippet”、“integrate”、“wpf PdfViewer”、“create sample”。
**用途:**生成简洁、可直接使用的 C# 和 XAML 代码片段,供用户在使用 Syncfusion WPF PdfViewer 控件时直接插入其 WPF 应用程序。
工作流:
-
使用
references/*.md文件中提供的代码片段构建 C# 代码。 -
生成示例之前,询问用户要将代码插入其 WPF 项目中现有的 XAML 文件,还是创建一个新的 WPF 项目应用程序。
-
如果用户选择创建新的 WPF 项目,询问其要使用的目标框架:
- .NET Framework(例如 4.6、4.7、4.8)——使用
Syncfusion.PdfViewer.WPF,目标为经典 .NET Framework。 - .NET Core / .NET(例如 .NET 8、.NET 10)——使用
Syncfusion.PdfViewer.WPF,并设置<TargetFramework>net8.0-windows</TargetFramework>(或所选版本)。 - 根据用户的选择,使用正确的
<TargetFramework>值生成.csproj文件,并相应调整任何特定于框架的代码(例如命名空间导入、NuGet 包版本、启动代码)。
- .NET Framework(例如 4.6、4.7、4.8)——使用
-
XAML 生成规则——必须在编写任何 XAML 之前分析参考文件:
⚠️ 严格规则——无一例外: 在生成任何 XAML 之前,打开并阅读与所请求功能相关的
references/*.md文件。 问问自己:“参考文件是否包含此功能的 XAML 标记?”- 是 → 参考文件中有 XAML → 仅包含代码片段中显示的准确 XAML 元素。
- 否 → 参考文件仅包含 C# →
MainWindow.xaml中必须仅在<Grid>内包含<syncfusion:PdfViewerControl>。到此为止,不得添加其他内容。
每次输出 XAML 前都要完成以下检查清单:
- 我已打开相关的
references/*.md文件。 - 我已确认其中包含 XAML,还是仅包含 C#。
- 如果仅包含 C#:我的 XAML 除
<Grid>内的<syncfusion:PdfViewerControl x:Name="pdfViewer"/>外不包含其他内容。 - 如果参考文件中有 XAML:我只复制了其中的元素,没有自行添加新元素。
禁止内容(参考文件中没有 XAML 时):
<Button>、<ComboBox>、<Slider>、<StackPanel>、<TextBlock>、<Grid.RowDefinitions>,以及任何未在参考代码片段中原样出现的 UI 元素。已知仅包含 C# 的功能(不得生成 XAML):
- 墨迹 / 形状 / 图章 / 文本 / 高亮批注(
annotation.md)——所有设置都仅使用 C#。 - 放大镜 / 缩放级别(
magnifying.md)——仅使用 C#。 - 交互模式(
interaction-mode.md)——仅使用 C#。 - 文本选择(
text-selection.md)——仅使用 C#。 - PDF 图层(
pdf-layers.md)——仅使用 C#。 - 涂黑(
redaction.md)——仅使用 C#。 - 打印(
print.md)——仅使用 C#。 - 导出图像(
export-image.md)——仅使用 C#。 - 保存 PDF(
saving-pdf-files.md)——仅使用 C#。
已知确实需要 XAML 的功能(来源于参考文件):
- 命令(
commands.md):导航 / 缩放 / 批注 / 撤销 / 重做 / 打印 / 卸载按钮使用Command="{Binding ElementName=..., Path=...}"。 - 工具栏项(
toolbar-items.md):经典样式要求在<syncfusion:PdfViewerControl>上设置Style="{StaticResource SyncfusionPdfViewerCustomControlStyle}"。 所有 XAML 新增内容都必须放在承载<syncfusion:PdfViewerControl>的同一个<Grid>中,只有在参考代码片段暗示需要时,才使用<StackPanel>或<Grid>子布局。
-
仅添加满足用户所请求功能所需的 API。不要包含可选 API 或其他内容。
-
C# 语言版本兼容性:当目标框架为 .NET Framework(例如 4.6、4.7、4.8)时,默认的 C# 语言版本为 7.3。生成的 C# 代码不得使用任何 C# 8.0 或更高版本的语言功能。具体而言,不要使用:
- Switch 表达式(
x switch { ... }) - 可空引用类型(
string?、#nullable enable、object?) - 默认接口实现
- 范围和索引(
^1、1..^1) ??=空合并赋值运算符 请使用if/else或传统的switch语句,而不是 switch 表达式。请使用常规空值检查(if (x != null)),而不是可空引用类型语法。
- Switch 表达式(
代码参考
所有模板和操作代码片段都位于 references/*.md 中。每个文件都包含一个专门的代码片段或模板,Agent 会在生成示例时组合使用。
| 文件 | 用途 |
|---|---|
| Load-sample.md | 使用文件路径、流或 PdfLoadedDocument 加载和卸载 PDF(可加密或不加密);支持异步加载、MVVM 绑定、密码处理、加载指示器自定义和主题应用。 |
| navigation.md | 使用基于索引或页码的 API 导航 PDF 页面;获取页面状态信息;以编程方式滚动;管理缩略图和书签;处理超链接导航事件。 |
| annotation.md | 启用、自定义和管理所有注释类型;处理注释事件;以编程方式选择、隐藏、锁定或删除注释;控制批注面板、作者信息、超链接和选择视觉效果。 |
| pdf-rendering.md | 通过在 PDFium 和 SfPdf 之间切换并设置必需的 ReferencePath,配置 PDF 渲染引擎。 |
| text-extraction-engine.md | 选择文本提取引擎(PDFium 或 SfPdf),以控制文本提取行为。 |
| print.md | 以静默或对话框方式打印 PDF;配置打印机、页面大小、缩放、方向、页码范围、纸张来源和文档名称;处理打印生命周期事件。 |
| export-image.md | 将 PDF 页面或页码范围导出为图像(JPG、PNG、TIFF、BMP),并控制尺寸、DPI、纵横比和透明度。 |
| import-export-annotations.md | 使用 FDF 或 XFDF 格式导入和导出注释。 |
| extract-text-from-pdf.md | 从页面或整个文档中提取文本内容和边界信息。 |
| form-filling.md | 处理 AcroForm 字段:管理表单事件、显示或隐藏图标、导入/导出表单数据,以及以编程方式添加或编辑表单字段。 |
| pdf-layers.md | 通过切换可见性、启用或禁用图层以及控制“图层”窗格 UI,访问和管理 PDF 图层。 |
| redaction.md | 通过标记区域、自定义外观和处理涂黑事件来应用涂黑。 |
| pdf-coordinates.md | 在坐标系之间进行转换、获取滚动偏移量,并放大特定页面区域。 |
| organize-pages.md | 使用页面整理功能旋转、重新排序和删除页面。 |
| handwritten-signature.md | 捕获手写签名、自定义外观、处理签名事件,并在保存时扁平化签名。 |
| interaction-mode.md | 使用光标设置切换查看器交互模式,例如文本选择、平移和框选缩放。 |
| pdf-pages.md | 自定义页面外观、处理页面交互事件,并将像素坐标转换为 PDF 点。 |
| saving-pdf-files.md | 保存已编辑的 PDF、检测未保存的更改、取消保存操作、处理保存事件,并在关闭前提示用户处理待保存的编辑。 |
| magnifying.md | 控制缩放行为,包括缩放级别、适合模式、限制、矩形区域缩放、工具栏可见性和缩放变更事件。 |
| searching-text.md | 搜索并高亮文本、浏览搜索结果、获取匹配项边界和文本详情、支持多行搜索,并控制搜索 UI 和可用性。 |
| text-selection.md | 检测文本选择完成、获取选中的文本和边界、自定义高亮颜色、启用或禁用选择,并以编程方式清除选择内容。 |
| localization.md | 使用 .resx 资源和区域性设置本地化 PDF Viewer UI。 |
| customize-contextmenu.md | 通过添加、移除或隐藏菜单项以及处理菜单单击事件来自定义上下文菜单。 |
| commands.md | 使用并绑定内置 WPF 命令,以进行导航、缩放、搜索、注释、撤销/重做、打印、保存和卸载文档。 |
| toolbar-items.md | 通过显示或隐藏工具栏、面板、按钮、菜单和通知栏,以及切换工具栏样式来自定义查看器 UI。 |
先决条件
- 开发环境:Visual Studio 2022 或 Visual Studio Insider 2026(推荐用于 .NET 10)。
- NET Framework 4.5+ 或支持 WPF 的 .NET Core/.NET 8+。
- Syncfusion WPF NuGet 包:
Syncfusion.PdfViewer.WPF
主题 NuGet 包
若要使用 SfSkinManager 为 WPF PdfViewerControl 应用内置主题,请安装与所需主题对应的 NuGet 包:
| 主题名称 | 所需 NuGet 包 |
|---|---|
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 |
注意: 只需安装与用户想要应用的主题对应的 NuGet 包。主题支持需要
Syncfusion.SfSkinManager.WPF,它作为主题包的依赖项一并包含。