跳至頁尾內容
遷移指南

如何在 C# 中從 PdfiumViewer 轉移到 IronPDF

從PdfiumViewer遷移到IronPDF,將您的.NET PDF工作流程從Windows Forms查看器/渲染器轉移到Google的PDFium,一個具有本機二進位依賴項且僅支持頁面級別文字擷取的解決方案,轉變為一個全面的PDF解決方案,能夠處理建立、操作、完整文字擷取和跨所有.NET應用程式型別的渲染。本指南提供了完整的逐步遷移路徑,消除了平台限制,同時新增了PdfiumViewer從未設計提供的功能。

為何從PdfiumViewer遷移到IronPDF

了解PdfiumViewer

PdfiumViewer(NuGet包PdfiumViewer,repo pvginkel/PdfiumViewer,Apache 2.0)是Google PDFium渲染引擎的.NET包裝器—相同的引擎用於Chrome—為Windows Forms應用程式公開PDF查看和光柵化。

PdfiumViewer是一個查看器和渲染器,而不是生成器。 它不支持PDF建立、編輯或操作,其文字API(PdfDocument.GetPdfText(int page))返回未經排版的頁面原始文字。 上游儲存庫於2019年8月2日被其維護人封存,最後的NuGet發布(2.13.0)於2017年11月6日發行—現有程式碼仍然有效,但不再有任何修補、.NET 6+更新或CVE修正。

PdfiumViewer的關鍵限制

  1. 僅限查看器/渲染器: 無法從HTML、圖像或程式化生成PDF。 PdfiumViewer的功能僅限於查看和光柵化—它不支持PDF建立、編輯、合併或其他操作功能。

  2. 僅支持Windows Forms / Windows: 建立在System.Drawing和WinForms控制上; 不適合其他UI框架,且System.Drawing.Common在.NET 6+上僅限Windows使用。

  3. 無法操作PDF: 無法合併、分割或修改PDF內容。

  4. 本機二進位依賴項: 需要透過PdfiumViewer.Native.x86_64.v8-xfa提供平台特定的PDFium二進位(或無V8 /無XFA變體)。

  5. 上游已封存: 儲存庫於2019年8月2日封存; 最後的NuGet發布2.13.0(2017年11月6日); 不再有更新。

  6. 僅支持頁面級別文字擷取: PdfDocument.GetPdfText(int page)返回未經排版的頁面原始文字—無逐字座標、無排列重建,且無法對僅圖片的PDF進行OCR。

  7. 無HTML轉PDF: PDFium不解析HTML。 要生成HTML的PDF,您需要一個單獨的生成器(wkhtmltopdf,IronPDF,PuppeteerSharp等),然後可以使用PdfiumViewer載入結果進行顯示或光柵化。

  8. 無頁眉/頁腳: 無法新增頁碼或重複內容。

  9. 無浮水印: 無法在文件上加蓋疊加標記。

  10. 無安全功能: 無法加密或使用密碼保護PDF。

PdfiumViewer vsIronPDF比較

方面 PdfiumViewer IronPDF
主要重點 WinForms PDF查看器 完整的PDF解決方案
授權 Apache 2.0 商業
PDF建立 ✓ (HTML, URL, 圖像)
PDF 操作 ✓ (合併, 分割, 編輯)
HTML 到 PDF ✓ (Chromium引擎)
文字提取 僅限頁面級別(GetPdfText 完整(具有版面,逐頁)
水印
頁首/頁尾
安全性
內建查看器 ✗ (專注於後端)
平台支持 僅限Windows / WinForms 控制台,網頁,桌面,跨平台
框架支持 .NET Framework 2.0+ .NET Framework,Core,5+
維護 2019年8月2日封存(最後發布2017年11月6日) 活躍

針對現代.NET的團隊,IronPDF提供了一個全面、積極維護的基礎,能夠支持所有.NET應用程式型別,消除了Windows Forms的限制和本機二進制的複雜性。


開始之前

前提條件

  1. .NET環境:.NET Framework 4.6.2+ 或.NET Core 3.1+ / .NET 5/6/7/8/9+
  2. NuGet存取: 有能力安裝NuGet套件
  3. IronPDF授權:ironpdf.com獲取您的授權金鑰

NuGet包變更

# Remove PdfiumViewer packages
dotnet remove package PdfiumViewer
dotnet remove package PdfiumViewer.Native.x86.v8-xfa
dotnet remove package PdfiumViewer.Native.x86_64.v8-xfa

# Install IronPDF
dotnet add package IronPdf
# Remove PdfiumViewer packages
dotnet remove package PdfiumViewer
dotnet remove package PdfiumViewer.Native.x86.v8-xfa
dotnet remove package PdfiumViewer.Native.x86_64.v8-xfa

# Install IronPDF
dotnet add package IronPdf
SHELL

授權配置

// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
' Add at application startup (Program.vb or Startup.vb)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
$vbLabelText   $csharpLabel

識別PdfiumViewer的使用

# Find PdfiumViewer usage
grep -r "PdfiumViewer\|PdfViewer\|PdfDocument\.Load" --include="*.cs" .

# Find native binary references
grep -r "pdfium\.dll\|Native\.x86\|Native\.x64" --include="*.csproj" .

# Find viewer control usage
grep -r "PdfViewer" --include="*.cs" --include="*.Designer.cs" .
# Find PdfiumViewer usage
grep -r "PdfiumViewer\|PdfViewer\|PdfDocument\.Load" --include="*.cs" .

# Find native binary references
grep -r "pdfium\.dll\|Native\.x86\|Native\.x64" --include="*.csproj" .

# Find viewer control usage
grep -r "PdfViewer" --include="*.cs" --include="*.Designer.cs" .
SHELL

完整API參考

名稱空間變更

// PdfiumViewer
using PdfiumViewer;

// IronPDF
using IronPdf;
using IronPdf.Rendering;
using IronPdf.Editing;
// PdfiumViewer
using PdfiumViewer;

// IronPDF
using IronPdf;
using IronPdf.Rendering;
using IronPdf.Editing;
Imports PdfiumViewer

Imports IronPdf
Imports IronPdf.Rendering
Imports IronPdf.Editing
$vbLabelText   $csharpLabel

核心類別映射

PdfiumViewer IronPDF
PdfDocument PdfDocument
PdfViewer (無等價物)
PdfRenderer ChromePdfRenderer
(不可用) HtmlHeaderFooter

文件載入映射

PdfiumViewer IronPDF
PdfDocument.Load(path) PdfDocument.FromFile(path)
PdfDocument.Load(stream) PdfDocument.FromStream(stream)
PdfDocument.Load(path, password) PdfDocument.FromFile(path, password)
(無字節重載—包裝在MemoryStream中) PdfDocument.FromBinaryData(bytes)

文件屬性對應

PdfiumViewer IronPDF
document.PageCount document.PageCount
document.PageSizes[i] document.Pages[i].Width/Height
document.GetPdfText(pageIndex) pdf.Pages[pageIndex].Text

頁面渲染映射

PdfiumViewer IronPDF
document.Render(pageIndex, dpiX, dpiY, forPrinting) pdf.ToBitmap(pageIndex)
document.Render(pageIndex, width, height, dpiX, dpiY, flags) pdf.RasterizeToImageFiles(path, dpi)

儲存文件映射

PdfiumViewer IronPDF
document.Save(path) pdf.SaveAs(path)
document.Save(stream) new MemoryStream(pdf.BinaryData)
(不可用) byte[]

新增或擴展功能與PdfiumViewer

IronPDF功能 說明
pdf.ExtractAllText() 整個文件的文字提取(PdfiumViewer僅提供頁面級別GetPdfText
pdf.ExtractTextFromPage(index) 從特定頁提取文字
ChromePdfRenderer.RenderHtmlAsPdf() 從HTML建立
ChromePdfRenderer.RenderUrlAsPdf() 從URL建立
PdfDocument.Merge() 合併PDF
pdf.CopyPages() 提取頁面
pdf.RemovePages() 刪除頁面
pdf.ApplyWatermark() 新增水印
pdf.AddHtmlHeaders() 新增頁首
pdf.AddHtmlFooters() 新增頁尾
pdf.SecuritySettings 密碼保護
pdf.Form 表單填寫

程式碼遷移範例

範例1:從PDF中提取文字

之前(PdfiumViewer):

// NuGet: Install-Package PdfiumViewer
//        Install-Package PdfiumViewer.Native.x86.v8-xfa
//        Install-Package PdfiumViewer.Native.x86_64.v8-xfa
using PdfiumViewer;
using System;
using System.Text;

string pdfPath = "document.pdf";

// PdfiumViewer exposes page-level text extraction via
// PdfDocument.GetPdfText(int page). It returns raw page text only —
// no layout, no per-word coordinates, no OCR for image-only pages.
using (var document = PdfDocument.Load(pdfPath))
{
    int pageCount = document.PageCount;
    Console.WriteLine($"Total pages: {pageCount}");

    var sb = new StringBuilder();
    for (int i = 0; i < pageCount; i++)
    {
        string pageText = document.GetPdfText(i);
        sb.AppendLine($"--- Page {i + 1} ---");
        sb.AppendLine(pageText);
    }

    Console.WriteLine(sb.ToString());
}
// NuGet: Install-Package PdfiumViewer
//        Install-Package PdfiumViewer.Native.x86.v8-xfa
//        Install-Package PdfiumViewer.Native.x86_64.v8-xfa
using PdfiumViewer;
using System;
using System.Text;

string pdfPath = "document.pdf";

// PdfiumViewer exposes page-level text extraction via
// PdfDocument.GetPdfText(int page). It returns raw page text only —
// no layout, no per-word coordinates, no OCR for image-only pages.
using (var document = PdfDocument.Load(pdfPath))
{
    int pageCount = document.PageCount;
    Console.WriteLine($"Total pages: {pageCount}");

    var sb = new StringBuilder();
    for (int i = 0; i < pageCount; i++)
    {
        string pageText = document.GetPdfText(i);
        sb.AppendLine($"--- Page {i + 1} ---");
        sb.AppendLine(pageText);
    }

    Console.WriteLine(sb.ToString());
}
Imports PdfiumViewer
Imports System
Imports System.Text

Dim pdfPath As String = "document.pdf"

' PdfiumViewer exposes page-level text extraction via
' PdfDocument.GetPdfText(int page). It returns raw page text only —
' no layout, no per-word coordinates, no OCR for image-only pages.
Using document As PdfDocument = PdfDocument.Load(pdfPath)
    Dim pageCount As Integer = document.PageCount
    Console.WriteLine($"Total pages: {pageCount}")

    Dim sb As New StringBuilder()
    For i As Integer = 0 To pageCount - 1
        Dim pageText As String = document.GetPdfText(i)
        sb.AppendLine($"--- Page {i + 1} ---")
        sb.AppendLine(pageText)
    Next

    Console.WriteLine(sb.ToString())
End Using
$vbLabelText   $csharpLabel

之後(IronPDF):

// 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}");
// 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}");
Imports IronPdf
Imports System

Module Program
    Sub Main()
        Dim pdfPath As String = "document.pdf"

        ' Open and extract text from PDF
        Dim pdf As PdfDocument = PdfDocument.FromFile(pdfPath)

        ' Extract text from all pages
        Dim allText As String = pdf.ExtractAllText()
        Console.WriteLine("Extracted Text:")
        Console.WriteLine(allText)

        ' Extract text from specific page
        Dim pageText As String = pdf.ExtractTextFromPage(0)
        Console.WriteLine(vbCrLf & "First page text: " & pageText)

        Console.WriteLine(vbCrLf & "Total pages: " & pdf.PageCount)
    End Sub
End Module
$vbLabelText   $csharpLabel

PdfiumViewer的文字API是PdfDocument.GetPdfText(int page)—僅限頁面級原始文字,無版面重建,無逐字座標,無針對僅圖像PDF的OCR回退。 任何超出平面文字轉儲的操作,需要自訂的版面啟發或不同的程式庫。

IronPDF透過pdf.Pages[index].Text)提供逐頁提取。 查看文字提取文件以獲取更多選擇。

範例2:HTML到PDF轉換

之前(PdfiumViewer):

// NuGet: Install-Package PdfiumViewer
using PdfiumViewer;
using System;

// PdfiumViewer wraps Google's PDFium — a renderer, not a generator.
// PDFium does not parse HTML, so PdfiumViewer has no HTML-to-PDF path.
// To produce a PDF from HTML you need a separate generator (wkhtmltopdf,
// IronPDF, PuppeteerSharp, etc.), then load the result with PdfiumViewer
// for display or rasterization.

string htmlContent = "<h1>Hello World</h1><p>This is a test document.</p>";

// Pretend "output.pdf" was produced by another tool — load and render it.
string existingPdfPath = "output.pdf";
using (var document = PdfDocument.Load(existingPdfPath))
{
    Console.WriteLine($"Loaded PDF with {document.PageCount} page(s).");

    // PdfDocument.Render(int page, float dpiX, float dpiY, bool forPrinting)
    var image = document.Render(0, 300, 300, true);
    Console.WriteLine("Rendered page 1 at 300 DPI.");
}
// NuGet: Install-Package PdfiumViewer
using PdfiumViewer;
using System;

// PdfiumViewer wraps Google's PDFium — a renderer, not a generator.
// PDFium does not parse HTML, so PdfiumViewer has no HTML-to-PDF path.
// To produce a PDF from HTML you need a separate generator (wkhtmltopdf,
// IronPDF, PuppeteerSharp, etc.), then load the result with PdfiumViewer
// for display or rasterization.

string htmlContent = "<h1>Hello World</h1><p>This is a test document.</p>";

// Pretend "output.pdf" was produced by another tool — load and render it.
string existingPdfPath = "output.pdf";
using (var document = PdfDocument.Load(existingPdfPath))
{
    Console.WriteLine($"Loaded PDF with {document.PageCount} page(s).");

    // PdfDocument.Render(int page, float dpiX, float dpiY, bool forPrinting)
    var image = document.Render(0, 300, 300, true);
    Console.WriteLine("Rendered page 1 at 300 DPI.");
}
Imports PdfiumViewer
Imports System

' PdfiumViewer wraps Google's PDFium — a renderer, not a generator.
' PDFium does not parse HTML, so PdfiumViewer has no HTML-to-PDF path.
' To produce a PDF from HTML you need a separate generator (wkhtmltopdf,
' IronPDF, PuppeteerSharp, etc.), then load the result with PdfiumViewer
' for display or rasterization.

Dim htmlContent As String = "<h1>Hello World</h1><p>This is a test document.</p>"

' Pretend "output.pdf" was produced by another tool — load and render it.
Dim existingPdfPath As String = "output.pdf"
Using document As PdfDocument = PdfDocument.Load(existingPdfPath)
    Console.WriteLine($"Loaded PDF with {document.PageCount} page(s).")

    ' PdfDocument.Render(int page, float dpiX, float dpiY, bool forPrinting)
    Dim image = document.Render(0, 300, 300, True)
    Console.WriteLine("Rendered page 1 at 300 DPI.")
End Using
$vbLabelText   $csharpLabel

之後(IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

string htmlContent = "<h1>Hello World</h1><p>This is a test document.</p>";

// 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!");
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

string htmlContent = "<h1>Hello World</h1><p>This is a test document.</p>";

// 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!");
Imports IronPdf
Imports System

Module Program
    Sub Main()
        Dim htmlContent As String = "<h1>Hello World</h1><p>This is a test document.</p>"

        ' Create a PDF from HTML string
        Dim renderer As New ChromePdfRenderer()
        Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(htmlContent)

        ' Save the PDF
        pdf.SaveAs("output.pdf")

        Console.WriteLine("PDF created successfully!")
    End Sub
End Module
$vbLabelText   $csharpLabel

這是最大的功能缺口。PDFium不解析HTML,因此PdfiumViewer沒有HTML到PDF路徑——您需要先使用其他工具生成PDF,然後使用PdfiumViewer進行顯示或光柵化。

IronPDF透過ChromePdfRenderer提供本機HTML到PDF轉換,其內部使用Chromium引擎進行HTML、CSS和JavaScript的渲染。 RenderHtmlFileAsPdf()讀取HTML文件。 查看更多HTML到PDF文件以獲得完整的範例。

範例3:PDF到圖像轉換

之前(PdfiumViewer):

// 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);
        }
    }
}
// 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);
        }
    }
}
Imports PdfiumViewer
Imports System
Imports System.Drawing
Imports System.Drawing.Imaging

Module Module1
    Sub Main()
        Dim pdfPath As String = "document.pdf"
        Dim outputImage As String = "page1.png"

        ' PDFiumViewer excels at rendering PDFs to images
        Using document = PdfDocument.Load(pdfPath)
            ' Render first page at 300 DPI
            Dim dpi As Integer = 300
            Using image = document.Render(0, dpi, dpi, True)
                ' Save as PNG
                image.Save(outputImage, ImageFormat.Png)
                Console.WriteLine($"Page rendered to {outputImage}")
            End Using

            ' Render all pages
            For i As Integer = 0 To document.PageCount - 1
                Using pageImage = document.Render(i, 150, 150, True)
                    pageImage.Save($"page_{i + 1}.png", ImageFormat.Png)
                End Using
            Next
        End Using
    End Sub
End Module
$vbLabelText   $csharpLabel

之後(IronPDF):

// 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}");
// 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}");
Imports IronPdf
Imports System
Imports System.Linq

Module Module1
    Sub Main()
        Dim pdfPath As String = "document.pdf"
        Dim outputImage As String = "page1.png"

        ' Open PDF and convert to images
        Dim pdf As PdfDocument = PdfDocument.FromFile(pdfPath)

        ' Convert first page to image
        Dim firstPageImage = pdf.ToBitmap(0)
        firstPageImage(0).Save(outputImage)
        Console.WriteLine($"Page rendered to {outputImage}")

        ' Convert all pages to images
        Dim allPageImages = pdf.ToBitmap()
        For i As Integer = 0 To allPageImages.Length - 1
            allPageImages(i).Save($"page_{i + 1}.png")
            Console.WriteLine($"Saved page {i + 1}")
        Next

        Console.WriteLine($"Total pages converted: {pdf.PageCount}")
    End Sub
End Module
$vbLabelText   $csharpLabel

這是PdfiumViewer擅長的一個區域—PDF到圖像的渲染是其主要強項。 兩個程式庫都有效地處理此任務,但模式不同。

PdfiumViewer使用using語句進行適當的釋放。 您需要匯入ImageFormat枚舉。

IronPDF使用pdf.ToBitmap(pageIndex)返回位圖陣列。 模式更簡單,無巢狀釋放需求。 批量操作時,無參數的ToBitmap()返回所有頁面。 您還可以使用RasterizeToImageFiles()直接輸出文件。 請參閱PDF到圖像文件說明以獲取其他渲染選項。


取消本機依賴

從PdfiumViewer遷移到IronPDF的一個重要好處是消除了本機二進位管理。

之前(PdfiumViewer) - 複雜的部署

MyApp/
├── bin/
│   ├── MyApp.dll
│   ├── PdfiumViewer.dll
│   ├── x86/
│   │   └── pdfium.dll
│   └── x64/
│       └── pdfium.dll

之後(IronPDF)- 清晰的部署

MyApp/
├── bin/
│   ├── MyApp.dll
│   └── IronPdf.dll  # 包含所有內容

取消本機二進制引用

# Delete native PDFium binaries
rm -rf x86/x64/runtimes/

# Remove from .csproj native package references
# <PackageReference Include="PdfiumViewer.Native.x86.v8-xfa" />
# <PackageReference Include="PdfiumViewer.Native.x64.v8-xfa" />
# Delete native PDFium binaries
rm -rf x86/x64/runtimes/

# Remove from .csproj native package references
# <PackageReference Include="PdfiumViewer.Native.x86.v8-xfa" />
# <PackageReference Include="PdfiumViewer.Native.x64.v8-xfa" />
SHELL

關鍵遷移注意事項

無內建的查看器控制

IronPDF專注於後端,不包括視覺PDF查看器控制:

// PdfiumViewer: Built-in viewer control
pdfViewer.Document = document;

// IronPDF: Use external viewer or web-based approach
pdf.SaveAs(tempPath);
Process.Start(new ProcessStartInfo(tempPath) { UseShellExecute = true });
// PdfiumViewer: Built-in viewer control
pdfViewer.Document = document;

// IronPDF: Use external viewer or web-based approach
pdf.SaveAs(tempPath);
Process.Start(new ProcessStartInfo(tempPath) { UseShellExecute = true });
' PdfiumViewer: Built-in viewer control
pdfViewer.Document = document

' IronPDF: Use external viewer or web-based approach
pdf.SaveAs(tempPath)
Process.Start(New ProcessStartInfo(tempPath) With {.UseShellExecute = True})
$vbLabelText   $csharpLabel

對於查看需求,考慮使用Process.Start()在預設的PDF查看器中打開,WebBrowser控制帶有PDF路徑或第三方查看器控制,例如Syncfusion、DevExpress或Telerik。

文件載入方法更改

// PdfiumViewer
PdfDocument.Load(path)

// IronPDF
PdfDocument.FromFile(path)
// PdfiumViewer
PdfDocument.Load(path)

// IronPDF
PdfDocument.FromFile(path)
' PdfiumViewer
PdfDocument.Load(path)

' IronPDF
PdfDocument.FromFile(path)
$vbLabelText   $csharpLabel

保存方法更改

// PdfiumViewer
document.Save(path)

// IronPDF
pdf.SaveAs(path)
// PdfiumViewer
document.Save(path)

// IronPDF
pdf.SaveAs(path)
$vbLabelText   $csharpLabel

渲染方法變更

// PdfiumViewer: Returns image with nested using
using (var image = document.Render(0, 150, 150, true))
{
    image.Save("page.png", ImageFormat.Png);
}

// IronPDF: Returns bitmap array
var images = pdf.ToBitmap(0);
images[0].Save("page.png");
// PdfiumViewer: Returns image with nested using
using (var image = document.Render(0, 150, 150, true))
{
    image.Save("page.png", ImageFormat.Png);
}

// IronPDF: Returns bitmap array
var images = pdf.ToBitmap(0);
images[0].Save("page.png");
Imports System.Drawing.Imaging

' PdfiumViewer: Returns image with nested using
Using image = document.Render(0, 150, 150, True)
    image.Save("page.png", ImageFormat.Png)
End Using

' IronPDF: Returns bitmap array
Dim images = pdf.ToBitmap(0)
images(0).Save("page.png")
$vbLabelText   $csharpLabel

頁面大小存取變更

// PdfiumViewer
var size = document.PageSizes[index];
Console.WriteLine($"{size.Width} x {size.Height}");

// IronPDF
var page = pdf.Pages[index];
Console.WriteLine($"{page.Width} x {page.Height}");
// PdfiumViewer
var size = document.PageSizes[index];
Console.WriteLine($"{size.Width} x {size.Height}");

// IronPDF
var page = pdf.Pages[index];
Console.WriteLine($"{page.Width} x {page.Height}");
' PdfiumViewer
Dim size = document.PageSizes(index)
Console.WriteLine($"{size.Width} x {size.Height}")

' IronPDF
Dim page = pdf.Pages(index)
Console.WriteLine($"{page.Width} x {page.Height}")
$vbLabelText   $csharpLabel

功能比較總結

功能 PdfiumViewer IronPDF
載入PDF
渲染到圖像
內建查看器
列印PDF
提取文字 頁面級(GetPdfText 完整(ExtractAllText,逐頁)
從HTML建立
從URL建立
合併PDF
拆分PDF
新增水印
頁眉/頁腳
表單填寫
密碼保護
WinForms支持
ASP.NET支持
.NET Core支持 有限(System.Drawing綁定Windows)
積極維護 2019年8月2日封存

遷移檢查表

遷移前

  • 識別程式碼庫中所有PdfiumViewer的使用
  • 列出使用PdfViewer控制的WinForms
  • 文件當前渲染DPI設定
  • 檢查本機二進位引用
  • 識別列印功能的使用
  • 計畫查看器控制的替代策略
  • 獲得IronPDF授權金鑰

套件變更

  • 移除PdfiumViewerNuGet包
  • 移除PdfiumViewer.Native.x86.v8-xfa
  • 移除PdfiumViewer.Native.x86_64.v8-xfa
  • 從x86/和x64/文件夾刪除本機pdfium.dll二進位
  • 安裝dotnet add package IronPdf

程式碼變更

  • 在啟動時加入授權金鑰配置
  • PdfDocument.Load()
  • document.Save()
  • document.Render()
  • document.PageSizes[i]
  • 使用外部查看器或Process.Start()替換PdfViewer控制
  • 新增新功能(文字提取,HTML到PDF等)

遷移後

  • 測試渲染輸出質量
  • 測試列印功能
  • 測試目標平台
  • 增加新功能(HTML到PDF,合併,浮水印,安全性)
  • 更新文件

請注意PdfiumViewer、PDFium、Chromium、DevExpress、Syncfusion、Telerik和wkhtmltopdf是各自所有者的商標。 本網站與Pieter van Ginkel,Chromium Project,Google,DevExpress,Syncfusion,Progress Software或wkhtmltopdf專案沒有關聯、認可或贊助。 所有產品名稱、標誌和品牌均為其各自所有者的財產。 比較僅供參考,反映撰寫時公開可用的資訊。

Curtis Chau
技術作家

Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。

除了開發,Curtis對物聯網(IoT)有濃厚的興趣,探索創新的方法來整合硬體和軟體。在空閒時間,他喜歡玩遊戲和建立Discord機器人,結合他對技術的熱愛與創造力。

Iron 支援團隊

我們線上24小時,每週5天。
聊天
電子郵件
給我打電話