跳至页脚内容
产品比较

探索在.NET中QuestPDF水印的最佳替代方案

用户向您的门户上传一个PDF,而您不了解其内容。 IronPDF通过将文件转换为图像然后返回进行清理,剥离嵌入的JavaScript、活动对象、按钮和元数据,然后重建一个干净的文档。 Cleaner 类公开了 SanitizeWithBitmapSanitizeWithSvg 以进行清理,以及 ScanPdf 以检测威胁。 一种权衡决定了选择:位图更彻底但丧失文本可搜索性,而SVG保持可搜索但布局可能漂移。 您在为安全性交换忠实度,并决定多少。

从不可信来源消除PDF威胁

任何接受上传PDF的应用程序(如门户网站、申请追踪器、索赔系统)可以清理传入的文件,以防止嵌入的脚本和活动内容到达查看器:

using IronPdf;

var pdf = PdfDocument.FromFile("upload.pdf");
Cleaner.SanitizeWithSvg(pdf).SaveAs("upload-clean.pdf");
using IronPdf;

var pdf = PdfDocument.FromFile("upload.pdf");
Cleaner.SanitizeWithSvg(pdf).SaveAs("upload-clean.pdf");
Imports IronPdf

Dim pdf = PdfDocument.FromFile("upload.pdf")
Cleaner.SanitizeWithSvg(pdf).SaveAs("upload-clean.pdf")
$vbLabelText   $csharpLabel

处理前扫描

ScanPdf 根据默认的YARA规则集(或自定义规则集)检查文件,并报告是否发现任何危险,以便管道可以在存储或打开之前进行隔离或拒绝:

var pdf = PdfDocument.FromFile("upload.pdf");
CleanerScanResult result = Cleaner.ScanPdf(pdf);

if (result.IsDetected)
{
    // quarantine: result.Risks holds the detections
}
var pdf = PdfDocument.FromFile("upload.pdf");
CleanerScanResult result = Cleaner.ScanPdf(pdf);

if (result.IsDetected)
{
    // quarantine: result.Risks holds the detections
}
Imports System

Dim pdf = PdfDocument.FromFile("upload.pdf")
Dim result As CleanerScanResult = Cleaner.ScanPdf(pdf)

If result.IsDetected Then
    ' quarantine: result.Risks holds the detections
End If
$vbLabelText   $csharpLabel

它检测嵌入的JavaScript漏洞、可疑的表单操作、隐藏内容、已知的漏洞模式以及未授权的嵌入文件。 请注意,ScanPdf 只能检测; 清理是通过 SanitizeWith 方法完成的。

增强云部署的文件安全性

在文件进入无服务器或共享环境(如Azure、AWS Lambda)之前去除活动内容可以减少攻击面。 在进入时进行净化,而不是在文件已经在敏感位置运行后进行。

共享前去除元数据

因为文档是从图像重建的,隐藏的作者姓名、修订痕迹和其他元数据不会保留。在发布或将文件发送到组织外部之前非常有用。

创建清晰的基线以便签名或存档

在数字签名或PDF/A存档之前进行净化,可以为您提供一个无脚本的起点。 您很少希望证明或保存携带活动内容的文档几十年。

需要时保留文本

当下游步骤需要文字(搜索、索引、可访问性、提取)时,使用SVG:它去除了活动层,同时保持PDF可搜索,接受可能的布局漂移。

净化不能做什么

净化不是编辑。 它去除隐藏和活动威胁,而不是可见信息。 姓名、帐号以及人眼可以阅读的任何信息都完整保留。 要去除敏感内容,这是错误的工具; 使用编辑功能。

还有位图输出是图像。 它是不可搜索且无法访问的:屏幕阅读器无法从中获取任何信息,这与可访问性目标如PDF/UA相冲突。 仅在最大安全性超过可搜索性时使用位图,并在需要保留文本时使用SVG。

将其视为安全步骤

净化属于您的安全层,而不是格式化层。 在任何您未自己生成的内容上运行,先扫描,保留原件,并根据文本是否需要保留选择位图或SVG。

常见问题解答

IronPDF是如何清理上传的PDF的?

IronPDF的Cleaner类将PDF转换为图像,并将其重建为一个干净的文档,去除嵌入的JavaScript、活动对象、表单按钮和元数据。使用Cleaner.SanitizeWithBitmap可获得最彻底的清理,或使用Cleaner.SanitizeWithSvg保留文字搜索功能。

SanitizeWithBitmap和SanitizeWithSvg之间有什么区别?

SanitizeWithBitmap将PDF呈现为像素图像并从中重建——这是最彻底的选项,但会生成无法搜索或访问的文档。SanitizeWithSvg删除活动内容层,而保留文字可搜索,但布局可能会略微偏移。

在处理之前,IronPDF能否扫描PDF中的威胁?

可以。Cleaner.ScanPdf依据默认或自定义的YARA规则集检查文件并返回CleanerScanResult,指示是否检测到威胁以及它们是什么。扫描只负责检测——需调用SanitizeWith方法来清理文件。

ScanPdf能检测到哪些威胁?

ScanPdf检测嵌入的JavaScript漏洞、可疑的表单动作、隐藏内容、已知的漏洞模式和未经授权的嵌入文件。

清理是否会删除如姓名或帐号等敏感的可见信息?

不会。清理移除的是隐藏和活动威胁,而不是可见内容。姓名、帐号和所有可读文字都会保留。要删除可见的敏感信息,请使用编辑——清理不是适合的工具。

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。

钢铁支援团队

我们每周 5 天,每天 24 小时在线。
聊天
电子邮件
打电话给我