比較

PdfiumViewer vs IronPDF:技術比較指南

PDFViewer vs IronPdf:PDF Viewer vs .NET 中的完整 PDF 解決方案

當 .NET 開發人員在 Windows Forms 應用程式中需要 PDF 功能時,他們經常會遇到PdfiumViewer- Google 的 PDFium 渲染引擎的 .NET wrapper。本比較將研究PdfiumViewer與 IronPDF,分析其架構差異、功能完整性以及對現代應用程式需求的適切性。

什麼是 PdfiumViewer? PdfiumViewer 是 PDFium 的 .NET wrapper,PDFium 是 Google 在 Chrome 瀏覽器中使用的 PDF 渲染引擎。 該函式庫提供專為 Windows Forms 應用程式設計的高效能 PDF 渲染功能,提供可直接嵌入 WinForms 介面的 `PdfViewer` 控件。 PdfiumViewer 以 Apache 2.0 授權釋出,提供符合成本效益的 PDF 檢視功能。 然而,其範圍基本上僅限於檢視與渲染 - 函式庫無法建立、編輯或處理 PDF 文件。 此外,PdfiumViewer 面臨不確定的維護狀態,這對需要長期支援的生產應用程式造成風險。 PdfiumViewer 的主要特點包括 - **專注於檢視**:專為顯示 PDF 內容而設計 - **Windows 表單專用**:僅限於 WinForms 應用程式 - **開放原始碼**:Apache 2.0 授權,無授權費用 - **原生二進位相依性**:需要特定平台的 PDFium 二進位檔 (x86/x64) - **不確定的維護**:更新有限且長期支援不明確

什麼是 IronPDF? [IronPDF](https://ironpdf.com/) 是一個全面的 .NET 函式庫,提供完整的 PDF 生命週期管理。 [ChromePdfRenderer](https://ironpdf.com/object-reference/api/IronPdf.ChromePdfRenderer.html) 類使用基於 Chromium 的現代引擎從 HTML、CSS 和 JavaScript 創建 PDF,而 `PdfDocument` 類則提供廣泛的操作和提取功能。 IronPdf 與PdfiumViewer只專注於檢視不同,IronPDF 可處理 PDF 的建立、文字萃取、處理、合併、水印和安全性,所有這些功能都在單一的函式庫中。 這個函式庫適用於 Console、Web 和 Desktop 應用程式,遠遠超越 Windows Forms 的限制。 ## 架構比較 PdfiumViewer 與IronPDF的根本差異在於其範圍:僅檢視與完整的 PDF 解決方案。 |範疇|PdfiumViewer|IronPDF| |--------|--------------|---------| |**主要焦點**|WinForms PDF 檢視器|完整的 PDF 解決方案| |**PDF製作**|✗|✓(HTML、URL、圖片)| |**文字萃取**|✗|✓| |**PDF 操作**|✗|✓(合併、分割、編輯)| |**內建檢視器**|✓|✗(注重後端)| | **平台支援** |僅限 Windows Forms|控制台、Web、桌面| |**框架支援**|.NET Framework|.NET Framework, Core, 5+。| |**維護**|不確定| 積極的 | 對於只需要在 Windows Forms 中檢視 PDF 的應用程式,PdfiumViewer 可能就足夠了。對於需要 PDF 產生、文字萃取或任何建立功能的應用程式,IronPDF 可提供完整的解決方案。 ## HTML 至 PDF 轉換 HTML 至 PDF 的轉換展示了這些函式庫之間的基本能力差距。 **PdfiumViewer HTML 轉 PDF 的方法:** ```csharp // NuGet: Install-Package PdfiumViewer using PdfiumViewer; using System.IO; using System.Drawing.Printing; // PDFiumViewer is primarily a PDF viewer/renderer, not a generator // It cannot directly convert HTML to PDF // You would need to use another library to first create the PDF // Then use PDFiumViewer to display it: string htmlContent = "

Hello World

This is a test document.

"; // This functionality is NOT available in PDFiumViewer // You would need a different library like wkhtmltopdf or similar // PDFiumViewer can only open and display existing PDFs: string existingPdfPath = "output.pdf"; using (var document = PdfDocument.Load(existingPdfPath)) { // Can only render/display existing PDF var image = document.Render(0, 300, 300, true); } ``` **IronPDF HTML-to-PDF 方法:** ```csharp // NuGet: Install-Package IronPdf using IronPdf; using System; string htmlContent = "

Hello World

This is a test document.

"; // Create a PDF from HTML string var renderer = new ChromePdfRenderer(); PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlContent); // Save the PDF pdf.SaveAs("output.pdf"); Console.WriteLine("PDF created successfully!"); ``` PdfiumViewer 無法從 HTML 建立 PDF - 它根本不支援此功能。 該函式庫只能開啟和顯示現有的 PDF 檔案。 需要 [HTML 至 PDF 轉換](https://ironpdf.com/how-to/html-file-to-pdf/)的應用程式需要將 IronPdfViewer 與其他函式庫結合,造成複雜性和潛在的相容性問題。 IronPdf 的 `ChromePdfRenderer` 使用現代 Chromium 引擎轉換 HTML 內容,完全支援 CSS3、Flexbox、Grid 和 JavaScript 執行,從網頁內容產生高保真 PDF 輸出。 ## 文字萃取 文字萃取展示了這些函式庫之間的另一項重大能力差距。 **PdfiumViewer 文本提取方法:** ```csharp // NuGet: Install-Package PdfiumViewer using PdfiumViewer; using System; using System.Text; string pdfPath = "document.pdf"; // PDFiumViewer has limited text extraction capabilities // It's primarily designed for rendering, not text extraction using (var document = PdfDocument.Load(pdfPath)) { int pageCount = document.PageCount; Console.WriteLine($"Total pages: {pageCount}"); // PDFiumViewer does not have built-in text extraction // You would need to use OCR or another library // It can only render pages as images for (int i = 0; i < pageCount; i++) { var pageImage = document.Render(i, 96, 96, false); Console.WriteLine($"Rendered page {i + 1}"); } } ``` **IronPDF 文本提取方法:** ```csharp // NuGet: Install-Package IronPdf using IronPdf; using System; string pdfPath = "document.pdf"; // Open and extract text from PDF PdfDocument pdf = PdfDocument.FromFile(pdfPath); // Extract text from all pages string allText = pdf.ExtractAllText(); Console.WriteLine("Extracted Text:"); Console.WriteLine(allText); // Extract text from specific page string pageText = pdf.ExtractTextFromPage(0); Console.WriteLine($"\nFirst page text: {pageText}"); Console.WriteLine($"\nTotal pages: {pdf.PageCount}"); ``` PdfiumViewer 主要設計用於渲染,而非文字擷取。 說明文件明確指出它"沒有內建文字擷取功能",您需要使用 OCR 或其他函式庫。 圖庫只能將頁面呈現為影像。 IronPdf 的 `ExtractAllText()` 方法可在單次呼叫中從所有頁面中提取所有文字。 若要進行更仔細的控制,`ExtractTextFromPage()` 可提供特定頁面中的文字。 此原生文字擷取功能可免除 OCR 或額外程式庫的需求。 ## PDF 至圖片轉換 PDF 到圖像的渲染是PdfiumViewer最擅長的領域-這是它作為渲染引擎的主要優勢。 **PdfiumViewer PDF 轉影像的方法:** ```csharp // NuGet: Install-Package PdfiumViewer using PdfiumViewer; using System; using System.Drawing; using System.Drawing.Imaging; string pdfPath = "document.pdf"; string outputImage = "page1.png"; // PDFiumViewer excels at rendering PDFs to images using (var document = PdfDocument.Load(pdfPath)) { // Render first page at 300 DPI int dpi = 300; using (var image = document.Render(0, dpi, dpi, true)) { // Save as PNG image.Save(outputImage, ImageFormat.Png); Console.WriteLine($"Page rendered to {outputImage}"); } // Render all pages for (int i = 0; i < document.PageCount; i++) { using (var pageImage = document.Render(i, 150, 150, true)) { pageImage.Save($"page_{i + 1}.png", ImageFormat.Png); } } } ``` **IronPDF PDF 轉影像的方法:** ```csharp // NuGet: Install-Package IronPdf using IronPdf; using System; using System.Linq; string pdfPath = "document.pdf"; string outputImage = "page1.png"; // Open PDF and convert to images PdfDocument pdf = PdfDocument.FromFile(pdfPath); // Convert first page to image var firstPageImage = pdf.ToBitmap(0); firstPageImage[0].Save(outputImage); Console.WriteLine($"Page rendered to {outputImage}"); // Convert all pages to images var allPageImages = pdf.ToBitmap(); for (int i = 0; i < allPageImages.Length; i++) { allPageImages[i].Save($"page_{i + 1}.png"); Console.WriteLine($"Saved page {i + 1}"); } Console.WriteLine($"Total pages converted: {pdf.PageCount}"); ``` PdfiumViewer 的 `Render()` 方法提供基於 DPI 的渲染,可精細控制輸出品質。 此方法需要使用嵌套 `using` 語句的手動處理模式。 IronPdf 的`ToBitmap()`方法提供了一個更簡單的 API,返回可以儲存或處理的位圖陣列。 這兩個函式庫都能有效地處理這項任務,儘管採用不同的 API 模式。 ## API 對應參考。 對於考慮將PdfiumViewer移植至IronPDF的團隊而言,瞭解 API 對應有助於估算工作量。 ### 文件載入 |PdfiumViewer|IronPDF| 筆記 | |--------------|---------|-------| |<代碼>PdfDocument.Load(path)PdfDocument.Load(stream)document.PageCountdocument.PageCountdocument.PageSizes[index]document.Pages[index].寬度/高度|<代碼>pdf.RasterizeToImageFiles(路徑, dpi)ChromePdfRenderer.RenderHtmlAsPdf()ChromePdfRenderer.RenderUrlAsPdf()pdf.ExtractAllText()PdfDocument.Merge()pdf.ApplyWatermark()pdf.SecuritySettings 內容處理的文字擷取功能