PdfiumViewer使用权限控制期操作按钮(PdfViewer其实也可以完整兼容)

如果是 还用 方法都在这里

var pdfViewer = new PdfiumViewer.PdfViewer();

在 wpf下使用嵌入view 的方法 :

"通过 NuGet 安装核心包和原生依赖:

csharp 复制代码
Install-Package PdfiumViewer
Install-Package PdfiumViewer.Native.x86_64.v8-xfa(或者根据你的目标平台选择 x86)

在 WPF 的 XAML 中使用 WindowsFormsHost 承载:

csharp 复制代码
<Grid>
    <WindowsFormsHost x:Name="pdfHost" />
</Grid>

把相关控件放到指定winform控件内:

csharp 复制代码
var pdfViewer = new PdfiumViewer.PdfViewer();
pdfViewer.Document = PdfiumViewer.PdfDocument.Load("你的文件路径.pdf");
pdfHost.Child = pdfViewer;
  1. 限制界面上的打印按钮(UI 层面)
    如果你使用的是 PdfiumViewer 自带的 PdfViewer 控件,无法直接隐藏或禁用工具栏上的打印按钮。因为 PdfViewer 是一个封装好的"开箱即用"控件,其工具栏功能是内置且受限的,不支持直接修改或隐藏特定按钮。
    💡 解决方案:使用底层 PdfRenderer 控件自定义界面
    如果你希望完全控制工具栏(例如去掉打印按钮),建议放弃直接使用 PdfViewer,转而使用更底层的 PdfRenderer 控件。PdfRenderer 只负责 PDF 的渲染,不包含默认工具栏,你可以自己编写 WPF 或 WinForms 的 UI 来搭配它。
    实现思路:
    在 WindowsFormsHost 中承载 PdfRenderer 控件。
    在 WPF 中自己绘制工具栏(添加缩放、翻页等按钮,但不添加打印按钮)。
    通过代码将 PdfRenderer 与你的自定义按钮绑定。

// 后台代码示例:加载文档到 PdfRenderer(没有默认打印按钮)

csharp 复制代码
var document = PdfiumViewer.PdfDocument.Load("你的文件路径.pdf");
pdfRenderer1.Document = document;//如果此段有问题未找到这个属性 咱们可以用另一种方式:  _pdfViewer.Load(_pdfDocument);

这样,界面上就彻底没有了打印按钮,用户无法通过 UI 触发打印。

  1. 限制 PDF 文件本身的打印权限(文件安全层面)

仅仅隐藏界面上的打印按钮是不够的,用户依然可以通过快捷键(如 Ctrl + P)或者通过其他 PDF 阅读器打开文件来打印。如果你想从根本上限制打印,需要对 PDF 文件本身设置安全权限。

使用PdfRenderer 的操作方法是:(其实与上面PdfViewer操作相同)

csharp 复制代码
// 放大按钮点击事件
private void BtnZoomIn_Click(object sender, RoutedEventArgs e)
{
    pdfRenderer.ZoomMode = PdfViewerZoomMode.Custom; // 切换到自定义模式
    pdfRenderer.Zoom += 0.1; // 每次点击放大 10%
}

// 缩小按钮点击事件
private void BtnZoomOut_Click(object sender, RoutedEventArgs e)
{
    pdfRenderer.ZoomMode = PdfViewerZoomMode.Custom;
    if (pdfRenderer.Zoom > 0.2) // 设置一个最小缩放限制
    {
        pdfRenderer.Zoom -= 0.1; // 每次点击缩小 10%
    }
}

// 适应宽度按钮点击事件
private void BtnFitWidth_Click(object sender, RoutedEventArgs e)
{
    pdfRenderer.ZoomMode = PdfViewerZoomMode.FitToWidth;
}
相关推荐
小羊没烦恼!3 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
神仙别闹3 天前
基于C#+MySQL实现(WinForm)个人聊天室软件
c#
kybs19913 天前
全球灾害数据分析可视化 毕业设计-附源码66794
vue.js·spring boot·mysql·安全·django·c#·asp.net
Polevne3 天前
C# SFTP客户端实现文件传输
c#·ssh
samble3 天前
从零搭建灌装监控系统(四):深色主题与样式系统,ResourceDictionary 统一管理
c#·wpf·mvvm·样式·工业控制
cjp5603 天前
024 . WPF MVVM类封装优化
c#
淡海水4 天前
13-04-面试-源码级深度追问链
数据结构·unity·面试·c#·游戏引擎·源码·il2cpp
asdzx674 天前
如何使用 C# 提取 PPT 文本与图片
c#·ppt·提取文本
2501_930707784 天前
使用C#代码使用条件格式为 Excel 隔行设置颜色
c#·excel
何以解忧唯有撸码4 天前
【开源】c#造个轮子-日程安排工具
c#·自定义控件