Passer au contenu du pied de page
GUIDES DE MIGRATION

Comment migrer de PDFView4NET vers IronPDF en C#

La migration de PDFView4NETversIronPDFtransforme votre flux de travail PDF d'un composant de visualisation axé sur l'interface utilisateur à une bibliothèque complète de génération et de manipulation de PDF. Ce guide fournit un chemin de migration complet, étape par étape, qui permet le traitement côté serveur, la prise en charge d'applications web et la gestion complète du cycle de vie des PDF, ce que PDFView4NETne peut pas offrir.

Pourquoi passer de PDFView4NETà IronPDF

Comprendre PDFView4NET

PDFView4NET est un choix populaire pour les développeurs qui se concentrent principalement sur les fonctionnalités de visualisation des PDF en C#. PDFView4NETfournit des contrôles de visualisation PDF robustes adaptés aux applications Windows Forms (WinForms) et Windows Presentation Foundation (WPF). L'accent mis par la bibliothèque sur une expérience de visualisation transparente des PDF en fait une option de choix pour le développement d'applications de bureau.

Malgré ses atouts, PDFView4NETprésente des limites qui peuvent inciter les développeurs à explorer des bibliothèques plus complètes comme IronPDF, qui offre une solution PDF tout-en-un englobant des capacités de création, de visualisation et de manipulation sans être contraint à des composants d'interface utilisateur spécifiques.

La limitation à la visualisation

PDFView4NET est principalement un composant de visualisation d'interface utilisateur pour les applications WinFormset WPF. Elle se concentre sur l'affichage des PDF plutôt que sur leur création ou leur manipulation. Principales raisons de migrer :

  1. Limitations liées à la consultation uniquement : PDFView4NETest conçu pour la visualisation, et non pour la création de PDF.

  2. Dépendance au framework d'interface utilisateur : nécessite un contexte WinFormsou WPF. La nécessité d'utiliser des environnements WinFormsou WPFpeut restreindre l'utilisation dans d'autres contextes, tels que les applications en console ou les services web, qui ne sont pas pris en charge par PDFView4NET.

  3. Conversion HTML vers PDF impossible : Impossible de convertir du HTML ou des URL en PDF. La bibliothèque se concentre strictement sur la visualisation, sans capacités intégrées de création ou de manipulation de fichiers PDF.

  4. Manipulation limitée : Édition de base comparée à l'ensemble complet des fonctionnalités d'IronPDF.

  5. Aucune prise en charge côté serveur : ne peut pas être exécuté dans les services Web ou les fonctions Azure.

  6. Technologie héritée : Développement moins actif et mises à jour des fonctionnalités modernes.

Comparaison PDFView4NETvs IronPDF

Fonction PDFView4NET IronPDF
Accent principal Visualisation du PDF Solution PDF complète (création, visualisation, modification)
Cadres d'interface utilisateur requis WinForms, WPF Aucun
Création de PDF Non Oui
Manipulation de PDF Limité (Annotations) Oui
<Côté serveur Non pris en charge Prise en charge complète
Applications web Non Oui
Applications de console Limité Prise en charge complète
Azure/Docker Non Oui
HTML à PDF Non Oui
<Contexte multiplateforme Non Oui
Facilité d'intégration Moyen Haut

IronPDF se distingue par sa polyvalence et son ensemble complet de fonctionnalités, ce qui le rend particulièrement intéressant pour les développeurs ayant besoin d'une approche holistique du traitement des PDF en C#. La bibliothèque prend en charge la création, la visualisation, l'édition et d'autres aspects du format PDF, ce qui permet de répondre à des cas d'utilisation qui vont bien au-delà des capacités de visualisation de PDFView4NET.

Pour les équipes qui prévoient d'adopter .NET 10 et C# 14 d'ici 2025 et 2026,IronPDFoffre une indépendance contextuelle - il peut être utilisé dans différents contextes, y compris les applications web, les services et les applications de console. Cette flexibilité est cruciale pour les projets nécessitant une prise en charge multiplateforme et divers scénarios de déploiement.


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 PDFView4NET-->
<PackageReference Include="O2S.Components.PDFView4NET" Version="*" Remove />

<!-- AddIronPDF-->
<PackageReference Include="IronPdf" Version="2024.*" />
<!-- Remove PDFView4NET-->
<PackageReference Include="O2S.Components.PDFView4NET" Version="*" Remove />

<!-- AddIronPDF-->
<PackageReference Include="IronPdf" Version="2024.*" />
XML

Ou via CLI :

dotnet remove package O2S.Components.PDFView4NET
dotnet add package IronPdf
dotnet remove package O2S.Components.PDFView4NET
dotnet add package IronPdf
SHELL

Configuration de la licence

// Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
$vbLabelText   $csharpLabel

Référence API complète

Modifications de l'espace de nommage

// Before: PDFView4NET
using O2S.Components.PDFView4NET;
using O2S.Components.PDFView4NET.HtmlToPdf;
using O2S.Components.PDFView4NET.Printing;

// After: IronPDF
using IronPdf;
// Before: PDFView4NET
using O2S.Components.PDFView4NET;
using O2S.Components.PDFView4NET.HtmlToPdf;
using O2S.Components.PDFView4NET.Printing;

// After: IronPDF
using IronPdf;
$vbLabelText   $csharpLabel

Mappages de l'API de base

PDFView4NET IronPDF Notes
PDFFile.Open(path) PdfDocument.FromFile(path) Charger le PDF
PDFFile.Open(stream) PdfDocument.FromStream(stream) Charger à partir du flux
pdfFile.GetPage(index) pdf.Pages[index] Page d'accès
pdfFile.PageCount pdf.PageCount Nombre de pages
PDFPrintDocument pdf.Print() Imprimer le PDF
pdfFile.Close() pdf.Dispose() Nettoyage
HtmlToPdfConverter ChromePdfRenderer HTML vers PDF
N/A PdfDocument.Merge() Fusionner des PDF
N/A pdf.ApplyWatermark() Ajouter un filigrane
N/A pdf.SecuritySettings Protection par mot de passe

Exemples de migration de code

Exemple 1 : Conversion d'une URL en PDF

Avant (PDFView4NET):

// NuGet: Install-Package O2S.Components.PDFView4NET
using O2S.Components.PDFView4NET;
using O2S.Components.PDFView4NET.HtmlToPdf;
using System;

class Program
{
    static void Main()
    {
        HtmlToPdfConverter converter = new HtmlToPdfConverter();
        converter.NavigateUri = new Uri("https://example.com");
        converter.ConvertHtmlToPdf();
        converter.SavePdf("output.pdf");
    }
}
// NuGet: Install-Package O2S.Components.PDFView4NET
using O2S.Components.PDFView4NET;
using O2S.Components.PDFView4NET.HtmlToPdf;
using System;

class Program
{
    static void Main()
    {
        HtmlToPdfConverter converter = new HtmlToPdfConverter();
        converter.NavigateUri = new Uri("https://example.com");
        converter.ConvertHtmlToPdf();
        converter.SavePdf("output.pdf");
    }
}
$vbLabelText   $csharpLabel

Après (IronPDF):

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf("https://example.com");
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf("https://example.com");
        pdf.SaveAs("output.pdf");
    }
}
$vbLabelText   $csharpLabel

PDFView4NET utilise HtmlToPdfConverteravec la propriété NavigateUri définie sur un objet Uri, puis appelle ConvertHtmlToPdf() et ensuite SavePdf().IronPDFsimplifie cela en un seul ChromePdfRendereravec RenderUrlAsPdf() qui accepte directement une URL de chaîne, renvoyant un PdfDocument que vous enregistrez avec SaveAs(). L'approche d'IronPDF offre une syntaxe plus propre et une meilleure intégration avec les applications .NET modernes. Consultez la documentation HTML vers PDF pour des exemples complets.

Exemple 2 : Conversion d'une chaîne de caractères HTML en PDF

Avant (PDFView4NET):

// NuGet: Install-Package O2S.Components.PDFView4NET
using O2S.Components.PDFView4NET;
using O2S.Components.PDFView4NET.HtmlToPdf;
using System;

class Program
{
    static void Main()
    {
        string htmlContent = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";
        HtmlToPdfConverter converter = new HtmlToPdfConverter();
        converter.HtmlContent = htmlContent;
        converter.ConvertHtmlToPdf();
        converter.SavePdf("document.pdf");
    }
}
// NuGet: Install-Package O2S.Components.PDFView4NET
using O2S.Components.PDFView4NET;
using O2S.Components.PDFView4NET.HtmlToPdf;
using System;

class Program
{
    static void Main()
    {
        string htmlContent = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";
        HtmlToPdfConverter converter = new HtmlToPdfConverter();
        converter.HtmlContent = htmlContent;
        converter.ConvertHtmlToPdf();
        converter.SavePdf("document.pdf");
    }
}
$vbLabelText   $csharpLabel

Après (IronPDF):

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

class Program
{
    static void Main()
    {
        string htmlContent = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("document.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        string htmlContent = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("document.pdf");
    }
}
$vbLabelText   $csharpLabel

PDFView4NET utilise la propriété HtmlContent pour définir la chaîne HTML, puis nécessite d'appeler ConvertHtmlToPdf() suivi de SavePdf().IronPDFfournit une API plus fluide où RenderHtmlAsPdf() accepte la chaîne HTML directement et renvoie un PdfDocument. Les noms des méthodes sont plus intuitifs : RenderHtmlAsPdf vs ConvertHtmlToPdf. Pour en savoir plus, consultez nos tutoriels.

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

Avant (PDFView4NET):

// NuGet: Install-Package O2S.Components.PDFView4NET
using O2S.Components.PDFView4NET;
using System;
using System.IO;

class Program
{
    static void Main()
    {
        using (FileStream fs = File.OpenRead("document.pdf"))
        {
            PDFDocument document = new PDFDocument(fs);
            string text = "";
            for (int i = 0; i < document.Pages.Count; i++)
            {
                text += document.Pages[i].ExtractText();
            }
            Console.WriteLine(text);
        }
    }
}
// NuGet: Install-Package O2S.Components.PDFView4NET
using O2S.Components.PDFView4NET;
using System;
using System.IO;

class Program
{
    static void Main()
    {
        using (FileStream fs = File.OpenRead("document.pdf"))
        {
            PDFDocument document = new PDFDocument(fs);
            string text = "";
            for (int i = 0; i < document.Pages.Count; i++)
            {
                text += document.Pages[i].ExtractText();
            }
            Console.WriteLine(text);
        }
    }
}
$vbLabelText   $csharpLabel

Après (IronPDF):

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

class Program
{
    static void Main()
    {
        var pdf = PdfDocument.FromFile("document.pdf");
        string text = pdf.ExtractAllText();
        Console.WriteLine(text);
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var pdf = PdfDocument.FromFile("document.pdf");
        string text = pdf.ExtractAllText();
        Console.WriteLine(text);
    }
}
$vbLabelText   $csharpLabel

Cet exemple met en évidence une différence importante entre les API. PDFView4NETnécessite la création manuelle d'un FileStream, l'instanciation de PDFDocument avec le flux, puis l'exécution en boucle de document.Pages.Count et la concaténation de Pages[i].ExtractText() pour chaque page.

IronPDF simplifie considérablement cette tâche : PdfDocument.FromFile() charge le PDF directement à partir d'un chemin d'accès, et ExtractAllText() extrait le texte de toutes les pages en un seul appel de méthode. Pas de gestion manuelle des flux, pas de boucles, pas de concaténation de chaînes - juste deux lignes de code.


Notesde migration essentielles

Changement de classe de convertisseur

PDFView4NET utilise HtmlToPdfConverter;IronPDFutilise ChromePdfRenderer:

// PDFView4NET
HtmlToPdfConverter converter = new HtmlToPdfConverter();

// IronPDF
var renderer = new ChromePdfRenderer();
// PDFView4NET
HtmlToPdfConverter converter = new HtmlToPdfConverter();

// IronPDF
var renderer = new ChromePdfRenderer();
$vbLabelText   $csharpLabel

API basée sur les propriétés et API basée sur les méthodes

PDFView4NET définit les propriétés avant la conversion :

// PDFView4NET: Set properties, then convert
converter.HtmlContent = htmlContent;
converter.NavigateUri = new Uri(url);
converter.ConvertHtmlToPdf();
converter.SavePdf("output.pdf");

// IronPDF: Method parameters with fluent API
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
var pdf = renderer.RenderUrlAsPdf(url);
pdf.SaveAs("output.pdf");
// PDFView4NET: Set properties, then convert
converter.HtmlContent = htmlContent;
converter.NavigateUri = new Uri(url);
converter.ConvertHtmlToPdf();
converter.SavePdf("output.pdf");

// IronPDF: Method parameters with fluent API
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
var pdf = renderer.RenderUrlAsPdf(url);
pdf.SaveAs("output.pdf");
$vbLabelText   $csharpLabel

Changement de chargement de document

// PDFView4NET: Requires FileStream
using (FileStream fs = File.OpenRead("document.pdf"))
{
    PDFDocument document = new PDFDocument(fs);
}

// IronPDF: Direct file path
var pdf = PdfDocument.FromFile("document.pdf");
// PDFView4NET: Requires FileStream
using (FileStream fs = File.OpenRead("document.pdf"))
{
    PDFDocument document = new PDFDocument(fs);
}

// IronPDF: Direct file path
var pdf = PdfDocument.FromFile("document.pdf");
$vbLabelText   $csharpLabel

Modification de l'accès à la page

// PDFView4NET: document.Pages.Count and Pages[i]
for (int i = 0; i < document.Pages.Count; i++)
{
    document.Pages[i].ExtractText();
}

// IronPDF: pdf.PageCount and Pages[i] or ExtractAllText()
string text = pdf.ExtractAllText();
// Or per-page: pdf.ExtractTextFromPage(0);
// PDFView4NET: document.Pages.Count and Pages[i]
for (int i = 0; i < document.Pages.Count; i++)
{
    document.Pages[i].ExtractText();
}

// IronPDF: pdf.PageCount and Pages[i] or ExtractAllText()
string text = pdf.ExtractAllText();
// Or per-page: pdf.ExtractTextFromPage(0);
$vbLabelText   $csharpLabel

Enregistrer le changement de méthode

// PDFView4NET: SavePdf()
converter.SavePdf("output.pdf");

// IronPDF: SaveAs()
pdf.SaveAs("output.pdf");
// PDFView4NET: SavePdf()
converter.SavePdf("output.pdf");

// IronPDF: SaveAs()
pdf.SaveAs("output.pdf");
$vbLabelText   $csharpLabel

Nouvelles capacités après la migration

Après avoir migré vers IronPDF, vous bénéficiez de fonctionnalités que PDFView4NETne peut pas vous offrir :

Fusion de fichiers PDF

var pdf1 = PdfDocument.FromFile("chapter1.pdf");
var pdf2 = PdfDocument.FromFile("chapter2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("complete_book.pdf");
var pdf1 = PdfDocument.FromFile("chapter1.pdf");
var pdf2 = PdfDocument.FromFile("chapter2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("complete_book.pdf");
$vbLabelText   $csharpLabel

Les filigranes avec HTML

var pdf = PdfDocument.FromFile("document.pdf");
pdf.ApplyWatermark(@"
    <div style='
        font-size: 72pt;
        color: rgba(255, 0, 0, 0.2);
        transform: rotate(-45deg);
    '>
        CONFIDENTIAL
    </div>");
pdf.SaveAs("watermarked.pdf");
var pdf = PdfDocument.FromFile("document.pdf");
pdf.ApplyWatermark(@"
    <div style='
        font-size: 72pt;
        color: rgba(255, 0, 0, 0.2);
        transform: rotate(-45deg);
    '>
        CONFIDENTIAL
    </div>");
pdf.SaveAs("watermarked.pdf");
$vbLabelText   $csharpLabel

Protection par mot de passe

var pdf = PdfDocument.FromFile("document.pdf");
pdf.SecuritySettings.OwnerPassword = "owner123";
pdf.SecuritySettings.UserPassword = "user456";
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SaveAs("protected.pdf");
var pdf = PdfDocument.FromFile("document.pdf");
pdf.SecuritySettings.OwnerPassword = "owner123";
pdf.SecuritySettings.UserPassword = "user456";
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SaveAs("protected.pdf");
$vbLabelText   $csharpLabel

Remplissage de formulaires

var pdf = PdfDocument.FromFile("form.pdf");
pdf.Form.GetFieldByName("FirstName").Value = "John";
pdf.Form.GetFieldByName("LastName").Value = "Doe";
pdf.SaveAs("filled_form.pdf");
var pdf = PdfDocument.FromFile("form.pdf");
pdf.Form.GetFieldByName("FirstName").Value = "John";
pdf.Form.GetFieldByName("LastName").Value = "Doe";
pdf.SaveAs("filled_form.pdf");
$vbLabelText   $csharpLabel

Traitement côté serveur

PDFView4NET ne peut pas fonctionner dans un environnement serveur.IronPDFexcelle dans ce domaine :

// ASP.NET Core
[HttpGet]
public IActionResult GeneratePdf()
{
    var renderer = new ChromePdfRenderer();
    var pdf = renderer.RenderHtmlAsPdf(GetReportHtml());
    return File(pdf.BinaryData, "application/pdf", "report.pdf");
}
// ASP.NET Core
[HttpGet]
public IActionResult GeneratePdf()
{
    var renderer = new ChromePdfRenderer();
    var pdf = renderer.RenderHtmlAsPdf(GetReportHtml());
    return File(pdf.BinaryData, "application/pdf", "report.pdf");
}
$vbLabelText   $csharpLabel

Résumé de la comparaison des fonctionnalités

Fonction PDFView4NET IronPDF
Voir les PDF Oui (UI) Non (utiliser la visionneuse)
Charger les PDF Oui Oui
Enregistrer les PDF Limité Oui
HTML vers PDF Non Oui
URL vers PDF Non Oui
Fusionner des PDF Non Oui
Diviser les PDF Limité Oui
Filigranes Non Oui
En-têtes/Pieds de page Non Oui
Protection par mot de passe Non Oui
Signatures numériques Non Oui
Extraction de texte Limité Oui
Remplir des formulaires Limité Oui
WinForms Oui Oui
WPF Oui Oui
Console Limité Oui
ASP.NET Non Oui
Azur Non Oui
Docker Non Oui

Liste de contrôle de la migration

Pré-migration

  • Identifier les besoins en matière de visualisation (déterminer si les fonctionnalités d'IronPDF peuvent remplacer la visualisation de PDF via une interface utilisateur).
  • Flux de travail d'impression de documents
  • Liste des besoins de manipulation de PDF
  • Remplacement du visualiseur de plans si nécessaire (IronPDF se concentre sur la génération/manipulation)
  • Obtenez votre clé de licenceIronPDFsur ironpdf.com

Modifications du paquet

  • Supprimer le package NuGet O2S.Components.PDFView4NET
  • Installez le package NuGet IronPdf : dotnet add package IronPdf

Modifications du code

  • Mise à jour des importations d'espace de noms ( using O2S.Components.PDFView4NET;using IronPdf; )
  • Remplacez HtmlToPdfConverterpar ChromePdfRenderer
  • Remplacez converter.HtmlContent + ConvertHtmlToPdf() par renderer.RenderHtmlAsPdf(html)
  • Remplacez converter.NavigateUri + ConvertHtmlToPdf() par renderer.RenderUrlAsPdf(url)
  • Remplacez converter.SavePdf() par pdf.SaveAs()
  • Remplacez PDFDocument(stream) par PdfDocument.FromFile(path)
  • Remplacez l'extraction manuelle de la boucle de pages par pdf.ExtractAllText()
  • Ajouter l'initialisation de la licence au démarrage de l'application

Après la migration

  • Test de chargement et d'enregistrement de fichiers PDF
  • Vérifier la fonctionnalité d'extraction de texte
  • Tester la conversion de HTML en PDF
  • Vérifier le bon fonctionnement du déploiement du serveur (nouvelle fonctionnalité)
  • Tester la compatibilité multiplateforme si nécessaire (nouvelle fonctionnalité)
  • Supprimer le code PDF spécifique à l'interface utilisateur si uniquement côté serveur

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