Comment rendre une chaîne HTML en PDF en C#
La migration de PrinceXMLvers IronPDF transforme votre flux de travail de génération de PDF d'un processus de ligne de commande externe à une bibliothèque native .NET. Ce guide fournit un chemin de migration complet, étape par étape, qui élimine la surcharge de gestion des processus, simplifie le déploiement et fournit des capacités de manipulation PDF étendues au-delà de la génération.
Pourquoi migrer de PrinceXMLà IronPDF
Comprendre PrinceXML
PrinceXML est un outil sophistiqué conçu pour exceller dans la conversion de contenu HTML en documents PDF parfaits pour l'impression grâce à son support dédié aux spécifications CSS Paged Media. Cette spécialisation permet à PrinceXMLde restituer les documents avec une grande fidélité aux modèles d'impression prévus - un attribut précieux pour les industries qui exigent un style d'impression détaillé, comme l'édition ou la documentation juridique.
Cependant, PrinceXMLn'est pas une bibliothèque .NET et fonctionne comme un outil de ligne de commande distinct, ce qui peut compliquer l'intégration pour les environnements qui préfèrent les solutions .NET pures. Le fait qu'elle repose sur un processus serveur distinct implique une gestion supplémentaire des ressources du système et une complexité potentiellement accrue pour les déploiements de projets.
Le problème du processus externe
PrinceXML fonctionne comme un exécutable de ligne de commande séparé, ce qui crée des défis architecturaux importants pour les applications .NET :
-
Surcharge de gestion des processus : Il faut lancer, surveiller et terminer les processus externes.
-
Aucune intégration .NET native : communication via stdin/stdout ou fichiers temporaires.
-
Complexité du déploiement : Nécessite l'installation de Prince sur chaque serveur.
-
Licence par serveur : Chaque déploiement nécessite une licence séparée.
-
Difficulté de gestion des erreurs : Analyser le texte de sortie pour détecter les erreurs.
-
Pas d'Async/Await : appels bloquants ou wrappers asynchrones complexes requis.
- Dépendances de chemin : l'exécutable Prince doit être localisé dans le PATH ou dans un chemin absolu.
Comparaison PrinceXMLvs IronPDF
| Aspect | PrinceXML | IronPDF |
|---|---|---|
| Architecture | Processus externe | Bibliothèque native .NET |
| Intégration | Ligne de commande | API directe |
| Déploiement | Installer sur chaque serveur | Paquet NuGet unique |
| Gestion des erreurs | Analyse du texte | exceptions .NET |
| Support asynchrone | Manuels d'accompagnement | Async/await natif |
| Manipulation de PDF | Génération uniquement | Manipulation complète (fusion, division, édition) |
| Licence | Bureau 495 $ / Serveur 3 800 $ ; free non-commercial use with logo watermark | Par développeur |
| Mises à jour | Réinstallation manuelle | Mise à jour de NuGet |
| Débogage | Difficultés | Prise en charge complète du débogueur |
| Signatures numériques | Non | Oui |
| Formulaires | Non | Oui |
| Support Docker | Complexe | Simple |
| Fonctions cloud | Difficultés | Facile d'accès |
IronPDF constitue une alternative grâce à ses capacités natives .NET, allant au-delà de la simple conversion HTML-PDF pour inclure des tâches de manipulation PDF avancées, telles que l'édition, la fusion et les signatures numériques. L'API d'IronPDF est conçue pour être simple et facile à utiliser, permettant aux développeurs d'effectuer des conversions et des manipulations avec un minimum de code passe-partout.
Pour les équipes adoptant .NET moderne, le déploiement transparent d'IronPDF ne nécessite pas de dépendances externes ni de processus serveur, et donc allège le fardeau de l'intégration dans le cadre .NET.
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
# Install IronPDF
dotnet add package IronPdf
# Remove Prince wrapper if using one
dotnet remove package PrinceXMLWrapper
# Install IronPDF
dotnet add package IronPdf
# Remove Prince wrapper if using one
dotnet remove package PrinceXMLWrapper
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"
Recherche sur l'utilisation de PrinceXML
# Find Prince process calls
grep -r "prince" --include="*.cs" .
grep -r "Process.Start" --include="*.cs" . | grep -i prince
grep -r "@page" --include="*.css" .
grep -r "prince-" --include="*.css" .
# Find Prince process calls
grep -r "prince" --include="*.cs" .
grep -r "Process.Start" --include="*.cs" . | grep -i prince
grep -r "@page" --include="*.css" .
grep -r "prince-" --include="*.css" .
Référence API complète
Modifications de l'espace de nommage
// Before: PrinceXML
using PrinceXML.Wrapper;
using System.Diagnostics;
using System.IO;
// After: IronPDF
using IronPdf;
// Before: PrinceXML
using PrinceXML.Wrapper;
using System.Diagnostics;
using System.IO;
// After: IronPDF
using IronPdf;
Imports IronPdf
Imports System.Diagnostics
Imports System.IO
Mappage de la ligne de commande à la méthode
| Commande Prince | Équivalent d'IronPDF |
|---|---|
prince input.html -o output.pdf |
renderer.RenderHtmlFileAsPdf("input.html").SaveAs("output.pdf") |
prince --style=custom.css input.html |
Inclure CSS dans HTML ou utiliser RenderingOptions |
prince --javascript |
renderer.RenderingOptions.EnableJavaScript = true |
prince --no-javascript |
renderer.RenderingOptions.EnableJavaScript = false |
prince --page-size=Letter |
renderer.RenderingOptions.PaperSize = PdfPaperSize.Letter |
prince --page-margin=1in |
renderer.RenderingOptions.MarginTop = 72 (72 points = 1 pouce) |
prince --encrypt |
pdf.SecuritySettings.OwnerPassword = "..." |
prince --user-password=pw |
pdf.SecuritySettings.UserPassword = "pw" |
prince --disallow-print |
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.NoPrint |
prince --disallow-copy |
pdf.SecuritySettings.AllowUserCopyPasteContent = false |
prince --baseurl=http://... |
renderer.RenderingOptions.BaseUrl = new Uri("http://...") |
prince --media=print |
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print |
prince --media=screen |
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Screen |
CSS @page to RenderingOptions Mapping (Correspondance entre @page et options de rendu)
| Propriété CSS @page | Équivalent d'IronPDF |
|---|---|
size: A4 |
PaperSize = PdfPaperSize.A4 |
size: Letter |
PaperSize = PdfPaperSize.Letter |
size: A4landscape |
PaperSize = PdfPaperSize.A4 + PaperOrientation = Landscape |
margin: 2cm |
MarginTop/Bottom/Left/Right = 56 |
margin-top: 1in |
MarginTop = 72 |
@top-center { content: "..." } |
HtmlHeader avec div centré |
@bottom-right { content: counter(page) } |
HtmlFooter avec {page} espace réservé |
Conversions de taille de page
| Taille | Points | Millimètres |
|---|---|---|
| Lettre | 612 x 792 | 216 x 279 |
| A4 | 595 x 842 | 210 x 297 |
| Juridique | 612 x 1008 | 216 x 356 |
| 1 pouce | 72 | 25.4 |
| 1 cm | 28.35 | 10 |
Exemples de migration de code
Exemple 1 : Conversion d'un fichier HTML en un fichier PDF
Avant (PrinceXML):
// NuGet: Install-Package PrinceXMLWrapper
using PrinceXML.Wrapper;
using System;
class Program
{
static void Main()
{
Prince prince = new Prince("C:\\Program Files\\Prince\\engine\\bin\\prince.exe");
prince.Convert("input.html", "output.pdf");
Console.WriteLine("PDF created successfully");
}
}
// NuGet: Install-Package PrinceXMLWrapper
using PrinceXML.Wrapper;
using System;
class Program
{
static void Main()
{
Prince prince = new Prince("C:\\Program Files\\Prince\\engine\\bin\\prince.exe");
prince.Convert("input.html", "output.pdf");
Console.WriteLine("PDF created successfully");
}
}
Imports PrinceXML.Wrapper
Imports System
Class Program
Shared Sub Main()
Dim prince As New Prince("C:\Program Files\Prince\engine\bin\prince.exe")
prince.Convert("input.html", "output.pdf")
Console.WriteLine("PDF created successfully")
End Sub
End Class
Après (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlFileAsPdf("input.html");
pdf.SaveAs("output.pdf");
Console.WriteLine("PDF created successfully");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlFileAsPdf("input.html");
pdf.SaveAs("output.pdf");
Console.WriteLine("PDF created successfully");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlFileAsPdf("input.html")
pdf.SaveAs("output.pdf")
Console.WriteLine("PDF created successfully")
End Sub
End Class
Cet exemple illustre la différence architecturale fondamentale. PrinceXMLnécessite d'instancier un objet Prince avec le chemin complet vers l'exécutable ("C:\\Program Files\\Prince\\engine\\bin\\prince.exe"), puis d'appeler Convert() avec les chemins d'entrée et de sortie.
IronPDF élimine complètement les dépendances de chemin : créez un ChromePdfRenderer, appelez RenderHtmlFileAsPdf() avec le chemin du fichier HTML et SaveAs() pour écrire le résultat. Pas de chemins exécutables, pas de gestion de processus, pas de dépendances de chemins. Consultez la documentation HTML vers PDF pour des exemples complets.
Exemple 2 : Conversion d'URL en PDF avec options
Avant (PrinceXML):
// NuGet: Install-Package PrinceXMLWrapper
using PrinceXML.Wrapper;
using System;
class Program
{
static void Main()
{
Prince prince = new Prince("C:\\Program Files\\Prince\\engine\\bin\\prince.exe");
prince.JavaScript = true;
prince.Encrypt = true;
prince.PdfTitle = "Website Export";
prince.Convert("https://example.com", "webpage.pdf");
Console.WriteLine("URL converted to PDF");
}
}
// NuGet: Install-Package PrinceXMLWrapper
using PrinceXML.Wrapper;
using System;
class Program
{
static void Main()
{
Prince prince = new Prince("C:\\Program Files\\Prince\\engine\\bin\\prince.exe");
prince.JavaScript = true;
prince.Encrypt = true;
prince.PdfTitle = "Website Export";
prince.Convert("https://example.com", "webpage.pdf");
Console.WriteLine("URL converted to PDF");
}
}
Imports PrinceXML.Wrapper
Imports System
Class Program
Shared Sub Main()
Dim prince As New Prince("C:\Program Files\Prince\engine\bin\prince.exe")
prince.JavaScript = True
prince.Encrypt = True
prince.PdfTitle = "Website Export"
prince.Convert("https://example.com", "webpage.pdf")
Console.WriteLine("URL converted to PDF")
End Sub
End Class
Après (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.Title = "Website Export";
var pdf = renderer.RenderUrlAsPdf("https://example.com");
pdf.SecuritySettings.OwnerPassword = "owner-password";
pdf.SecuritySettings.UserPassword = "user-password";
pdf.SaveAs("webpage.pdf");
Console.WriteLine("URL converted to PDF");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.Title = "Website Export";
var pdf = renderer.RenderUrlAsPdf("https://example.com");
pdf.SecuritySettings.OwnerPassword = "owner-password";
pdf.SecuritySettings.UserPassword = "user-password";
pdf.SaveAs("webpage.pdf");
Console.WriteLine("URL converted to PDF");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.EnableJavaScript = True
renderer.RenderingOptions.Title = "Website Export"
Dim pdf = renderer.RenderUrlAsPdf("https://example.com")
pdf.SecuritySettings.OwnerPassword = "owner-password"
pdf.SecuritySettings.UserPassword = "user-password"
pdf.SaveAs("webpage.pdf")
Console.WriteLine("URL converted to PDF")
End Sub
End Class
Cet exemple montre comment les options PrinceXMLcorrespondent aux propriétés IronPDF. PrinceXMLexpose la configuration sous forme de propriétés sur l'objet Prince (JavaScript, Encrypt, PdfTitle) avant la conversion.IronPDF utilise les propriétés RenderingOptions pour les paramètres de pré-rendu et applique le cryptage post-rendu via SecuritySettings sur le PdfDocument.
Correspondances clés :
prince.JavaScript = true→renderer.RenderingOptions.EnableJavaScript = trueprince.PdfTitle = "..."→renderer.RenderingOptions.Title = "..."prince.Encrypt = true→pdf.SecuritySettings.OwnerPassword = "..."/pdf.SecuritySettings.UserPassword = "..."
Pour en savoir plus, consultez nos tutoriels.
Exemple 3 : Conversion d'une chaîne HTML en PDF
Avant (PrinceXML):
// NuGet: Install-Package PrinceXMLWrapper
using PrinceXML.Wrapper;
using System;
class Program
{
static void Main()
{
string html = "<html><head><style>body { font-family: Arial; color: blue; }</style></head><body><h1>Hello World</h1></body></html>";
Prince prince = new Prince("C:\\Program Files\\Prince\\engine\\bin\\prince.exe");
// ConvertString accepts a raw HTML/XML string directly
prince.ConvertString(html, "styled-output.pdf");
Console.WriteLine("Styled PDF created");
}
}
// NuGet: Install-Package PrinceXMLWrapper
using PrinceXML.Wrapper;
using System;
class Program
{
static void Main()
{
string html = "<html><head><style>body { font-family: Arial; color: blue; }</style></head><body><h1>Hello World</h1></body></html>";
Prince prince = new Prince("C:\\Program Files\\Prince\\engine\\bin\\prince.exe");
// ConvertString accepts a raw HTML/XML string directly
prince.ConvertString(html, "styled-output.pdf");
Console.WriteLine("Styled PDF created");
}
}
Imports PrinceXML.Wrapper
Imports System
Module Program
Sub Main()
Dim html As String = "<html><head><style>body { font-family: Arial; color: blue; }</style></head><body><h1>Hello World</h1></body></html>"
Dim prince As New Prince("C:\Program Files\Prince\engine\bin\prince.exe")
' ConvertString accepts a raw HTML/XML string directly
prince.ConvertString(html, "styled-output.pdf")
Console.WriteLine("Styled PDF created")
End Sub
End Module
Après (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
string html = "<html><head><style>body { font-family: Arial; color: blue; }</style></head><body><h1>Hello World</h1></body></html>";
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("styled-output.pdf");
Console.WriteLine("Styled PDF created");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
string html = "<html><head><style>body { font-family: Arial; color: blue; }</style></head><body><h1>Hello World</h1></body></html>";
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("styled-output.pdf");
Console.WriteLine("Styled PDF created");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
Dim html As String = "<html><head><style>body { font-family: Arial; color: blue; }</style></head><body><h1>Hello World</h1></body></html>"
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("styled-output.pdf")
Console.WriteLine("Styled PDF created")
End Sub
End Class
Les deux bibliothèques acceptent directement une chaîne HTML : PrinceXMLvia ConvertString() et IronPDF via RenderHtmlAsPdf(). La différence architecturale reste — le ConvertString de PrinceXMLtransmet toujours l'entrée au binaire externe prince en arrière-plan, tandis qu'IronPDF effectue le rendu en interne sans exécutable externe.
Migration des médias paginés CSS
Bien que le support CSS Paged Mediade PrinceXMLsoit puissant, il crée une dépendance vis-à-vis des fournisseurs avec des CSS spécifiques à Prince qui ne fonctionneront pas ailleurs :
PrinceXML CSS :
@page {
size: A4;
margin: 2cm;
@top-center {
content: "Document Title";
}
@bottom-right {
content: counter(page);
}
}
/* Prince-specific extensions */
prince-pdf-page-label: "Chapter " counter(chapter);
prince-pdf-destination: attr(id);
IronPDF C# (équivalent):
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 56; // ~2cm
renderer.RenderingOptions.MarginBottom = 56;
renderer.RenderingOptions.MarginLeft = 56;
renderer.RenderingOptions.MarginRight = 56;
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
HtmlFragment = "<div style='text-align:center;'>Document Title</div>",
MaxHeight = 40
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
HtmlFragment = "<div style='text-align:right;'>Page {page} of {total-pages}</div>",
MaxHeight = 25
};
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 56; // ~2cm
renderer.RenderingOptions.MarginBottom = 56;
renderer.RenderingOptions.MarginLeft = 56;
renderer.RenderingOptions.MarginRight = 56;
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
HtmlFragment = "<div style='text-align:center;'>Document Title</div>",
MaxHeight = 40
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
HtmlFragment = "<div style='text-align:right;'>Page {page} of {total-pages}</div>",
MaxHeight = 25
};
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
renderer.RenderingOptions.MarginTop = 56 ' ~2cm
renderer.RenderingOptions.MarginBottom = 56
renderer.RenderingOptions.MarginLeft = 56
renderer.RenderingOptions.MarginRight = 56
renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter With {
.HtmlFragment = "<div style='text-align:center;'>Document Title</div>",
.MaxHeight = 40
}
renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter With {
.HtmlFragment = "<div style='text-align:right;'>Page {page} of {total-pages}</div>",
.MaxHeight = 25
}
Problèmes courants de migration CSS
Enjeu 1 : La @page CSS ne fonctionne pas
IronPDF utilise Chromium, dont la prise en charge des @pages est limitée. Convertir les règles CSS en options de rendu.
Problème 2 : Marges de page manquantes
Les marges CSS (@top-center, @bottom-right) sont spécifiques à Prince. Utilisez HtmlFooter à la place.
Sujet 3 : string-set/content ne fonctionne pas
La propriété CSS string-set est spécifique à Prince. Utiliser le placeur {html-title} de l'étiquette <title> :
<title>Chapter 1: Introduction</title>
<title>Chapter 1: Introduction</title>
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
HtmlFragment = "<div>{html-title}</div>"
};
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
HtmlFragment = "<div>{html-title}</div>"
};
Edition 4 : compteur(s) incorrect(s)
Utilisez le placeur {total-pages} d'IronPDF au lieu des compteurs CSS.
Comparaison des Performances
| Opération | PrinceXML | IronPDF |
|---|---|---|
| HTML simple | ~400ms | ~300ms |
| CSS complexe | ~600ms | ~400ms |
| Pages JavaScript | Limité | ~500ms |
| Documents volumineux | ~1500ms | ~1000ms |
| Concurrent (10) | ~4000ms | ~1500ms |
| Frais généraux de démarrage | ~200ms | ~50ms |
Nouvelles capacités après la migration
Après avoir migré vers IronPDF, vous bénéficiez de capacités que PrinceXMLne 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")
Marques de fond
pdf.ApplyWatermark("<h1 style='color:red; opacity:0.3;'>DRAFT</h1>");
pdf.ApplyWatermark("<h1 style='color:red; opacity:0.3;'>DRAFT</h1>");
IRON VB CONVERTER ERROR developers@ironsoftware.com
Signatures numériques
var signature = new PdfSignature("certificate.pfx", "password");
pdf.Sign(signature);
var signature = new PdfSignature("certificate.pfx", "password");
pdf.Sign(signature);
Dim signature = New PdfSignature("certificate.pfx", "password")
pdf.Sign(signature)
Remplissage de formulaires
var pdf = PdfDocument.FromFile("form.pdf");
pdf.Form.GetFieldByName("Name").Value = "John Doe";
pdf.SaveAs("filled_form.pdf");
var pdf = PdfDocument.FromFile("form.pdf");
pdf.Form.GetFieldByName("Name").Value = "John Doe";
pdf.SaveAs("filled_form.pdf");
Dim pdf = PdfDocument.FromFile("form.pdf")
pdf.Form.GetFieldByName("Name").Value = "John Doe"
pdf.SaveAs("filled_form.pdf")
Résumé de la comparaison des fonctionnalités
| Fonction | PrinceXML | IronPDF |
|---|---|---|
| Natif .NET | Non | Oui |
| Processus externe | Les exigences sont les suivantes | Non |
| Prise en charge de l'asynchronisme | Emballage du manuel | Async/await natif |
| CSS Paged Media | Prise en charge | Via RenderingOptions |
| Grille CSS | Oui | Oui |
| Flexbox | Oui | Oui |
| JavaScript | Limité | ES2024 complet |
| Génération | Oui | Oui |
| Fusionner | Non | Oui |
| Répartition | Non | Oui |
| Édition | Non | Oui |
| Filigranes | CSS uniquement | HTML/CSS + API |
| Signatures numériques | Non | Oui |
| PDF/A | Oui | Oui |
| Chiffrement | Oui | Oui |
| Formulaires | Non | Oui |
| Paquet NuGet | Non | Oui |
| Installation du serveur | Les exigences sont les suivantes | Non |
Liste de contrôle de la migration
Pré-migration
- Identifier toutes les invocations de la ligne de commande Prince
- Règles CSS @page du document utilisées
- Lister les propriétés CSS spécifiques à Prince (
prince-*,string-set) - Notez les fonctions JavaScriptde Prince
- Identifier les fonctionnalités PDF utilisées (cryptage, métadonnées)
- Obtenez votre clé de licence IronPDF sur IronPDF
Modifications du code
- Retirer le package NuGet
PrinceXMLWrapper - Installer le package NuGet
IronPdf - Mettre à jour les importations d'espace de noms
- Remplacer l'instanciation
PrinceparChromePdfRenderer - Remplacer
prince.Convert()parRenderHtmlFileAsPdf()ouRenderHtmlAsPdf() - Convertir les méthodes setter en propriétés
RenderingOptions - Migrer CSS @page vers
RenderingOptions - Remplacer les boîtes de marge par
HtmlFooter - Convertir les compteurs CSS en espaces réservés
{total-pages} - Supprimer la gestion des fichiers temporaires pour les chaînes HTML
- Ajouter l'initialisation de la licence au démarrage de l'application
Après la migration
- Test de conversion de fichier HTML
- Test de conversion de chaîne HTML
- Test de conversion d'URL
- Vérifiez que les formats de page correspondent
- Vérifier que les marges correspondent
- Testez les en-têtes et les pieds de page
- Vérifier les numéros de page
- Tester le chiffrement/la sécurité
- Supprimer l'installation de Prince des serveurs
- Mettre à jour les scripts de déploiement

