Passer au contenu du pied de page
GUIDES DE MIGRATION

Comment migrer de PrinceXML à IronPDF en C#

Migrer de PrinceXMLàIronPDF: Guide complet de migration en C

La migration de PrinceXMLversIronPDFtransforme 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 :

  1. Frais généraux de gestion des processus : Doit créer, surveiller et terminer des processus externes.

  2. Pas d'intégration native de .NET : Communiquer via stdin/stdout ou des fichiers temporaires.

  3. Complexité du déploiement : Nécessite l'installation de Prince sur chaque serveur.

  4. Licence par serveur : Chaque déploiement nécessite une licence distincte (495+).

  5. Difficulté de traitement des erreurs : Analyser le texte pour détecter les erreurs.

  6. No Async/Await : appels bloquants ou wrappers asynchrones complexes requis.

  7. Dépendances du chemin d'accès : L'exécutable Prince doit être localisé sur PATH ou sur 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 Par serveur (495+) 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 qui prévoient l'adoption de .NET 10 et C# 14 d'ici 2025 et 2026, le déploiement transparent d'IronPDF ne nécessite aucune dépendance externe ni aucun processus serveur et allège ainsi le fardeau de l'intégration dans le cadre .NET.


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 : Capacité à installer des paquets NuGet
  3. Licence IronPDF : Obtenez votre clé de licence sur ironpdf.com

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
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";
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

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

Référence API complète

Modifications de l'espace de nommage

// Before: PrinceXML
using PrinceXMLWrapper;
using System.Diagnostics;
using System.IO;

// After: IronPDF
using IronPdf;
// Before: PrinceXML
using PrinceXMLWrapper;
using System.Diagnostics;
using System.IO;

// After: IronPDF
using IronPdf;
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

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 --utilisateur-mot-de-passe=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
taille : A4 PaperSize = PdfPaperSize.A4
taille : Lettre PaperSize = PdfPaperSize.Letter
taille : A4paysage PaperSize = PdfPaperSize.A4+ PaperOrientation = Landscape
marge : 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} placeholder

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 PrinceXMLWrapper;
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 PrinceXMLWrapper;
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");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$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.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()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlFileAsPdf("input.html");
        pdf.SaveAs("output.pdf");
        Console.WriteLine("PDF created successfully");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Cet exemple illustre la différence architecturale fondamentale. PrinceXMLnécessite l'instanciation d'un objet Prince avec le chemin d'accès complet à l'exécutable ("C:\NProgram Files\NPrince\Ngengine\Nbin\Nprince.exe"), puis l'appel de Convert() avec les chemins d'accès d'entrée et de sortie.

IronPDF élimine entièrement 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 PrinceXMLWrapper;
using System;

class Program
{
    static void Main()
    {
        Prince prince = new Prince("C:\\Program Files\\Prince\\engine\\bin\\prince.exe");
        prince.SetJavaScript(true);
        prince.SetEncrypt(true);
        prince.SetPDFTitle("Website Export");
        prince.Convert("https://example.com", "webpage.pdf");
        Console.WriteLine("URL converted to PDF");
    }
}
// NuGet: Install-Package PrinceXMLWrapper
using PrinceXMLWrapper;
using System;

class Program
{
    static void Main()
    {
        Prince prince = new Prince("C:\\Program Files\\Prince\\engine\\bin\\prince.exe");
        prince.SetJavaScript(true);
        prince.SetEncrypt(true);
        prince.SetPDFTitle("Website Export");
        prince.Convert("https://example.com", "webpage.pdf");
        Console.WriteLine("URL converted to PDF");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Après (IronPDF):

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.EnableJavaScript = true;
        renderer.RenderingOptions.PdfTitle = "Website Export";

        var pdf = renderer.RenderUrlAsPdf("https://example.com");
        pdf.Encrypt("password");
        pdf.SaveAs("webpage.pdf");
        Console.WriteLine("URL converted to PDF");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.EnableJavaScript = true;
        renderer.RenderingOptions.PdfTitle = "Website Export";

        var pdf = renderer.RenderUrlAsPdf("https://example.com");
        pdf.Encrypt("password");
        pdf.SaveAs("webpage.pdf");
        Console.WriteLine("URL converted to PDF");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Cet exemple montre comment les options PrinceXMLcorrespondent aux propriétés IronPDF. PrinceXMLutilise des méthodes setter (SetJavaScript(), SetEncrypt(), SetPDFTitle()) avant la conversion.IronPDFutilise des propriétés RenderingOptions pour les paramètres de pré-rendu, et des méthodes de post-rendu comme Encrypt() sur l'objet PdfDocument.

Correspondances clés :

  • prince.SetJavaScript(true)renderer.RenderingOptions.EnableJavaScript = true
  • prince.SetPDFTitle("...")renderer.RenderingOptions.PdfTitle = "..."
  • prince.SetEncrypt(true)pdf.Encrypt("password") (IronPDF nécessite un mot de passe)

Pour en savoir plus, consultez nos tutoriels.

Exemple 3 : Conversion d'une chaîne HTML en PDF

Avant (PrinceXML):

// NuGet: Install-Package PrinceXMLWrapper
using PrinceXMLWrapper;
using System;
using System.IO;

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>";
        File.WriteAllText("temp.html", html);

        Prince prince = new Prince("C:\\Program Files\\Prince\\engine\\bin\\prince.exe");
        prince.Convert("temp.html", "styled-output.pdf");
        Console.WriteLine("Styled PDF created");
    }
}
// NuGet: Install-Package PrinceXMLWrapper
using PrinceXMLWrapper;
using System;
using System.IO;

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>";
        File.WriteAllText("temp.html", html);

        Prince prince = new Prince("C:\\Program Files\\Prince\\engine\\bin\\prince.exe");
        prince.Convert("temp.html", "styled-output.pdf");
        Console.WriteLine("Styled PDF created");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Après (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
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>";

        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()
    {
        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");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Cet exemple met en évidence une différence essentielle : PrinceXMLnécessite l'entrée d'un fichier, vous devez donc créer un fichier temporaire (File.WriteAllText("temp.html", html)) avant la conversion. Le RenderHtmlAsPdf() d'IronPDF accepte directement les chaînes HTML - pas de fichiers temporaires, pas de code de nettoyage, pas de surcharge d'E/S disque.


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
};
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

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 boîtes de marge CSS (@top-center, @bottom-right) sont spécifiques à Prince. Utilisez plutôt HtmlHeader/HtmlFooter.

Sujet 3 : string-set/content ne fonctionne pas

La propriété CSS string-set est spécifique à Prince. Utilisez le caractère générique {html-title} de la balise <title> :

<title>Chapter 1: Introduction</title>
<title>Chapter 1: Introduction</title>
HTML
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
    HtmlFragment = "<div>{html-title}</div>"
};
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
    HtmlFragment = "<div>{html-title}</div>"
};
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Edition 4 : compteur(s) incorrect(s)

Utilisez le caractère générique {total-pages} d'IronPDF au lieu des compteurs CSS.


Comparaison des Performances

Opération PrinceXML IronPDF Notes
HTML simple ~400ms ~300ms IronPDFen cours de réalisation
CSS complexe ~600ms ~400ms Pas de surcharge de processus
Pages JavaScript Limité ~500ms Prise en charge complète de JS
Documents volumineux ~1500ms ~1000ms Une meilleure mémoire
Concurrent (10) ~4000ms ~1500ms Pool de fils
Frais généraux de démarrage ~200ms ~50ms Pas de processus de spawn

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");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

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

Signatures numériques

var signature = new PdfSignature("certificate.pfx", "password");
pdf.Sign(signature);
var signature = new PdfSignature("certificate.pfx", "password");
pdf.Sign(signature);
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

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");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

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 complète 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
  • [Liste des propriétés CSS spécifiques à Prince (prince-*, string-set)
  • [Notez toutes les fonctions JavaScriptde Prince
  • [Identifier les fonctionnalités PDF utilisées (cryptage, métadonnées)
  • [ ] Obtenir la clé de licenceIronPDFà partir de ironpdf.com

Modifications du code

  • [Supprimer le paquet PrinceXMLWrapper NuGet
  • [Installer le paquet IronPdf NuGet
  • [Mise à jour des importations d'espaces de noms
  • [Remplacer l'instanciation de Prince par ChromePdfRenderer
  • [Remplacer prince.Convert() par RenderHtmlFileAsPdf() ou RenderHtmlAsPdf()
  • [Convertir les méthodes setter en propriétés RenderingOptions
  • [Migrate @page CSS to RenderingOptions
  • [Remplacer les encadrés par HtmlHeader/HtmlFooter
  • convertir les compteurs CSS en caractères de remplacement {page}/{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

Post-Migration

  • [Test de conversion de fichiers HTML
  • [Test de conversion de chaînes HTML
  • [Test de conversion d'URL
  • [Vérifier que la taille des pages correspond
  • [Vérifier la concordance des marges
  • [Tester les en-têtes et les pieds de page
  • [Vérifier les numéros de page
  • [Test de cryptage/sécurité
  • [Supprimer l'installation de Prince sur les serveurs
  • [Mise à jour des scripts de déploiement

Conclusion

Pour les développeurs travaillant au sein de l'écosystème .NET,IronPDFoffre une solution robuste et complète. Ses capacités de manipulation étendues et son intégration simplifiée le rendent extrêmement pratique pour un large éventail de cas d'utilisation. En revanche, si la précision de l'impression est primordiale, en particulier pour tirer parti des fonctionnalités CSS Paged Media, PrinceXMLreste un choix judicieux.

Les principaux changements apportés à cette migration sont les suivants :

  1. Architecture: Processus de ligne de commande externe → Bibliothèque native .NET
  2. Instantiation : new Prince("path/to/exe")new ChromePdfRenderer()
  3. Conversion de fichiers : prince.Convert(input, output)renderer.RenderHtmlFileAsPdf(input).SaveAs(output)
  4. Chaînes HTML : Fichier temporaire requis → Direct RenderHtmlAsPdf(html)
  5. Options : Méthodes Setter (SetJavaScript()) → Propriétés (RenderingOptions.EnableJavaScript)
  6. CSS @page : Prise en charge native → Propriétés RenderingOptions (en anglais)
  7. En-têtes/Pieds de page : CSS margin boxes → HtmlHeader/HtmlFooter objets
  8. Numéros de page : Compteurs CSS → {page} et {total-pages} placeholders
  9. Nouvelles fonctionnalités : Fusion, division, édition de PDF, filigranes, signatures numériques, remplissage de formulaires

Explorez la documentation complète IronPDF, tutoriel, et référence API pour accélérer votre migration vers PrinceXML.

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