Passer au contenu du pied de page
GUIDES DE MIGRATION

Comment migrer de PrinceXML à IronPDF 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. Surcharge de gestion des processus : Il faut lancer, surveiller et terminer les processus externes.

  2. Aucune intégration .NET native : communication via stdin/stdout ou 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 $ et plus).

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

  6. Pas d'Async/Await : appels bloquants ou wrappers asynchrones complexes requis.

  7. 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 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 : possibilité d'installer des packages NuGet
  3. 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
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";
' Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
$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;
' Before: PrinceXML
Imports PrinceXMLWrapper
Imports System.Diagnostics
Imports System.IO

' After: IronPDF
Imports IronPdf
$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 Incluez le CSS dans le HTML ou utilisez 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: A4 landscape PaperSize = PdfPaperSize.A4 + PaperOrientation = Landscape
margin: 2cm MarginTop/Bottom/Left/Right = 56
margin-top: 1in MarginTop = 72
@top-center { content: "..." } HtmlHeader avec div centrée
@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 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");
    }
}
Imports PrinceXMLWrapper
Imports System

Module Program
    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 Module
$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");
    }
}
Imports IronPdf
Imports System

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()
        Dim pdf = renderer.RenderHtmlFileAsPdf("input.html")
        pdf.SaveAs("output.pdf")
        Console.WriteLine("PDF created successfully")
    End Sub
End Class
$vbLabelText   $csharpLabel

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 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");
    }
}
Imports PrinceXMLWrapper
Imports System

Class Program
    Shared Sub Main()
        Dim prince As 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")
    End Sub
End Class
$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");
    }
}
Imports IronPdf
Imports System

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()
        renderer.RenderingOptions.EnableJavaScript = True
        renderer.RenderingOptions.PdfTitle = "Website Export"

        Dim pdf = renderer.RenderUrlAsPdf("https://example.com")
        pdf.Encrypt("password")
        pdf.SaveAs("webpage.pdf")
        Console.WriteLine("URL converted to PDF")
    End Sub
End Class
$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 les propriétés RenderingOptions pour les paramètres de pré-rendu et les 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 requiert 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");
    }
}
Imports PrinceXMLWrapper
Imports System
Imports System.IO

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

        Dim prince As New Prince("C:\Program Files\Prince\engine\bin\prince.exe")
        prince.Convert("temp.html", "styled-output.pdf")
        Console.WriteLine("Styled PDF created")
    End Sub
End Module
$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");
    }
}
Imports IronPdf
Imports System

Class Program
    Shared 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 renderer = New ChromePdfRenderer()
        Dim pdf = renderer.RenderHtmlAsPdf(html)
        pdf.SaveAs("styled-output.pdf")
        Console.WriteLine("Styled PDF created")
    End Sub
End Class
$vbLabelText   $csharpLabel

Cet exemple met en évidence une différence critique : PrinceXMLnécessite une entrée de fichier, vous devez donc créer un fichier temporaire (File.WriteAllText("temp.html", html)) avant la conversion.IronPDFaccepte directement les chaînes HTML, sans fichiers temporaires, sans code de nettoyage, sans 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
};
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
}
$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 marges CSS (@top-center, @bottom-right) sont spécifiques à Prince. Utilisez plutôt HtmlFooter.

Sujet 3 : string-set/content ne fonctionne pas

La propriété CSS string-set est spécifique à Prince. Utilisez l'espace réservé {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>"
};
$vbLabelText   $csharpLabel

Edition 4 : compteur(s) incorrect(s)

Utilisez l'espace réservé {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")
$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);
Dim signature = New PdfSignature("certificate.pfx", "password")
pdf.Sign(signature)
$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");
Dim pdf = PdfDocument.FromFile("form.pdf")
pdf.Form.GetFieldByName("Name").Value = "John Doe"
pdf.SaveAs("filled_form.pdf")
$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 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 les fonctions JavaScriptde Prince
  • Identifier les fonctionnalités PDF utilisées (cryptage, métadonnées)
  • Obtenez votre clé de licenceIronPDFsur IronPDF

Modifications du code

  • Supprimer le package NuGet PrinceXMLWrapper
  • Installer le package NuGet IronPdf
  • Mettre à jour les importations d'espace de noms
  • Remplacez l'instanciation Prince par ChromePdfRenderer
  • Remplacez prince.Convert() par RenderHtmlFileAsPdf() ou RenderHtmlAsPdf()
  • Convertir les méthodes setter en propriétés RenderingOptions
  • Migrer le CSS de @page vers RenderingOptions
  • Remplacez les cases 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

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

Équipe de soutien Iron

Nous sommes en ligne 24 heures sur 24, 5 jours sur 7.
Chat
Email
Appelez-moi