Comment migrer de PdfiumViewer à IronPDF en C#
Migrer de PdfiumViewervers IronPDF déplace votre flux de travail .NET PDF d'un visualiseur/render wrap autour de PDFium de Google — avec des dépendances binaires natives et seule extraction de texte par page — vers une solution PDF complète qui gère la création, manipulation, extraction de texte complète et rendu à travers tous les types d'application .NET. Ce guide fournit un chemin de migration complet, étape par étape, qui élimine les restrictions de plateforme tout en ajoutant des capacités que PdfiumViewern'a jamais été conçu pour fournir.
Pourquoi migrer de PdfiumViewerà IronPDF
Comprendre PdfiumViewer
PdfiumViewer (package NuGet PdfiumViewer, dépôt pvginkel/PdfiumViewer, Apache 2.0) est un wrapper .NET autour du moteur de rendu PDFium de Google — le même moteur utilisé dans Chrome — exposant la visualisation et la trame de PDF pour les applications Windows Forms.
PdfiumViewer est un visualiseur et un render, pas un générateur. Il ne prend pas en charge la création, l'édition ou la manipulation de PDF, et son API de texte (PdfDocument.GetPdfText(int page)) renvoie le texte brut de page sans disposition ni coordonnées par mot. Le dépôt amont a été archivé par son mainteneur le 2 août 2019 et la dernière publication NuGet (2.13.0) a été expédiée le 6 novembre 2017 — le code existant continue de fonctionner, mais il n'y a plus de correctifs futurs, de mises à jour .NET 6+, ou de correctifs CVE à venir.
Limitations critiques de PdfiumViewer
-
Visualiseur / render uniquement : Impossible de créer des PDF à partir de HTML, d'images, ou de manière programmatique. Les capacités de PdfiumViewerse limitent à la visualisation et la rasterisation — il ne supporte pas la création, l'édition, la fusion de PDF ni d'autres fonctions manipulatices.
-
Windows Forms / Windows uniquement : Construit autour de
System.Drawinget des contrôles WinForms ; non conçu pour d'autres frameworks d'interface utilisateur, etSystem.Drawing.Commonest uniquement compatible Windows sur .NET 6+. -
Pas de manipulation PDF : Impossible de fusionner, diviser ou modifier le contenu PDF.
-
Dépendances binaires natives : Nécessite des binaires PDFium spécifiques à la plateforme via
PdfiumViewer.Native.x86.v8-xfaetPdfiumViewer.Native.x86_64.v8-xfa(ou les variantes sans V8 / sans XFA). -
Archivé amont : Dépôt archivé le 2019-08-02; dernière publication NuGet 2.13.0 (2017-11-06); pas de nouvelles mises à jour.
-
Extraction de texte au niveau des pages uniquement :
PdfDocument.GetPdfText(int page)renvoie le texte brut de page - pas de coordonnées par mot, pas de reconstruction de mise en page, et pas d'OCR pour les PDF uniquement image. -
Pas de HTML vers PDF : PDFium ne parse pas HTML. Pour produire un PDF à partir de HTML vous avez besoin d'un générateur séparé (wkhtmltopdf, IronPDF, PuppeteerSharp, etc.) et pouvez alors charger le résultat avec PdfiumViewerpour l'afficher ou le rastériser.
-
Pas d'en-têtes/pieds de page : Impossible d'ajouter des numéros de page ou du contenu répétitif.
-
Pas de filigranes : Impossible de tamponner des documents avec des superpositions.
- Pas de fonctionnalités de sécurité : Impossible de crypter ou de protéger par mot de passe les PDFs.
Comparaison PdfiumViewervs IronPDF
| Aspect | PdfiumViewer | IronPDF |
|---|---|---|
| Accent principal | Visionneuse PDF WinForms | Solution PDF complète |
| Licence | Apache 2.0 | Commercial |
| Création de PDF | ✗ | ✓(HTML, URL, images) |
| Manipulation de PDF | ✗ | ✓(fusionner, diviser, éditer) |
| HTML à PDF | ✗ | ✓(moteur Chromium) |
| Extraction de texte | Extraction par pages uniquement (GetPdfText) |
Complet (avec mise en page, par page) |
| Marqueurs d'eau | ✗ | ✓ |
| En-têtes/Pieds de page | ✗ | ✓ |
| Sécurité | ✗ | ✓ |
| Visionneuse intégrée | ✓ | ✗(axé sur le backend) |
| Support de la plateforme | Windows / WinForms uniquement | Console, Web, Bureau, multiplateforme |
| Soutien au cadre de travail | .NET Framework 2.0+ | .NET Framework, Core, 5+ |
| Maintenance | Archivé le 2019-08-02 (dernière version 2017-11-06) | Actif |
Pour les équipes visant le .NET moderne,IronPDF fournit une base complète et maintenue activement qui fonctionne à travers tous les types d'applications .NET, éliminant la restriction Windows Forms et la complexité des binaires natifs.
Avant de commencer
Prérequis
- Environnement .NET : .NET Framework 4.6.2+ ou .NET Core 3.1+ / .NET 5/6/7/8/9+
- Accès à NuGet : possibilité d'installer des packages NuGet
- Licence IronPDF : Obtenez votre clé de licence sur IronPDF
Modifications du paquet NuGet
# Remove PdfiumViewerpackages
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 PdfiumViewerpackages
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
Configuration de la licence
// 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"
Identifier l'utilisation de PdfiumViewer
# Find PdfiumViewerusage
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 PdfiumViewerusage
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" .
Référence API complète
Modifications de l'espace de nommage
// 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
Mappages de classes de base
| PdfiumViewer | IronPDF |
|---|---|
PdfDocument |
PdfDocument |
PdfViewer |
(pas d'équivalent)(pas d'équivalent)(pas d'équivalent)_(pas d'équivalent) |
PdfRenderer |
ChromePdfRenderer |
| (non disponible) | HtmlHeaderFooter |
Mappages de chargement de documents
| PdfiumViewer | IronPDF |
|---|---|
PdfDocument.Load(path) |
PdfDocument.FromFile(path) |
PdfDocument.Load(stream) |
PdfDocument.FromStream(stream) |
PdfDocument.Load(path, password) |
PdfDocument.FromFile(path, password) |
| (aucune surcharge d'octets — envelopper dans MemoryStream) | PdfDocument.FromBinaryData(bytes) |
Mappages de propriétés de documents
| PdfiumViewer | IronPDF |
|---|---|
document.PageCount |
document.PageCount |
document.PageSizes[i] |
document.Pages[i].Width/Height |
document.GetPdfText(pageIndex) |
pdf.Pages[pageIndex].Text |
Mappages de rendu de page
| PdfiumViewer | IronPDF |
|---|---|
document.Render(pageIndex, dpiX, dpiY, forPrinting) |
pdf.ToBitmap(pageIndex) |
document.Render(pageIndex, width, height, dpiX, dpiY, flags) |
pdf.RasterizeToImageFiles(path, dpi) |
Enregistrement des documents Mappings
| PdfiumViewer | IronPDF |
|---|---|
document.Save(path) |
pdf.SaveAs(path) |
document.Save(stream) |
new MemoryStream(pdf.BinaryData) |
| (non disponible) | pdf.BinaryData (renvoie byte[]) |
Nouvelles fonctionnalités ou caractéristiques substantiellement étendues par rapport à PdfiumViewer
| Fonctionnalité d'IronPDF | Description du projet |
|---|---|
pdf.ExtractAllText() |
Extraction de texte de document entier (PdfiumViewer offre une extraction au niveau des pages GetPdfText uniquement) |
pdf.ExtractTextFromPage(index) |
Extraire le texte d'une page spécifique |
ChromePdfRenderer.RenderHtmlAsPdf() |
Créer à partir de HTML |
ChromePdfRenderer.RenderUrlAsPdf() |
Créer à partir d'une URL |
PdfDocument.Merge() |
Combiner des PDF |
pdf.CopyPages() |
Extraire des pages |
pdf.RemovePages() |
Supprimer des pages |
pdf.ApplyWatermark() |
Ajouter des filigranes |
pdf.AddHtmlHeaders() |
Ajouter des en-têtes |
pdf.AddHtmlFooters() |
Ajouter des pieds de page |
pdf.SecuritySettings |
Protection par mot de passe |
pdf.Form |
Remplissage de formulaires |
Exemples de migration de code
Exemple 1 : Extraction de texte à partir d'un PDF
Avant (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";
// PdfiumViewerexposes 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";
// PdfiumViewerexposes 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
Après (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
L'API de texte de PdfiumViewerest PdfDocument.GetPdfText(int page) — texte brut au niveau des pages uniquement, pas de reconstruction de mise en page, pas de coordonnées par mot, et pas de repli OCR pour les PDF uniquement image. Tout ce qui va au-delà d'un dump de texte plat nécessite soit des heuristiques de mise en page personnalisées, soit une bibliothèque différente.
IronPDF fournit une extraction complète de document via ExtractAllText() et une extraction par page via ExtractTextFromPage(index) (ou pdf.Pages[index].Text). Consultez la documentation sur l'extraction de texte pour connaître les options supplémentaires.
Exemple 2 : Conversion de HTML en PDF
Avant (PdfiumViewer):
// NuGet: Install-Package PdfiumViewer
using PdfiumViewer;
using System;
// PdfiumViewerwraps Google's PDFium — a renderer, not a generator.
// PDFium does not parse HTML, so PdfiumViewerhas 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;
// PdfiumViewerwraps Google's PDFium — a renderer, not a generator.
// PDFium does not parse HTML, so PdfiumViewerhas 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
Après (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
Ceci est le plus grand écart de capacité. PDFium ne parse pas HTML, donc PdfiumViewern'a pas de chemin de HTML à PDF — vous généreriez le PDF avec un autre outil d'abord puis utiliseriez PdfiumViewerpour l'afficher ou le rastériser.
IronPDF offre une conversion native HTML en PDF via ChromePdfRenderer, qui utilise un moteur Chromium en interne pour le rendu HTML, CSS et JavaScript. RenderHtmlAsPdf() convertit des chaînes HTML, RenderUrlAsPdf() capture des URLs, et RenderHtmlFileAsPdf() lit des fichiers HTML. Consultez la documentation HTML vers PDF pour des exemples complets.
Exemple 3 : Conversion de PDF en images
Avant (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
Après (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
C'est un domaine dans lequel PdfiumViewerexcelle - le rendu des PDF en images est sa principale force. Les deux bibliothèques s'acquittent efficacement de cette tâche, mais selon des schémas différents.
PdfiumViewer utilise document.Render(pageIndex, dpiX, dpiY, forPrinting) avec des instructions imbriquées using pour une gestion appropriée. Vous devez importer System.Drawing et System.Drawing.Imaging pour l'énum ImageFormat.
IronPDF utilise pdf.ToBitmap(pageIndex) qui renvoie un tableau de bitmaps. Le modèle est plus simple, sans exigences d'élimination imbriquées. Pour les opérations par lots, ToBitmap() sans paramètres renvoie toutes les pages. Vous pouvez également utiliser RasterizeToImageFiles() pour une sortie de fichier directe. Voir la documentation sur le passage du PDF à l'image pour des options de rendu supplémentaires.
Suppression des dépendances natives
L'un des avantages significatifs de la migration de PdfiumViewervers IronPDF est l'élimination de la gestion des binaires natifs.
Avant (PdfiumViewer) - Déploiement complexe
MyApp/
├── bin/
│ ├─── MyApp.dll
│ ├── PdfiumViewer.dll
│ ├── x86/
│ │ └── pdfium.dll
│ └── x64/
│ └── pdfium.dll
Après (IronPDF) - Déploiement propre
MyApp/
├── bin/
│ ├─── MyApp.dll
│ └── IronPDF.dll # Everything included
Supprimer les références binaires natives
# 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" />
Notes de migration essentielles
Aucune commande de visualisation intégrée
IronPDF est axé sur le backend et n'inclut pas de contrôle visuel de visualisation des 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})
Pour les besoins de visualisation, envisagez d'utiliser Process.Start() pour ouvrir dans le visualiseur PDF par défaut, un contrôle WebBrowser avec le chemin PDF, ou des contrôles de visualisation tiers comme Syncfusion, DevExpress, ou Telerik.
Modification de la méthode de chargement des documents
// PdfiumViewer
PdfDocument.Load(path)
// IronPDF
PdfDocument.FromFile(path)
// PdfiumViewer
PdfDocument.Load(path)
// IronPDF
PdfDocument.FromFile(path)
' PdfiumViewer
PdfDocument.Load(path)
' IronPDF
PdfDocument.FromFile(path)
Enregistrer le changement de méthode
// PdfiumViewer
document.Save(path)
// IronPDF
pdf.SaveAs(path)
// PdfiumViewer
document.Save(path)
// IronPDF
pdf.SaveAs(path)
Modification de la méthode de rendu
// 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")
Modification de la taille de la page
// 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}")
Résumé de la comparaison des fonctionnalités
| Fonction | PdfiumViewer | IronPDF |
|---|---|---|
| Charger le PDF | ✓ | ✓ |
| Rendu à l'image | ✓ | ✓ |
| Visionneuse intégrée | ✓ | ✗ |
| Imprimer le PDF | ✓ | ✓ |
| Extraire le texte | Niveau de la page (GetPdfText) |
Complet (ExtractAllText, par page) |
| Créer à partir de HTML | ✗ | ✓ |
| Créer à partir d'une URL | ✗ | ✓ |
| Fusionner des PDF | ✗ | ✓ |
| Diviser les PDF | ✗ | ✓ |
| Ajouter des filigranes | ✗ | ✓ |
| En-têtes/Pieds de page | ✗ | ✓ |
| Remplissage de formulaires | ✗ | ✓ |
| Protection par mot de passe | ✗ | ✓ |
| Support WinForms | ✓ | ✓ |
| Support ASP.NET | ✗ | ✓ |
| prise en charge de .NET Core | Limité (System.Drawing lié à Windows) | ✓ |
| Maintenance active | Archivé le 2019-08-02 | ✓ |
Liste de contrôle de la migration
Pré-migration
- Identifier toutes les utilisations de PdfiumViewerdans le code source
- Lister les formulaires WinForms à l'aide du contrôle PdfViewer
- Paramètres DPI de rendu actuels du document
- Vérifier les références binaires natives
- Identifier l'utilisation des fonctionnalités d'impression
- Stratégie de remplacement des commandes du visualiseur de plans
- Obtenir une clé de licence IronPDF
Modifications du paquet
- Supprimer le package NuGet
PdfiumViewer - Supprimer le package
PdfiumViewer.Native.x86.v8-xfa - Supprimer le package
PdfiumViewer.Native.x86_64.v8-xfa - Supprimez les fichiers binaires natifs pdfium.dll des dossiers x86/et x64/
- Installer le package NuGet
IronPdf:dotnet add package IronPdf
Modifications du code
- Ajouter la configuration de la clé de licence au démarrage
- Remplacer
PdfDocument.Load()parPdfDocument.FromFile() - Remplacer
document.Save()parpdf.SaveAs() - Remplacer
document.Render()parpdf.ToBitmap()ouRasterizeToImageFiles() - Remplacer
document.PageSizes[i]parpdf.Pages[i].Width/Height - Remplacez le contrôle PdfViewer par une visionneuse externe ou Process.Start()
- Ajouter de nouvelles fonctionnalités (extraction de texte, conversion HTML vers PDF, etc.)
Après la migration
- Tester la qualité du rendu.
- Fonctionnalité d'impression de test
- Tester sur les plateformes cibles
- Ajouter de nouvelles fonctionnalités (HTML vers PDF, fusion, filigranes, sécurité)
- Mise à jour de la documentation

