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;
}
相关推荐
曹牧14 小时前
C#:输入的字符串格式不正确
c#
根号五19 小时前
JetBrains Rider 使用教程(1)新建解决方案
c#·jetbrains rider
海天鹰20 小时前
C#:接收从打开方式打开的参数
c#
宝桥南山20 小时前
.NET 11 - 尝试一下Minimal API中的异步验证新特性
microsoft·微软·c#·asp.net·.net·.netcore
开开心心_Every21 小时前
文件查重软件批量删除重复文件释放空间
java·开发语言·c#·计算机外设·ocr·excel·perl
波力海苔夹心脆67521 小时前
VisionPro 与 VisionMaster 对比(上):软件定位、开发环境与核心视觉工具对照
图像处理·算法·计算机视觉·c#·视觉检测·个人开发·vp9
疯狂戴夫冒险1 天前
歇一会 · 久坐休息提醒工具(番茄钟)工具分享
c#
...6221 天前
VisionMaster 测量模块工具
c#·visionmaster
samble2 天前
从零搭建灌装监控系统(十九):单元测试实战,xUnit + 内存SQLite + 反射测试私有方法
c#·wpf·mvvm·modbus·工业控制
人道领域2 天前
【面试八股速通篇01】锁与并发工具
java·开发语言·面试·c#