Passer au contenu du pied de page
GUIDES DE MIGRATION

Comment migrer de Pdfium à IronPDF en C#

La migration de Pdfium.NET versIronPDFfait passer votre flux de travail PDF .NET d'une bibliothèque axée sur le rendu avec des dépendances binaires natives à une solution PDF complète qui gère la création, la manipulation et le rendu sans complexité spécifique à la plateforme. Ce guide fournit un chemin de migration complet, étape par étape, qui élimine la gestion native des dépendances tout en ajoutant des fonctionnalités que Pdfium ne peut pas fournir.

Pourquoi migrer de Pdfium à IronPDF

Comprendre Pdfium.NET

Pdfium.NET est un wrapper .NET pour la bibliothèque PDFium de Google, réputée pour son efficacité et sa rapidité dans le rendu des documents PDF. Elle s'est imposée comme une bibliothèque importante pour les développeurs qui se plongent dans les subtilités du rendu PDF au sein des applications C#, fournissant une réplication haute-fidélité du contenu PDF dans les environnements .NET.

Cependant, malgré ses prouesses en matière de rendu, les capacités de Pdfium.NET en matière de création et de manipulation de documents PDF sont limitées. Elle est principalement conçue pour les applications qui nécessitent l'affichage précis du contenu PDF, sans mettre l'accent sur la modification ou la création de nouveaux PDF.

Limites critiques de Pdfium

  1. Fonctionnalité de rendu uniquement : impossible de créer des PDF à partir de HTML, d'images ou par programmation. Les capacités de Pdfium sont limitées à l'affichage et au rendu des PDF.

  2. Aucune manipulation de PDF : impossible de fusionner, de diviser ou de modifier le contenu PDF. La fusion de PDF n'est pas prise en charge en mode natif - vous devrez utiliser une autre bibliothèque comme iTextSharp ou PdfSharp.

  3. Dépendances binaires natives : Nécessite des binaires PDFium spécifiques à la plateforme. Les développeurs doivent gérer les binaires PDFium natifs, un aspect qui ajoute de la complexité lors du déploiement et de la distribution.

  4. Complexité du déploiement : Il faut regrouper et gérer les DLL natives par plateforme avec les dossiers x86, x64 et runtimes.

  5. Extraction de texte limitée : Extraction de texte de base sans mise en forme. L'extraction de texte nécessite un travail supplémentaire avec Pdfium.NET.

  6. Conversion HTML vers PDF impossible : Impossible de convertir le contenu Web en PDF. La conversion de HTML en PDF n'est pas prise en charge de manière native dans Pdfium.NET.

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

  8. Pas de filigrane : Impossible d'apposer des tampons superposés sur les documents.

  9. Absence de prise en charge des formulaires : Impossible de remplir ou de lire les formulaires PDF.

  10. Aucune fonction de sécurité : Impossible de chiffrer ou de protéger par mot de passe les fichiers PDF.

Comparaison IronPdf vs IronPDF

Aspect Pdfium.NET IronPDF
Accent principal Rendu/visualisation Solution PDF complète
Fidélité du rendu Rendu haute fidélité Niveau élevé, en particulier pour HTML/CSS/JS
Création de PDF ✓(HTML, URL, images)
Manipulation de PDF ✓(fusionner, diviser, éditer)
HTML à PDF ✓(moteur Chromium)
Marqueurs d'eau
En-têtes/Pieds de page
Remplissage de formulaires
Sécurité
Dépendances natives Les exigences sont les suivantes Aucune (gestion complète)
Cross-Platform Configuration complexe Automatique
Facilité de déploiement Compliqué par les dépendances natives Plus facile ; moins de complications liées aux dépendances

Pour les équipes qui prévoient l'adoption de .NET 10 et C# 14 d'ici 2025 et 2026,IronPDFconstitue une base entièrement gérée qui élimine la gestion des binaires natifs tout en ajoutant des fonctionnalités complètes de création et de manipulation de PDF.


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

Modifications du paquet NuGet

# Remove Pdfium packages
dotnet remove package Pdfium.NET
dotnet remove package Pdfium.Net.SDK
dotnet remove package PdfiumViewer

# Install IronPDF
dotnet add package IronPdf
# Remove Pdfium packages
dotnet remove package Pdfium.NET
dotnet remove package Pdfium.Net.SDK
dotnet remove package PdfiumViewer

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

Identifier l'utilisation de Pdfium

# Find Pdfium usage
grep -r "Pdfium\|PdfDocument\.Load\|\.Render\(" --include="*.cs" .

# Find native binary references
grep -r "pdfium\.dll\|pdfium\.so\|pdfium\.dylib" --include="*.csproj" --include="*.config" .

# Find platform-specific code
grep -r "#if.*64\|WIN32\|WIN64\|LINUX\|OSX" --include="*.cs" .
# Find Pdfium usage
grep -r "Pdfium\|PdfDocument\.Load\|\.Render\(" --include="*.cs" .

# Find native binary references
grep -r "pdfium\.dll\|pdfium\.so\|pdfium\.dylib" --include="*.csproj" --include="*.config" .

# Find platform-specific code
grep -r "#if.*64\|WIN32\|WIN64\|LINUX\|OSX" --include="*.cs" .
SHELL

Référence API complète

Modifications de l'espace de nommage

// Pdfium.NET
using Pdfium;
using Pdfium.Net;
using PdfiumViewer;

// IronPDF
using IronPdf;
using IronPdf.Rendering;
using IronPdf.Editing;
// Pdfium.NET
using Pdfium;
using Pdfium.Net;
using PdfiumViewer;

// IronPDF
using IronPdf;
using IronPdf.Rendering;
using IronPdf.Editing;
$vbLabelText   $csharpLabel

Mappages de classes de base

Pdfium.NET IronPDF Notes
Document PDF Document PDF Même nom, capacités différentes
PdfPage PdfPage Interface similaire
PdfPageCollection PdfPageCollection Interface similaire
(non disponible) ChromePdfRenderer Création de PDF
(non disponible) HtmlHeaderFooter En-têtes/pieds de page

Mappages de chargement de documents

Pdfium.NET IronPDF Notes
PdfDocument.Load(path) PdfDocument.FromFile(path) Charger à partir d'un fichier
PdfDocument.Load(stream) PdfDocument.FromStream(stream) Charger à partir du flux
PdfDocument.Load(bytes) PdfDocument.FromBinaryData(bytes) Chargement à partir d'octets
new PdfDocument(path) PdfDocument.FromFile(path) Modèle de constructeur

Mappages de propriétés de documents

Pdfium.NET IronPDF Notes
document.PageCount document.PageCount Idem
document.Pages document.Pages Collection similaire
document.Pages[index] document.Pages[index] Base zéro
document.GetPageSize(index) document.Pages[index].Largeur/Hauteur Propriétés directes

Mappages d'extraction de texte

Pdfium.NET IronPDF Notes
document.GetPdfText(pageIndex) document.Pages[index].Text Par page
(boucle manuelle)_ document.ExtractAllText() Toutes les pages en même temps
page.GetTextBounds() page.Text Simplifié

Enregistrement des documents Mappings

Pdfium.NET IronPDF Notes
document.Save(path) document.SaveAs(path) Nom de méthode différent
document.Save(stream) document.Stream Flux d'accès
(non disponible) document.BinaryData Obtenir des octets

Mappages de rendu de page

Pdfium.NET IronPDF Notes
page.Render(width, height) pdf.RasterizeToImageFiles(path, dpi) Rastériser
page.Render(width, height, flags) Paramètre DPI Contrôle de la qualité
document.Render(index, width, height) pdf.RasterizeToImageFiles() Rendu par lots
page.RenderToScale(scale) DPI : 72 * échelle Conversion de l'échelle en DPI

Nouvelles fonctionnalités non disponibles dans Pdfium

Fonctionnalité d'IronPDF Description du projet
ChromePdfRenderer.RenderHtmlAsPdf() Créer à partir de HTML
ChromePdfRenderer.RenderUrlAsPdf() Créer à partir d'une URL
ChromePdfRenderer.RenderHtmlFileAsPdf() Créer à partir d'un fichier HTML
PdfDocument.Merge() Combiner des PDF
pdf.CopyPages() Extraire des pages
pdf.RemovePages() Supprimer des pages
pdf.InsertPdf() Insérer le PDF à la position
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.SignWithDigitalSignature() Signatures numériques
pdf.Form Remplissage de formulaires

Exemples de migration de code

Exemple 1 : Extraction de texte à partir d'un PDF

Avant (Pdfium):

// NuGet: Install-Package PdfiumViewer
using PdfiumViewer;
using System;
using System.IO;
using System.Text;

class Program
{
    static void Main()
    {
        string pdfPath = "document.pdf";

        using (var document = PdfDocument.Load(pdfPath))
        {
            StringBuilder text = new StringBuilder();

            for (int i = 0; i < document.PageCount; i++)
            {
                // Note: PdfiumViewer has limited text extraction capabilities
                // Text extraction requires additional work with Pdfium.NET
                string pageText = document.GetPdfText(i);
                text.AppendLine(pageText);
            }

            Console.WriteLine(text.ToString());
        }
    }
}
// NuGet: Install-Package PdfiumViewer
using PdfiumViewer;
using System;
using System.IO;
using System.Text;

class Program
{
    static void Main()
    {
        string pdfPath = "document.pdf";

        using (var document = PdfDocument.Load(pdfPath))
        {
            StringBuilder text = new StringBuilder();

            for (int i = 0; i < document.PageCount; i++)
            {
                // Note: PdfiumViewer has limited text extraction capabilities
                // Text extraction requires additional work with Pdfium.NET
                string pageText = document.GetPdfText(i);
                text.AppendLine(pageText);
            }

            Console.WriteLine(text.ToString());
        }
    }
}
$vbLabelText   $csharpLabel

Après (IronPDF):

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

class Program
{
    static void Main()
    {
        string pdfPath = "document.pdf";

        var pdf = PdfDocument.FromFile(pdfPath);
        string text = pdf.ExtractAllText();

        Console.WriteLine(text);
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        string pdfPath = "document.pdf";

        var pdf = PdfDocument.FromFile(pdfPath);
        string text = pdf.ExtractAllText();

        Console.WriteLine(text);
    }
}
$vbLabelText   $csharpLabel

La différence est ici significative. Pdfium nécessite une boucle manuelle à travers chaque page avec GetPdfText(pageIndex), la construction d'un StringBuilder et la gestion de la déclaration using pour une élimination appropriée. Le code indique que "PdfiumViewer a des capacités d'extraction de texte limitées" et que "l'extraction de texte nécessite un travail supplémentaire"

IronPDF simplifie cela en trois lignes : charger avec PdfDocument.FromFile(), extraire avec ExtractAllText(), et sortir. La méthode ExtractAllText() traite toutes les pages automatiquement avec des capacités d'extraction de texte plus avancées. Si vous avez besoin d'une extraction par page, vous pouvez utiliser pdf.Pages[index].Text. Consultez la documentation sur l'extraction de texte pour connaître les options supplémentaires.

Exemple 2 : fusion de fichiers PDF

Avant (Pdfium):

// NuGet: Install-Package PdfiumViewer
using PdfiumViewer;
using System;
using System.IO;
using System.Collections.Generic;

// Note: PdfiumViewer does not have native PDF merging functionality
// You would need to use additional libraries or implement custom logic
class Program
{
    static void Main()
    {
        List<string> pdfFiles = new List<string> 
        { 
            "document1.pdf", 
            "document2.pdf", 
            "document3.pdf" 
        };

        // PdfiumViewer is primarily for rendering/viewing
        // PDF merging is not natively supported
        // You would need to use another library like iTextSharp or PdfSharp

        Console.WriteLine("PDF merging not natively supported in PdfiumViewer");
    }
}
// NuGet: Install-Package PdfiumViewer
using PdfiumViewer;
using System;
using System.IO;
using System.Collections.Generic;

// Note: PdfiumViewer does not have native PDF merging functionality
// You would need to use additional libraries or implement custom logic
class Program
{
    static void Main()
    {
        List<string> pdfFiles = new List<string> 
        { 
            "document1.pdf", 
            "document2.pdf", 
            "document3.pdf" 
        };

        // PdfiumViewer is primarily for rendering/viewing
        // PDF merging is not natively supported
        // You would need to use another library like iTextSharp or PdfSharp

        Console.WriteLine("PDF merging not natively supported in PdfiumViewer");
    }
}
$vbLabelText   $csharpLabel

Après (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        List<string> pdfFiles = new List<string> 
        { 
            "document1.pdf", 
            "document2.pdf", 
            "document3.pdf" 
        };

        var pdf = PdfDocument.Merge(pdfFiles);
        pdf.SaveAs("merged.pdf");

        Console.WriteLine("PDFs merged successfully");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        List<string> pdfFiles = new List<string> 
        { 
            "document1.pdf", 
            "document2.pdf", 
            "document3.pdf" 
        };

        var pdf = PdfDocument.Merge(pdfFiles);
        pdf.SaveAs("merged.pdf");

        Console.WriteLine("PDFs merged successfully");
    }
}
$vbLabelText   $csharpLabel

Cet exemple met en évidence une lacune fondamentale en matière de capacités. Pdfium ne peut pas fusionner des PDF - le code indique explicitement que "la fusion de PDF n'est pas prise en charge en mode natif dans PdfiumViewer" et que "vous devriez utiliser une autre bibliothèque comme iTextSharp ou PdfSharp"

IronPDF fournit une fusion native avec la méthode statique PdfDocument.Merge()qui accepte directement une liste de chemins de fichiers. Le résultat est un nouveau Document PDFque vous enregistrez avec SaveAs(). En savoir plus sur la fusion et la division de PDF.

Exemple 3 : Conversion HTML vers PDF

Avant (Pdfium):

// NuGet: Install-Package PdfiumViewer
using PdfiumViewer;
using System.IO;
using System.Drawing.Printing;

// Note: PdfiumViewer is primarily for viewing/rendering PDFs, not creating them from HTML
// For HTML to PDF with Pdfium.NET, you would need additional libraries
// This example shows a limitation of Pdfium.NET
class Program
{
    static void Main()
    {
        // Pdfium.NET does not have native HTML to PDF conversion
        // You would need to use a separate library to convert HTML to PDF
        // then use Pdfium for manipulation
        string htmlContent = "<h1>Hello World</h1>";

        // This functionality is not directly available in Pdfium.NET
        Console.WriteLine("HTML to PDF conversion not natively supported in Pdfium.NET");
    }
}
// NuGet: Install-Package PdfiumViewer
using PdfiumViewer;
using System.IO;
using System.Drawing.Printing;

// Note: PdfiumViewer is primarily for viewing/rendering PDFs, not creating them from HTML
// For HTML to PDF with Pdfium.NET, you would need additional libraries
// This example shows a limitation of Pdfium.NET
class Program
{
    static void Main()
    {
        // Pdfium.NET does not have native HTML to PDF conversion
        // You would need to use a separate library to convert HTML to PDF
        // then use Pdfium for manipulation
        string htmlContent = "<h1>Hello World</h1>";

        // This functionality is not directly available in Pdfium.NET
        Console.WriteLine("HTML to PDF conversion not natively supported in Pdfium.NET");
    }
}
$vbLabelText   $csharpLabel

Après (IronPDF):

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        string htmlContent = "<h1>Hello World</h1>";

        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("output.pdf");

        Console.WriteLine("PDF created successfully");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        string htmlContent = "<h1>Hello World</h1>";

        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("output.pdf");

        Console.WriteLine("PDF created successfully");
    }
}
$vbLabelText   $csharpLabel

Cet exemple illustre la différence de capacité la plus importante. Pdfium indique explicitement que "la conversion de HTML en PDF n'est pas prise en charge en mode natif dans Pdfium.NET" et que "vous devrez utiliser une bibliothèque distincte pour convertir HTML en PDF"

IronPDF fournit une conversion native de HTML en PDF grâce à ChromePdfRenderer, qui utilise un moteur Chromium en interne pour un rendu précis de HTML, CSS et JavaScript. La méthode RenderHtmlAsPdf() convertit les chaînes HTML directement en documents PDF.IronPDFpeut également rendre des URL avec RenderUrlAsPdf() et des fichiers HTML avec RenderHtmlFileAsPdf(). Consultez la documentation HTML vers PDF pour des exemples complets.


Suppression des dépendances natives

L'un des avantages les plus significatifs de la migration de Pdfium versIronPDFest l'élimination de la gestion des binaires natifs.

Avant (Pdfium) - Déploiement complexe

MyApp/
├── bin/
│ ├─── MyApp.dll
│ ├── Pdfium.NET.dll
│ ├── x86/
│ │ └── pdfium.dll
│ └── x64/
│ └── pdfium.dll
├── durées d&#39;exécution/
│ ├── win-x86/native/
│ │ └── pdfium.dll
│ └── win-x64/native/
│ └── 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
# Delete any <Content Include="pdfium.dll" /> entries
# Delete any <None Include="x86/pdfium.dll" /> entries
# Delete native PDFium binaries
rm -rf x86/ x64/ runtimes/

# Remove from .csproj
# Delete any <Content Include="pdfium.dll" /> entries
# Delete any <None Include="x86/pdfium.dll" /> entries
SHELL

Notesde migration essentielles

Conversion de l'échelle en DPI

Pdfium utilise des facteurs d'échelle ;IronPDFutilise le DPI :

// Formula:IronPDFDPI = 72 × Pdfium scale
// Pdfium scale 2.0 →IronPDFDPI 144
pdf.RasterizeToImageFiles("*.png", DPI: 144);
// Formula:IronPDFDPI = 72 × Pdfium scale
// Pdfium scale 2.0 →IronPDFDPI 144
pdf.RasterizeToImageFiles("*.png", DPI: 144);
$vbLabelText   $csharpLabel

Modification de la méthode de chargement des documents

// Pdfium
PdfDocument.Load(path)

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

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

Enregistrer le changement de méthode

// Pdfium
document.Save(path)

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

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

Simplification du modèle d'élimination

// Pdfium: Les exigences sont les suivantesexplicit disposal
using (var document = PdfDocument.Load(path))
using (var page = document.Pages[0])
using (var bitmap = page.Render(1024, 768))
{
    bitmap.Save("output.png");
}

// IronPDF: Simplified
var pdf = PdfDocument.FromFile(path);
pdf.RasterizeToImageFiles("output.png");
// Pdfium: Les exigences sont les suivantesexplicit disposal
using (var document = PdfDocument.Load(path))
using (var page = document.Pages[0])
using (var bitmap = page.Render(1024, 768))
{
    bitmap.Save("output.png");
}

// IronPDF: Simplified
var pdf = PdfDocument.FromFile(path);
pdf.RasterizeToImageFiles("output.png");
$vbLabelText   $csharpLabel

Suppression du code spécifique à la plateforme

// Pdfium: Les exigences sont les suivantesplatform detection
#if WIN64
    // Load x64 pdfium.dll
#else
    // Load x86 pdfium.dll
#endif

// IronPDF: Remove all platform-specific code
// Just use the API directly
// Pdfium: Les exigences sont les suivantesplatform detection
#if WIN64
    // Load x64 pdfium.dll
#else
    // Load x86 pdfium.dll
#endif

// IronPDF: Remove all platform-specific code
// Just use the API directly
$vbLabelText   $csharpLabel

Résumé de la comparaison des fonctionnalités

Fonction Pdfium.NET IronPDF
Charger le PDF
Rendu à l'image
Extraire le texte ✓(de base) ✓(avancé)
Page Info
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
Signatures numériques
Protection par mot de passe
Dépendances natives Les exigences sont les suivantes Aucun
Multiplateforme Complexe Automatique
Gestion de la mémoire Mise au rebut du manuel Simplifié

Liste de contrôle de la migration

Pré-migration

  • Identifier toutes les utilisations de Pdfium dans le code source
  • Documenter les dimensions/échelles de rendu actuelles utilisées
  • Lister les emplacements des binaires natifs dans le projet
  • Vérifier le code de chargement spécifique à la plateforme
  • Identifier les besoins en matière de création de PDF (utilisez-vous actuellement des outils distincts ?)
  • Examiner les schémas d'élimination en vue de la conversion
  • Obtenir une clé de licence IronPDF

Modifications du paquet

  • Supprimez les packages NuGet Pdfium.NET , Pdfium.Net.SDK et PdfiumViewer
  • Supprimer les fichiers binaires natifs pdfium.dll des dossiers x86/, x64/ et runtimes/
  • Supprimer la compilation conditionnelle spécifique à la plateforme
  • Mettre à jour le fichier .csproj pour supprimer les références aux binaires natifs
  • Installez le package NuGet IronPdf : dotnet add package IronPdf

Modifications du code

  • Ajouter la configuration de la clé de licence au démarrage
  • Remplacez PdfDocument.Load() par PdfDocument.FromFile()
  • Remplacez document.Save() par pdf.SaveAs()
  • Remplacez les boucles document.GetPdfText(i) par pdf.ExtractAllText()
  • Convertir les facteurs d'échelle en valeurs DPI (DPI = 72 × échelle)
  • Simplifier les modèles de suppression (supprimer les instructions using imbriquées)
  • Supprimer le code spécifique à la plateforme

Après la migration

  • Tester la qualité du rendu de sortie
  • Comparer les résultats d'extraction de texte
  • Test du déploiement multiplateforme
  • Ajouter de nouvelles fonctionnalités (HTML vers PDF, fusion, filigranes, sécurité)
  • Mise à jour de la documentation

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