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;
}
相关推荐
Xin_ye1008616 小时前
C# 零基础到精通教程 - 第七章:面向对象编程(入门)——类与对象
开发语言·c#
rockey62716 小时前
AScript异步执行与await关键字
c#·.net·script·eval·expression·异步执行·动态脚本
程序leo源18 小时前
Qt窗口详解
开发语言·数据库·c++·qt·青少年编程·c#
月巴月巴白勺合鸟月半1 天前
质本洁来还洁去,强于污淖陷文本
c#
Xin_ye100861 天前
C# 零基础到精通教程 - 第八章:面向对象编程(进阶)——继承与多态
开发语言·c#
asdzx671 天前
使用 C# 打印 Excel 文档(详细教程)
c#·excel
伽蓝_游戏1 天前
第四章:AssetBundle 核心机制与文件结构
unity·c#·游戏引擎·游戏程序
2501_930707781 天前
使用C#代码拆分 PowerPoint 演示文稿
开发语言·c#·powerpoint
SenChien1 天前
C#学习笔记-入门篇
笔记·学习·c#·rider
诙_1 天前
由C++速通C#
开发语言·c#