Passer au contenu du pied de page
GUIDES DE MIGRATION

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

  1. 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.

  2. Windows Forms / Windows uniquement : Construit autour de System.Drawing et des contrôles WinForms ; non conçu pour d'autres frameworks d'interface utilisateur, et System.Drawing.Common est uniquement compatible Windows sur .NET 6+.

  3. Pas de manipulation PDF : Impossible de fusionner, diviser ou modifier le contenu PDF.

  4. Dépendances binaires natives : Nécessite des binaires PDFium spécifiques à la plateforme via PdfiumViewer.Native.x86.v8-xfa et PdfiumViewer.Native.x86_64.v8-xfa (ou les variantes sans V8 / sans XFA).

  5. 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.

  6. 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.

  7. 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.

  8. Pas d'en-têtes/pieds de page : Impossible d'ajouter des numéros de page ou du contenu répétitif.

  9. Pas de filigranes : Impossible de tamponner des documents avec des superpositions.

  10. 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

  1. Environnement .NET : .NET Framework 4.6.2+ ou .NET Core 3.1+ / .NET 5/6/7/8/9+
  2. Accès à NuGet : possibilité d'installer des packages NuGet
  3. 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
SHELL

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"
$vbLabelText   $csharpLabel

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" .
SHELL

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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" />
SHELL

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})
$vbLabelText   $csharpLabel

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)
$vbLabelText   $csharpLabel

Enregistrer le changement de méthode

// PdfiumViewer
document.Save(path)

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

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

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")
$vbLabelText   $csharpLabel

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}")
$vbLabelText   $csharpLabel

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() par PdfDocument.FromFile()
  • Remplacer document.Save() par pdf.SaveAs()
  • Remplacer document.Render() par pdf.ToBitmap() ou RasterizeToImageFiles()
  • Remplacer document.PageSizes[i] par pdf.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

Veuillez noterPdfiumViewer, PDFium, Chromium, DevExpress, Syncfusion, Telerik, et wkhtmltopdf sont des marques de leurs propriétaires respectifs. Ce site n'est pas affilié, soutenu ou sponsorisé par Pieter van Ginkel, le projet Chromium, Google, DevExpress, Syncfusion, Progress Software, ou le projet wkhtmltopdf. Tous les noms de produits, logos et marques sont la propriété de leurs propriétaires respectifs. Les comparaisons sont à titre informatif uniquement et reflètent les informations publiquement disponibles au moment de l'écriture.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite

Équipe de soutien Iron

Nous sommes en ligne 24 heures sur 24, 5 jours sur 7.
Chat
Email
Appelez-moi