如何在 C# 中清理 PDF | IronPDF

如何使用IronPDF在 C# 中對 PDF 進行清理

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

IronPDF透過將 PDF 文件轉換為圖像再轉換回來來清理 PDF 文件,從而刪除嵌入的腳本、 JavaScript和元資料。 此流程可增強安全性,提高跨平台相容性,並防止惡意攻擊。 無論您是處理需要數位簽章的敏感文檔,還是需要確保文檔完整性以符合 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 清理的工作原理是將 PDF 文件轉換為圖像格式,從而刪除JavaScript程式碼、嵌入物件和按鈕,然後再轉換回 PDF 文件。 我們提供點陣圖和 SVG 圖像類型。這種方法在處理來自不可信來源的 PDF 文件,或準備將文件安全地部署到 Azure 或AWS 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");
$vbLabelText   $csharpLabel

在選擇點陣圖清理還是 SVG 清理時,請考慮您的特定要求。 SVG 清理技術能夠保持文字的可搜尋性,因此非常適合需要在清理後仍能被搜尋的文件。 在處理從 PDF 中提取的文字或實作PDF 輔助功能(如 PDF/UA)時,這一點尤其重要。

如何自訂消毒選項?

除了清理 PDF 之外, IronPDF還允許您清理 PDF 以及 ChromeRenderOptions,從而可以修改邊距、紙張大小和紙張方向等參數。 當需要在不同文件類型中保持一致的格式,或為特定列印要求準備 PDF 時,這種靈活性尤其有價值。

SanitizeWithBitmapSanitizeWithSvg 都可以接受第二個可選參數,即 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");
$vbLabelText   $csharpLabel

這些渲染選項讓您可以對清理輸出進行精細控制,類似於將 HTML 轉換為 PDF時可用的選項。 在消毒過程中,您可以調整紙張尺寸、方向、邊距,甚至添加自訂頁首和頁尾

如何掃描PDF檔案以查找漏洞?

使用 ScanPdf 類別的 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);
$vbLabelText   $csharpLabel

使用自訂 YARA 規則

為了增強安全掃描功能,滿足您的特定需求,您可以提供自訂的YARA規則:

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

PDF 資料清理最佳實踐

在應用程式中實施 PDF 清理時,請考慮以下最佳實務:

1.處理前請務必掃描:對所有傳入的 PDF 檔案進行漏洞掃描,尤其是來自外部來源或使用者上傳的檔案。

2.選擇正確的清理方法:當文字可搜尋性很重要時,請使用 SVG 清理; 處理高度敏感文件時,請使用 bitmap 清理以獲得最大安全性。

3.保留原始文件:在進行資料清除之前,保留原始 PDF 文件的副本,以便進行審計追蹤或恢復。

4.實施日誌記錄:追蹤所有清理操作,以滿足安全審計和合規性要求。

5.定期更新:保持 YARA 規則更新,以偵測最新的基於 PDF 的威脅和漏洞。

PDF 安全清理只是全面 PDF 安全措施的一個面向。 為了採取更多安全措施,可以考慮設定 PDF 密碼和權限或實施數位簽名,以確保文件的真實性和完整性。

準備好要看看你還能做什麼了嗎? 請造訪我們的教學頁面:簽署和保護 PDF 文件

常見問題解答

什麼是 PDF sanitization,為什麼它很重要?

PDF sanitization 是從 PDF 文件中移除潛在惡意內容的過程,包括內嵌的腳本、JavaScript 和元資料。IronPDF 通過將 PDF 轉換為圖像再返回來實現這一目標,在保持文件內容的同時有效消除安全漏洞。這對於防止惡意攻擊和確保文件完整性至關重要,尤其是在處理敏感文件或來自不可信來源的 PDF 時。

PDF 淨化程序如何運作?

IronPDF 的淨化過程是將 PDF 文件轉換成圖片格式(Bitmap 或 SVG),濾除 JavaScript 程式碼、內嵌物件和按鈕。然後,影像會轉換回乾淨的 PDF 文件。此方法可確保完全移除可能有害的元素,同時保留原始文件的視覺內容。

Bitmap 與 SVG sanitization 方法有何差異?

IronPDF 提供兩種具有明顯優勢的消毒方法。SVG sanitization 比位圖 sanitization 更快,而且可以產生可搜尋的 PDF,因此是需要維持文字可搜尋性的理想選擇。不過,SVG sanitization 可能會導致一些版面不一致的情況。位圖濾除可提供更一致的視覺輸出,但無法保留文字的可搜尋性。請根據您對可搜尋性與版面一致性的特定需求進行選擇。

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

使用 IronPDF,您只需使用 Cleaner 類一行代碼即可對 PDF 進行消毒。只需使用`IronPdf.Cleaner.SanitizeWithSvg(PdfDocument.FromFile("input.pdf")).SaveAs("sanitized.pdf");`此指令載入您的 PDF,執行以 SVG 為基礎的 sanitization 以移除腳本和元資料,並儲存清洗後的版本。

我可以自訂消毒程序嗎?

是的,IronPDF 允許您使用 ChromeRenderOptions 自訂淨化程序。這使您能夠在濾除過程中修改邊界、紙張大小和紙張方向等參數。當您需要在不同的文件類型中維持一致的格式或確保滿足特定的排版要求時,這種靈活性尤其有用。

何時應該使用 PDF 淨化?

在處理來自不受信任來源的 PDF、為 Azure 或 AWS Lambda 等平台上的安全雲端部署準備文件、處理需要數位簽章的敏感文件、確保 PDF/A 合規性的長期歸檔,或實作 PDF/UA 等 PDF 可訪問功能時,建議使用 IronPDF 進行 PDF sanitization。對於任何將文件完整性和安全性視為至高無上的情境而言,這都是不可或缺的安全步驟。

Curtis Chau
技術作家

Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。

準備好開始了嗎?
Nuget 下載 17,803,474 | 版本: 2026.3 剛剛發布
Still Scrolling Icon

還在滾動嗎?

想快速取得證據? PM > Install-Package IronPdf
運行範例看著你的HTML程式碼變成PDF檔。