Convertir CSHTML en PDF dans ASP.NET Core MVC avec IronPDF
Migrer de PDFView4NETà IronPDF déplace votre flux de travail PDF d'un composant d'affichage WinForms/WPF à une bibliothèque de génération et de manipulation de PDF sans interface utilisateur. Ce guide fournit un chemin de migration étape par étape qui permet le traitement côté serveur, le support des applications web, et une gestion plus large de cycle de vie des PDFs au-delà de la portée d'affichage/rendu/impression de PDFView4NET.
Pourquoi passer de PDFView4NETà IronPDF
Comprendre PDFView4NET
PDFView4NET (O2 Solutions, o2sol.com) est un kit d'outils de visionnage/rendu/impression pour les applications WinFormset WPF. Il est livré sous la forme de deux packages NuGet — O2S.Components.PDFView4NET.Win et O2S.Components.PDFView4NET.WPF — et inclut son propre moteur de rendu PDF. O2 Solutions vend une bibliothèque séparée, PDF4NET, pour la création/manipulation programmatique ; ce guide ne couvre que PDFView4NET.
Les équipes qui ont besoin de génération de PDF, de rendu HTML-vers-PDF, ou de flux de travail côté serveur associent souvent PDFView4NETà une autre bibliothèque, ou migrent directement vers un kit tel qu'IronPDF qui couvre la création et la manipulation ainsi que les scénarios de déploiement sans interface utilisateur.
La portée d'affichage/rendu/impression
PDFView4NET est construit autour de l'affichage, du rendu et de l'impression de PDFs, ainsi que de l'annotation et du remplissage de formulaires. Raisons communes de migration :
-
Focus sur l'affichage/rendu/impression : PDFView4NETcharge des PDFs existants pour l'affichage, l'impression ou le rendu d'images. Il ne génère pas de PDFs à partir de HTML ou d'URLs.
-
Dépendance du cadre UI : Distribué en éditions WinFormset WPF; les deux ciblent le bureau Windows, ce qui limite l'utilisation dans les travailleurs de console ou les hôtes côté serveur.
-
Pas de HTML en PDF : Il n'y a pas de
HtmlToPdfConverterou d'API de rendu HTML dansO2S.Components.PDFView4NET. -
Manipulation limitée : La manipulation est centrée sur les annotations et les champs de formulaire plutôt que sur l'autorisation de contenu complet.
-
Aucun chemin Linux / Docker/Serveur : Le kit d'outils est uniquement pour Windows via WinForms/WPF et n'est pas conçu pour les hôtes ASP.NET sur Linux ou les charges de travail contenairisées.
- Actif, mais étroit : O2 Solutions livre toujours des versions ; le produit est maintenu, mais son champ est intentionnellement restreint.
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 | None |
| 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 couvre la création, la manipulation et le rendu de PDF en plus des flux de travail adjacents à l'affichage, traitant des cas d'utilisation qui vont au-delà de la portée d'affichage/rendu/impression de PDFView4NET.
IronPDF est également indépendant du contexte - il fonctionne dans les applications web, les services, et les applications console sur Windows, Linux, macOS, Docker, et Azure, ce qui peut être important pour les projets qui nécessitent un support multiplateforme ou un hébergement côté serveur.
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
<PackageReference Include="O2S.Components.PDFView4NET.Win" Version="*" Remove />
<PackageReference Include="IronPdf" Version="*" />
<PackageReference Include="O2S.Components.PDFView4NET.Win" Version="*" Remove />
<PackageReference Include="IronPdf" Version="*" />
Ou via CLI :
dotnet remove package O2S.Components.PDFView4NET.Win
# (use O2S.Components.PDFView4NET.WPF for the WPFedition)
dotnet add package IronPdf
dotnet remove package O2S.Components.PDFView4NET.Win
# (use O2S.Components.PDFView4NET.WPF for the WPFedition)
dotnet add package IronPdf
Configuration de la licence
// Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
' Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
Référence API complète
Modifications de l'espace de nommage
// Before: PDFView4NET
using O2S.Components.PDFView4NET;
// After: IronPDF
using IronPdf;
// Before: PDFView4NET
using O2S.Components.PDFView4NET;
// After: IronPDF
using IronPdf;
Imports IronPdf
Mappages de l'API de base
| PDFView4NET | IronPDF |
|---|---|
new PDFDocument(); doc.Load(path) |
PdfDocument.FromFile(path) |
new PDFDocument(); doc.Load(stream) |
PdfDocument.FromStream(stream) |
document.Pages[index] |
pdf.Pages[index] |
document.PageCount |
pdf.PageCount |
document.Print(...) |
pdf.Print() |
document.Close() |
pdf.Dispose() |
| N/A dans PDFView4NET | ChromePdfRenderer (HTML vers PDF) |
| N/A dans PDFView4NET | PdfDocument.Merge() |
| N/A dans PDFView4NET | pdf.ApplyWatermark() |
document.SecurityManager |
pdf.SecuritySettings |
Exemples de migration de code
Exemple 1 : Conversion d'une URL en PDF
Avant (PDFView4NET):
// NuGet: Install-Package O2S.Components.PDFView4NET.Win
using O2S.Components.PDFView4NET;
using System;
class Program
{
static void Main()
{
// PDFView4NETcannot fetch a URL and emit a PDF; it can only consume one.
PDFDocument document = new PDFDocument();
document.Load("input.pdf");
Console.WriteLine($"Loaded {document.PageCount} page(s) for view/print.");
document.Close();
}
}
// NuGet: Install-Package O2S.Components.PDFView4NET.Win
using O2S.Components.PDFView4NET;
using System;
class Program
{
static void Main()
{
// PDFView4NETcannot fetch a URL and emit a PDF; it can only consume one.
PDFDocument document = new PDFDocument();
document.Load("input.pdf");
Console.WriteLine($"Loaded {document.PageCount} page(s) for view/print.");
document.Close();
}
}
Imports O2S.Components.PDFView4NET
Imports System
Class Program
Shared Sub Main()
' PDFView4NET cannot fetch a URL and emit a PDF; it can only consume one.
Dim document As New PDFDocument()
document.Load("input.pdf")
Console.WriteLine($"Loaded {document.PageCount} page(s) for view/print.")
document.Close()
End Sub
End Class
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");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderUrlAsPdf("https://example.com")
pdf.SaveAs("output.pdf")
End Sub
End Class
PDFView4NET n'a pas de surface de rendu HTML/URL — il n'y a pas de HtmlToPdfConverter dans O2S.Components.PDFView4NET, donc une URL doit d'abord être rendue en PDF par un autre outil puis chargée pour visualisation/impression.IronPDF gère toute la conversion avec un seul appel ChromePdfRenderer.RenderUrlAsPdf() qui renvoie un PdfDocument que vous sauvegardez avec SaveAs(). 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.Win
using O2S.Components.PDFView4NET;
using System;
class Program
{
static void Main()
{
// The HTML string cannot be rendered by PDFView4NET. Assume an upstream
// tool produced "document.pdf"; PDFView4NETcan then display or print it.
PDFDocument document = new PDFDocument();
document.Load("document.pdf");
Console.WriteLine($"Document ready for viewing — {document.PageCount} page(s).");
document.Close();
}
}
// NuGet: Install-Package O2S.Components.PDFView4NET.Win
using O2S.Components.PDFView4NET;
using System;
class Program
{
static void Main()
{
// The HTML string cannot be rendered by PDFView4NET. Assume an upstream
// tool produced "document.pdf"; PDFView4NETcan then display or print it.
PDFDocument document = new PDFDocument();
document.Load("document.pdf");
Console.WriteLine($"Document ready for viewing — {document.PageCount} page(s).");
document.Close();
}
}
Imports O2S.Components.PDFView4NET
Imports System
Class Program
Shared Sub Main()
' The HTML string cannot be rendered by PDFView4NET. Assume an upstream
' tool produced "document.pdf"; PDFView4NET can then display or print it.
Dim document As New PDFDocument()
document.Load("document.pdf")
Console.WriteLine($"Document ready for viewing — {document.PageCount} page(s).")
document.Close()
End Sub
End Class
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");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim htmlContent As String = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>"
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
pdf.SaveAs("document.pdf")
End Sub
End Class
Il n'y a pas de propriété HtmlContent ou d'API de rendu HTML dans O2S.Components.PDFView4NET, donc la chaîne HTML doit être produite sous forme de PDF ailleurs puis chargée dans le visualiseur.IronPDF accepte directement la chaîne HTML via RenderHtmlAsPdf() et renvoie un PdfDocument. Pour en savoir plus, consultez nos tutoriels.
Exemple 3 : Extraction de texte à partir d'un PDF
Avant (PDFView4NET):
// NuGet: Install-Package O2S.Components.PDFView4NET.Win
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();
document.Load(fs);
string text = "";
for (int i = 0; i < document.PageCount ; i++)
{
text += document.Pages[i].ExtractText();
}
Console.WriteLine(text);
document.Close();
}
}
}
// NuGet: Install-Package O2S.Components.PDFView4NET.Win
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();
document.Load(fs);
string text = "";
for (int i = 0; i < document.PageCount ; i++)
{
text += document.Pages[i].ExtractText();
}
Console.WriteLine(text);
document.Close();
}
}
}
Imports O2S.Components.PDFView4NET
Imports System
Imports System.IO
Class Program
Shared Sub Main()
Using fs As FileStream = File.OpenRead("document.pdf")
Dim document As New PDFDocument()
document.Load(fs)
Dim text As String = ""
For i As Integer = 0 To document.PageCount - 1
text &= document.Pages(i).ExtractText()
Next
Console.WriteLine(text)
document.Close()
End Using
End Sub
End Class
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);
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim pdf = PdfDocument.FromFile("document.pdf")
Dim text As String = pdf.ExtractAllText()
Console.WriteLine(text)
End Sub
End Class
Cet exemple met en évidence une différence importante entre les API. PDFView4NETnécessite la création d'un FileStream, l'instanciation d'un PDFDocument et l'appel de Load(fs), puis l'itération de document.PageCount et la concaténation de Pages[i].ExtractText() par page.
IronPDF simplifie cela de manière spectaculaire : PdfDocument.FromFile() charge le PDF directement à partir d'un chemin, 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.
Notes de migration essentielles
Surface de rendu HTML
PDFView4NET n'a pas d'API HTML-vers-PDF.IronPDF introduit ChromePdfRenderer pour l'entrée HTML/URL :
// IronPDF
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
// or: renderer.RenderUrlAsPdf(url);
pdf.SaveAs("output.pdf");
// IronPDF
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
// or: renderer.RenderUrlAsPdf(url);
pdf.SaveAs("output.pdf");
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
' or: renderer.RenderUrlAsPdf(url)
pdf.SaveAs("output.pdf")
Changement de chargement de document
// PDFView4NET: instantiate then Load(path) or Load(stream)
PDFDocument document = new PDFDocument();
document.Load("document.pdf");
// IronPDF: Direct file path
var pdf = PdfDocument.FromFile("document.pdf");
// PDFView4NET: instantiate then Load(path) or Load(stream)
PDFDocument document = new PDFDocument();
document.Load("document.pdf");
// IronPDF: Direct file path
var pdf = PdfDocument.FromFile("document.pdf");
' PDFView4NET: instantiate then Load(path) or Load(stream)
Dim document As New PDFDocument()
document.Load("document.pdf")
' IronPDF: Direct file path
Dim pdf = PdfDocument.FromFile("document.pdf")
Modification de l'accès à la page
// PDFView4NET: document.PageCount and document.Pages[i]
for (int i = 0; i < document.PageCount ; 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.PageCount and document.Pages[i]
for (int i = 0; i < document.PageCount ; i++)
{
document.Pages[i].ExtractText();
}
// IronPDF: pdf.PageCount and Pages[i] or ExtractAllText()
string text = pdf.ExtractAllText();
// Or per-page: pdf.ExtractTextFromPage(0);
Imports System
' PDFView4NET: document.PageCount and document.Pages(i)
For i As Integer = 0 To document.PageCount - 1
document.Pages(i).ExtractText()
Next
' IronPDF: pdf.PageCount and Pages(i) or ExtractAllText()
Dim text As String = pdf.ExtractAllText()
' Or per-page: pdf.ExtractTextFromPage(0)
Enregistrer le changement de méthode
// PDFView4NEThas no save-from-HTML path; saving applies after edits on a loaded document.
// IronPDF: SaveAs()
pdf.SaveAs("output.pdf");
// PDFView4NEThas no save-from-HTML path; saving applies after edits on a loaded document.
// IronPDF: SaveAs()
pdf.SaveAs("output.pdf");
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");
Dim pdf1 = PdfDocument.FromFile("chapter1.pdf")
Dim pdf2 = PdfDocument.FromFile("chapter2.pdf")
Dim merged = PdfDocument.Merge(pdf1, pdf2)
merged.SaveAs("complete_book.pdf")
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");
Dim 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")
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");
Dim pdf = PdfDocument.FromFile("document.pdf")
pdf.SecuritySettings.OwnerPassword = "owner123"
pdf.SecuritySettings.UserPassword = "user456"
pdf.SecuritySettings.AllowUserCopyPasteContent = False
pdf.SaveAs("protected.pdf")
Remplissage de formulaires
var pdf = PdfDocument.FromFile("form.pdf");
pdf.Form.FindFormField("FirstName").Value = "John";
pdf.Form.FindFormField("LastName").Value = "Doe";
pdf.SaveAs("filled_form.pdf");
var pdf = PdfDocument.FromFile("form.pdf");
pdf.Form.FindFormField("FirstName").Value = "John";
pdf.Form.FindFormField("LastName").Value = "Doe";
pdf.SaveAs("filled_form.pdf");
Dim pdf = PdfDocument.FromFile("form.pdf")
pdf.Form.FindFormField("FirstName").Value = "John"
pdf.Form.FindFormField("LastName").Value = "Doe"
pdf.SaveAs("filled_form.pdf")
Traitement côté serveur
PDFView4NET ne peut pas fonctionner dans un environnement serveur.IronPDF excelle 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");
}
<HttpGet>
Public Function GeneratePdf() As IActionResult
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(GetReportHtml())
Return File(pdf.BinaryData, "application/pdf", "report.pdf")
End Function
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 licence IronPDF sur IronPDF
Modifications du paquet
- Supprimez le package NuGet
O2S.Components.PDFView4NET.Win(ou.WPF) - Installez le package NuGet
IronPdf:dotnet add package IronPdf
Modifications du code
- Mettez à jour les imports de namespace (
using O2S.Components.PDFView4NET;→using IronPdf;) - Introduisez
ChromePdfRendererpour toute entrée HTML ou URL (aucun équivalent PDFView4NET) - Remplacer
new PDFDocument(); document.Load(path)withPdfDocument.FromFile(path) - Remplacer
new PDFDocument(); document.Load(stream)withPdfDocument.FromStream(stream) - Replace manual
for (int i = 0; i < document.PageCount ; i++)text extraction withpdf.ExtractAllText()(orpdf.ExtractTextFromPage(i)) - Remplacez
document.Close()avecpdf.Dispose()(ou un blocusing) - 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 que le déploiement du serveur fonctionne (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

