如何在 C# 中清理 PDF | IronPDF

如何使用 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. using 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 文件。 我們提供 BitmapSVG 兩種影像格式。此方法特別適用於處理來自不可信來源的 PDF 檔案,或為在 AzureAWS Lambda 等雲端平台上進行安全部署而準備文件時。 SVG 與位圖的主要差異在於:

  • 比使用位圖進行清理更快速
  • 生成可搜尋的 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 還允許您在清理 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");
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/A 時可用的選項。 在清理過程中,您可以調整紙張尺寸、方向、邊距,甚至添加自訂頁首和頁尾

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

請使用 Cleaner 類別的 ScanPdf 方法,檢查 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 檔案執行漏洞掃描,尤其是來自外部來源或使用者上傳的檔案。

  2. 選擇合適的淨化方法:當文字可搜尋性至關重要時,請使用 SVG 淨化方式; 處理高度敏感文件時,請使用 bitmap 清理機制以確保最高安全性。

  3. 保留原始檔案:在進行資料淨化前,請保留原始 PDF 檔案的副本,以供稽核追蹤或資料復原之用。

  4. 實作記錄功能:追蹤所有資料淨化操作,以符合安全稽核與合規要求。

  5. 定期更新:請保持您的 YARA 規則更新,以偵測最新的 PDF 相關威脅與漏洞。

PDF 淨化僅是全面 PDF 安全防護的其中一環。 若需採取額外的安全措施,可考慮設定 PDF 密碼與權限,或實施數位簽章,以確保文件的真實性與完整性。

準備好探索更多可能性了嗎? 請點此查看我們的教學頁面:簽署與保護 PDF 文件

常見問題

何謂 PDF 淨化,為何它如此重要?

PDF 淨化是指從 PDF 文件中移除潛在惡意內容的過程,包括嵌入式腳本、JavaScript 及元資料。IronPDF 透過將 PDF 轉換為圖像再轉回原格式來實現此功能,在維持文件內容的同時,有效消除安全漏洞。這對於防範惡意攻擊及確保文件完整性至關重要,特別是在處理敏感文件或來自不可信來源的 PDF 時。

PDF 淨化流程是如何運作的?

IronPDF 的淨化流程是將 PDF 文件轉換為圖像格式(位圖或 SVG),藉此移除 JavaScript 程式碼、嵌入式物件及按鈕。隨後將該圖像重新轉換回乾淨的 PDF 文件。此方法確保徹底移除潛在有害元素,同時保留原始文件的視覺內容。

位圖 (Bitmap) 與 SVG 的清理方法有何差異?

IronPDF 提供兩種各具優勢的淨化方法。SVG 淨化比位圖淨化更快,且能產生可搜尋的 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 擁有卡爾頓大學(Carleton University)的電腦科學學士學位,專精於前端開發,並精通 Node.js、TypeScript、JavaScript 及 React。他熱衷於打造直觀且美觀的用戶介面,喜歡運用現代框架,並創建結構完善、視覺上吸引人的手冊。

除了開發工作之外,Curtis 對物聯網(IoT)抱有濃厚興趣,致力於探索整合硬體與軟體的創新方法。閒暇時,他喜歡玩遊戲和開發 Discord 機器人,將對科技的熱愛與創意相結合。

準備開始了嗎?
Nuget 下載 18,926,724 | 版本: 2026.5 just released
Still Scrolling Icon

還在往下捲動嗎?

想要快速確認成果嗎? PM > Install-Package IronPdf
執行範例 觀看您的 HTML 轉為 PDF。