如何在C#中清理PDF

如何使用 IronPDF 在 C# 中对 PDF 进行消毒

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronPDF 通过将 PDF 转换为图像并返回,移除嵌入的脚本、JavaScript 和元数据,对 PDF 进行消毒处理。 这一过程可增强安全性、提高跨平台兼容性并防止恶意攻击。 无论您是在处理需要数字签名的敏感文档,还是需要确保文档的完整性以符合 PDF/A 标准的长期存档,消毒都是至关重要的安全步骤。

快速入门:使用IronPDF进行PDF净化

使用IronPDF的Cleaner类增强PDF文档的安全性。 本快速入门指南演示了如何使用 C# .NET 以最少的代码清理 PDF。 通过利用ScanPdf方法,您可以移除像嵌入脚本和元数据这样的漏洞,确保PDF的完整性和安全性。 按照代码片段清理您的 PDF,防范潜在威胁。

  1. 使用 NuGet 包管理器安装 https://www.nuget.org/packages/IronPdf

    PM > Install-Package IronPdf
  2. 复制并运行这段代码。

    IronPdf.Cleaner.SanitizeWithSvg(PdfDocument.FromFile("input.pdf")).SaveAs("sanitized.pdf");
  3. 部署到您的生产环境中进行测试

    通过免费试用立即在您的项目中开始使用IronPDF

    arrow pointer


如何对 PDF 进行消毒?

PDF sanitization 的工作原理是将 PDF 文档转换为图像格式,去除 JavaScript 代码、嵌入式对象和按钮,然后将其转换回 PDF 文档。 我们提供SVG图像类型。此方法特别有用于处理来自不可信源的PDF,或在准备文档以在AzureAWS Lambda等云平台上安全部署时。 SVG 与 Bitmap 的主要区别在于

  • 比用位图消毒快
  • 生成可搜索的 PDF
  • 布局可能不一致
:path=/static-assets/pdf/content-code-examples/how-to/sanitize-pdf-sanitize-pdf.cs
using IronPdf;

// Import PDF document
PdfDocument pdf = PdfDocument.FromFile("sample.pdf");

// Sanitize with Bitmap
PdfDocument sanitizeWithBitmap = Cleaner.SanitizeWithBitmap(pdf);

// Sanitize with SVG
PdfDocument sanitizeWithSvg = Cleaner.SanitizeWithSvg(pdf);

// Export PDFs
sanitizeWithBitmap.SaveAs("sanitizeWithBitmap.pdf");
sanitizeWithSvg.SaveAs("sanitizeWithSvg.pdf");
Imports IronPdf

' Import PDF document
Private pdf As PdfDocument = PdfDocument.FromFile("sample.pdf")

' Sanitize with Bitmap
Private sanitizeWithBitmap As PdfDocument = Cleaner.SanitizeWithBitmap(pdf)

' Sanitize with SVG
Private sanitizeWithSvg As PdfDocument = Cleaner.SanitizeWithSvg(pdf)

' Export PDFs
sanitizeWithBitmap.SaveAs("sanitizeWithBitmap.pdf")
sanitizeWithSvg.SaveAs("sanitizeWithSvg.pdf")
$vbLabelText   $csharpLabel

在选择位图和 SVG 净化时,请考虑您的具体要求。 SVG 净化可保持文本的可搜索性,因此非常适合需要在净化后保持可搜索性的文档。 在使用 PDF 中提取的文本或实施 PDF/UA 等 PDF 辅助功能时,这一点尤为重要。

如何自定义消毒选项?

除了净化PDF外,IronPDF允许您连同ChromeRenderOptions一起净化PDF,这样可以修改参数,例如边距、纸张大小和纸张方向。 当您需要在不同的文档类型中保持格式一致,或者为特定的打印要求准备 PDF 文件时,这种灵活性尤为宝贵。

ChromeRenderOptions对象。 这里有一个简单的示例,通过将MarginBottom属性设置为50 px来设置PDF的底部目标边距为50 px。

欲了解完整的可用选项列表,请参考 这里

:path=/static-assets/pdf/content-code-examples/how-to/santize-pdf-sanitize-chrome-render-options.cs
using IronPdf;

// Customize Chrome render options
var options = new ChromePdfRenderOptions();

// Set bottom margin to 50 pixels
options.MarginBottom = 50;

// Import PDF document
PdfDocument pdf = PdfDocument.FromFile("sample.pdf");

// Sanitize with Bitmap with Chrome render options
PdfDocument sanitizeWithBitmap = Cleaner.SanitizeWithBitmap(pdf, options);

// Sanitize with SVG with Chrome render options
PdfDocument sanitizeWithSvg = Cleaner.SanitizeWithSvg(pdf, options);

// Export PDFs
sanitizeWithBitmap.SaveAs("sanitizeWithBitmap.pdf");
sanitizeWithSvg.SaveAs("sanitizeWithSvg.pdf");
Imports IronPdf

' Customize Chrome render options
Dim options As New ChromePdfRenderOptions()

' Set bottom margin to 50 pixels
options.MarginBottom = 50

' Import PDF document
Dim pdf As PdfDocument = PdfDocument.FromFile("sample.pdf")

' Sanitize with Bitmap with Chrome render options
Dim sanitizeWithBitmap As PdfDocument = Cleaner.SanitizeWithBitmap(pdf, options)

' Sanitize with SVG with Chrome render options
Dim sanitizeWithSvg As PdfDocument = Cleaner.SanitizeWithSvg(pdf, options)

' Export PDFs
sanitizeWithBitmap.SaveAs("sanitizeWithBitmap.pdf")
sanitizeWithSvg.SaveAs("sanitizeWithSvg.pdf")
$vbLabelText   $csharpLabel

这些呈现选项可让您对消毒输出进行细粒度控制,类似于 将 HTML 转换为 PDF 时的选项。 您可以在消毒过程中调整纸张大小、方向、页边距,甚至添加自定义页眉和页脚

Icon Quote related to 如何自定义消毒选项?

我最喜欢的这种库是 IronPDF。它允许快速高效地操作 PDF 文件。它还具有许多有价值的功能,比如导出为 PDF/A 格式和数字签名 PDF 文档。

Milan Jovanovic related to 如何自定义消毒选项?

Milan Jovanovic

微软MVP

查看案例研究
Icon Quote related to 如何自定义消毒选项?

IronOCR 意味着我们每年可以节省 $40,000 的人工处理成本,同时提高生产力,并释放资源用于高影响任务。我强烈推荐它。

Brent Matzelle related to 如何自定义消毒选项?

Brent Matzelle

首席技术官,OPYN

查看案例研究
Icon Quote related to 如何自定义消毒选项?

Iron Suite 在我们的运营中起着至关重要的作用。这些工具提高了业务各方面的效率,包括创建平面图和改善库存管理。

David Jones related to 如何自定义消毒选项?

David Jones

首席软件工程师,Agorus Build

查看案例研究

如何扫描 PDF 以查找漏洞?

使用Cleaner方法检查PDF是否存在任何潜在漏洞。 此方法使用默认 YARA 文件进行检查。不过,您也可以将符合要求的自定义 YARA 文件上传到该方法的第二个参数。 这种扫描功能对于维护文档安全至关重要,尤其是在处理可能包含嵌入式附件表单字段的 PDF 文件时。

用于 PDF 文档的 YARA 文件包含用于识别与恶意 PDF 文件相关的特征的规则或模式。 这些规则帮助安全分析师自动检测潜在威胁并采取适当行动来降低风险。 YARA 在检测以下方面尤为有效:

  • 嵌入的 JavaScript 漏洞
  • 可疑的表单动作
  • 隐藏的恶意内容
  • 已知漏洞模式
  • 未经授权的嵌入文件或数据流
:path=/static-assets/pdf/content-code-examples/how-to/sanitize-pdf-scan-pdf.cs
using IronPdf;
using System;

// Import PDF document
PdfDocument pdf = PdfDocument.FromFile("sample.pdf");

// Scan PDF
CleanerScanResult result = Cleaner.ScanPdf(pdf);

// Output the result
Console.WriteLine(result.IsDetected);
Console.WriteLine(result.Risks.Count);
Imports IronPdf
Imports System

' Import PDF document
Private pdf As PdfDocument = PdfDocument.FromFile("sample.pdf")

' Scan PDF
Private result As CleanerScanResult = Cleaner.ScanPdf(pdf)

' Output the result
Console.WriteLine(result.IsDetected)
Console.WriteLine(result.Risks.Count)
$vbLabelText   $csharpLabel

使用自定义 YARA 规则

您可以提供定制的 YARA 规则,以便根据您的具体要求增强安全扫描:

:path=/static-assets/pdf/content-code-examples/how-to/sanitize-pdf-custom-yara.cs
// 该代码片段不可用!
' 该代码片段不可用!
$vbLabelText   $csharpLabel

PDF 净化的最佳实践

在应用程序中实施 PDF 净化时,请考虑以下最佳实践:

1.处理前始终进行扫描:对所有传入的 PDF 文件进行漏洞扫描,尤其是来自外部资源或用户上传的文件。

  1. 选择合适的净化方法:当文本可搜索性很重要时,使用SVG净化; 在处理高度机密的文档时,为了最大程度的安全性,使用bitmap净化。

3.保存原始文件:保留原始 PDF 文件的副本,然后再进行消毒处理,以用于审计跟踪或恢复目的。

4.实施日志记录:跟踪所有消毒操作,以满足安全审计和合规性要求。

5.定期更新:保持更新您的 YARA 规则,以检测最新的基于 PDF 的威胁和漏洞。

PDF 净化只是 PDF 综合安全的一个方面。 关于其他安全措施,请探讨设置 PDF 密码和权限或实施数字签名,以确保文档的真实性和完整性。

准备好看看您还能做些什么吗? 查看我们的教程页面:签名和保护PDFs

常见问题解答

什么是 PDF 净化,为什么它很重要?

PDF 净化是从 PDF 文档中删除潜在恶意内容的过程,包括嵌入式脚本、JavaScript 和元数据。IronPDF 通过将 PDF 转换为图像再返回来实现这一目的,在保持文档内容的同时有效消除安全漏洞。这对于防止恶意攻击和确保文档完整性至关重要,尤其是在处理敏感文档或来自不可信来源的 PDF 时。

PDF 净化过程是如何进行的?

IronPDF 的净化流程通过将 PDF 文档转换为图像格式(Bitmap 或 SVG),从而去除 JavaScript 代码、嵌入式对象和按钮。然后再将图像转换回干净的 PDF 文档。这种方法可确保完全去除潜在的有害元素,同时保留原始文档的视觉内容。

位图和 SVG 净化方法的区别是什么?

IronPDF 提供两种优势明显的消毒方法。SVG sanitization 比位图 sanitization 更快,而且能生成可搜索的 PDF,是需要保持文本可搜索性的理想选择。不过,SVG 净化可能会导致某些布局不一致。位图消毒可提供更一致的视觉输出,但无法保持文本的可搜索性。请根据您对可搜索性和布局一致性的具体要求进行选择。

如何使用 C# 对 PDF 进行快速消毒?

有了 IronPDF,只需一行代码,您就可以使用 Cleaner 类对 PDF 进行消毒。只需使用`IronPdf.Cleaner.SanitizeWithSvg(PdfDocument.FromFile("input.pdf")).SaveAs("sanitized.pdf");` 该命令加载您的 PDF,执行基于 SVG 的净化以移除脚本和元数据,并保存净化后的版本。

我可以定制消毒流程吗?

是的,IronPDF 允许您使用 ChromeRenderOptions 自定义消毒过程。这使您能够在消毒过程中修改页边距、纸张大小和纸张方向等参数。当您需要在不同的文档类型中保持格式一致或确保满足特定的排版要求时,这种灵活性尤其有用。

何时应使用 PDF 净化?

在处理来自不受信任来源的 PDF、为 Azure 或 AWS Lambda 等平台上的安全云部署准备文档、处理需要数字签名的敏感文档、确保 PDF/A 合规性的长期存档或实施 PDF/UA 等 PDF 可访问性功能时,建议使用 IronPDF 进行 PDF 净化。对于文档完整性和安全性至关重要的任何场景来说,这都是必不可少的安全步骤。

Curtis Chau
技术作家

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

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

准备开始了吗?
Nuget 下载 20,296,129 | 版本: 2026.7 刚刚发布
Still Scrolling Icon

还在滚动吗?

想快速获得证据? PM > Install-Package IronPdf
运行示例看着你的HTML代码变成PDF文件。