Passer au contenu du pied de page
GUIDES DE MIGRATION

Comment migrer de PDFreactor à IronPDF en C#

La migration de PDFreactorversIronPDFélimine les dépendances Java et l'infrastructure du serveur tout en offrant des capacités équivalentes de conversion de HTML en PDF par le biais d'une bibliothèque .NET native. Ce guide fournit un chemin de migration complet, étape par étape, qui remplace votre architecture de serveur basée sur Java par une bibliothèque en cours de traitement qui s'intègre de manière transparente dans les applications .NET.

Pourquoi migrer de PDFreactorà IronPDF

Comprendre PDFreactor

PDFreactor est un puissant serveur de conversion HTML-PDF qui s'intègre à diverses plateformes. En tant que solution commerciale, PDFreactors'appuie sur sa technologie propriétaire pour convertir le contenu HTML et CSS en documents PDF de haute qualité. Parmi ses attributs notables, PDFreactorprend en charge un large éventail de propriétés CSS, ce qui en fait un candidat de choix pour le rendu de mises en page complexes.

Toutefois, la dépendance de PDFreactorà l'égard de Java pose certains problèmes dans les environnements .NET, où sa nature non native peut compliquer le déploiement et l'intégration. Sa dépendance à l'égard de Java entraîne une surcharge dans les applications .NET, ce qui nécessite souvent un travail d'intégration supplémentaire.

Le problème de la dépendance de Java

L'architecture de PDFreactorpose plusieurs problèmes dans les environnements .NET :

  1. Environnement d'exécution Java requis : nécessite l'installation de JRE/JDK sur tous les serveurs.

  2. Architecture serveur : Fonctionne comme un service distinct nécessitant une infrastructure supplémentaire. En tant que solution basée sur un serveur, PDFreactornécessite des appels à l'API REST pour chaque conversion.

  3. Déploiement complexe : la gestion des dépendances Java dans un écosystème principalement .NET peut compliquer la configuration et augmenter les coûts de maintenance. Deux runtimes (Java + .NET) à gérer dans les pipelines CI/CD.

  4. Communication inter-processus : la communication via API REST ou socket ajoute de la latence. Chaque conversion PDF nécessite un aller-retour HTTP vers le serveur.

  5. Gestion séparée des licences : Licence liée à l'instance du serveur, et non à l'application. Licence par serveur liée à l'instance de service Java.

  6. Isolation des ressources : Gestion séparée de la mémoire et du processeur. Serveur supplémentaire à surveiller, à mettre à l'échelle et à entretenir.

Comparaison PDFreactorvs IronPDF

Caractéristique/aspect PDFreactor IronPDF
Bibliothèque native .NET Non (basé sur Java) Oui
Runtime Java (serveur externe) Natif .NET(en cours)
Architecture Service API REST Bibliothèque NuGet
Déploiement Java + configuration du serveur Paquet NuGet unique
Dépendances JRE + client HTTP Autonome
Latence Aller-retour sur le réseau Appels de méthode directs
Capacité multiplateforme Oui (dépendant de Java) Oui (Chromium inclus)
Support CSS Prise en charge avancée de CSS3, CSS Paged Media Prise en charge complète de HTML5/CSS3
Complexité du déploiement Plus complexe en raison de Java Simple, s'intègre directement à .NET
Fonctionnalités de manipulation du PDF Basique (Génération uniquement) Extensif, incluant la fusion, le fractionnement, l'édition et l'annotation

Contrairement à PDFreactor,IronPDFse présente comme une bibliothèque native .NET, spécialement conçue pour s'intégrer de manière transparente dans les projets .NET sans dépendances externes comme Java.IronPDFutilise un moteur de rendu Chromium intégré, ce qui lui permet de convertir HTML en PDF avec seulement quelques lignes de code.

Pour les équipes qui prévoient l'adoption de .NET 10 et C# 14 d'ici 2025 et 2026,IronPDFfournit une solution native .NET qui élimine la complexité du serveur Java tout en offrant une gestion complète du cycle de vie des PDF.


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

# Remove PDFreactorNuGet packages
dotnet remove package PDFreactor.NET
dotnet remove package PDFreactor.Native.Windows.x64

# Stop PDFreactorserver service (if running locally)
# Windows: net stop PDFreactor
# Linux: sudo systemctl stop pdfreactor

# Install IronPDF
dotnet add package IronPdf
# Remove PDFreactorNuGet packages
dotnet remove package PDFreactor.NET
dotnet remove package PDFreactor.Native.Windows.x64

# Stop PDFreactorserver service (if running locally)
# Windows: net stop PDFreactor
# Linux: sudo systemctl stop pdfreactor

# Install IronPDF
dotnet add package IronPdf
SHELL

Configuration de la licence

PDFreactor (sur serveur):

// License configured on server via config file or command line
// Client connects to licensed server
var pdfReactor = new PDFreactor("http://pdfreactor-server:9423");
// License configured on server via config file or command line
// Client connects to licensed server
var pdfReactor = new PDFreactor("http://pdfreactor-server:9423");
' License configured on server via config file or command line
' Client connects to licensed server
Dim pdfReactor = New PDFreactor("http://pdfreactor-server:9423")
$vbLabelText   $csharpLabel

IronPDF (niveau application):

// One-time setup at application startup
IronPdf.License.LicenseKey = "YOUR-IRONPDF-LICENSE-KEY";
// One-time setup at application startup
IronPdf.License.LicenseKey = "YOUR-IRONPDF-LICENSE-KEY";
' One-time setup at application startup
IronPdf.License.LicenseKey = "YOUR-IRONPDF-LICENSE-KEY"
$vbLabelText   $csharpLabel

Identifier l'utilisation de PDFreactor

# Find PDFreactorusage
grep -r "PDFreactor\|RealObjects\|Configuration.*Document" --include="*.cs" .

# Find CSS Paged Mediarules to convert
grep -r "@page\|counter(page)\|counter(pages)" --include="*.cs" --include="*.css" .
# Find PDFreactorusage
grep -r "PDFreactor\|RealObjects\|Configuration.*Document" --include="*.cs" .

# Find CSS Paged Mediarules to convert
grep -r "@page\|counter(page)\|counter(pages)" --include="*.cs" --include="*.css" .
SHELL

Référence API complète

Modifications de l'espace de nommage

// Before: PDFreactor
using RealObjects.PDFreactor;
using System.IO;

// After: IronPDF
using IronPdf;
using IronPdf.Rendering;
// Before: PDFreactor
using RealObjects.PDFreactor;
using System.IO;

// After: IronPDF
using IronPdf;
using IronPdf.Rendering;
Imports IronPdf
Imports IronPdf.Rendering
Imports System.IO
$vbLabelText   $csharpLabel

Mappages de classes de base

PDFreactor IronPDF
PDFreactor ChromePdfRenderer
Configuration ChromePdfRenderOptions
Result PdfDocument
config.Document = html renderer.RenderHtmlAsPdf(html)
result.Document (byte[]) pdf.BinaryData

Mappages de propriétés de configuration

Configuration de PDFreactor Options de rendu IronPDF
config.Document = html renderer.RenderHtmlAsPdf(html)
config.Document = url renderer.RenderUrlAsPdf(url)
config.PageFormat = PageFormat.A4 RenderingOptions.PaperSize = PdfPaperSize.A4
config.PageOrientation RenderingOptions.PaperOrientation
config.PageMargins RenderingOptions.MarginTop/Bottom/Left/Right
config.EnableJavaScript = true RenderingOptions.EnableJavaScript = true
config.AddUserStyleSheet(css) Intégrer CSS dans HTML
config.Title pdf.MetaData.Title
config.Encryption pdf.SecuritySettings

Nouvelles fonctionnalités non disponibles dans PDFreactor

Fonctionnalité d'IronPDF Description du projet
PdfDocument.Merge() Fusionner plusieurs PDF
pdf.ApplyWatermark() Ajouter des filigranes
pdf.ExtractAllText() Extraction de texte
pdf.Form Remplissage de formulaires
pdf.Sign() Signatures numériques

Exemples de migration de code

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

Avant (PDFreactor):

// NuGet: Install-Package PDFreactor.Native.Windows.x64
using RealObjects.PDFreactor;
using System.IO;

class Program
{
    static void Main()
    {
        PDFreactorpdfReactor = new PDFreactor();

        string html = "<html><body><h1>Hello World</h1></body></html>";

        Configuration config = new Configuration();
        config.Document = html;

        Result result = pdfReactor.Convert(config);

        File.WriteAllBytes("output.pdf", result.Document);
    }
}
// NuGet: Install-Package PDFreactor.Native.Windows.x64
using RealObjects.PDFreactor;
using System.IO;

class Program
{
    static void Main()
    {
        PDFreactorpdfReactor = new PDFreactor();

        string html = "<html><body><h1>Hello World</h1></body></html>";

        Configuration config = new Configuration();
        config.Document = html;

        Result result = pdfReactor.Convert(config);

        File.WriteAllBytes("output.pdf", result.Document);
    }
}
Imports RealObjects.PDFreactor
Imports System.IO

Class Program
    Shared Sub Main()
        Dim pdfReactor As New PDFreactor()

        Dim html As String = "<html><body><h1>Hello World</h1></body></html>"

        Dim config As New Configuration()
        config.Document = html

        Dim result As Result = pdfReactor.Convert(config)

        File.WriteAllBytes("output.pdf", result.Document)
    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();

        string html = "<html><body><h1>Hello World</h1></body></html>";

        var pdf = renderer.RenderHtmlAsPdf(html);

        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        string html = "<html><body><h1>Hello World</h1></body></html>";

        var pdf = renderer.RenderHtmlAsPdf(html);

        pdf.SaveAs("output.pdf");
    }
}
Imports IronPdf
Imports System

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()

        Dim html As String = "<html><body><h1>Hello World</h1></body></html>"

        Dim pdf = renderer.RenderHtmlAsPdf(html)

        pdf.SaveAs("output.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

La différence fondamentale réside dans le modèle architectural. PDFreactornécessite la création d'une instance PDFreactor (qui se connecte au serveur Java), d'un objet Configuration séparé pour contenir les paramètres et le contenu HTML, l'appel de Convert() qui renvoie un objet Result, et enfin l'écriture des result.Document octets dans un fichier à l'aide de File.WriteAllBytes().

IronPDF simplifie cela en créant un ChromePdfRenderer, en appelant directement RenderHtmlAsPdf() avec la chaîne HTML, et en utilisant la méthode intégrée SaveAs() sur le PdfDocument renvoyé. Pas de connexion au serveur, pas d'objet de configuration, pas de manipulation manuelle d'octets. Consultez la documentation HTML vers PDF pour des exemples complets.

Exemple 2 : Conversion d'une URL en PDF

Avant (PDFreactor):

// NuGet: Install-Package PDFreactor.Native.Windows.x64
using RealObjects.PDFreactor;
using System.IO;

class Program
{
    static void Main()
    {
        PDFreactorpdfReactor = new PDFreactor();

        Configuration config = new Configuration();
        config.Document = "https://www.example.com";

        Result result = pdfReactor.Convert(config);

        File.WriteAllBytes("webpage.pdf", result.Document);
    }
}
// NuGet: Install-Package PDFreactor.Native.Windows.x64
using RealObjects.PDFreactor;
using System.IO;

class Program
{
    static void Main()
    {
        PDFreactorpdfReactor = new PDFreactor();

        Configuration config = new Configuration();
        config.Document = "https://www.example.com";

        Result result = pdfReactor.Convert(config);

        File.WriteAllBytes("webpage.pdf", result.Document);
    }
}
Imports RealObjects.PDFreactor
Imports System.IO

Class Program
    Shared Sub Main()
        Dim pdfReactor As New PDFreactor()

        Dim config As New Configuration()
        config.Document = "https://www.example.com"

        Dim result As Result = pdfReactor.Convert(config)

        File.WriteAllBytes("webpage.pdf", result.Document)
    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();

        var pdf = renderer.RenderUrlAsPdf("https://www.example.com");

        pdf.SaveAs("webpage.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        var pdf = renderer.RenderUrlAsPdf("https://www.example.com");

        pdf.SaveAs("webpage.pdf");
    }
}
Imports IronPdf
Imports System

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()

        Dim pdf = renderer.RenderUrlAsPdf("https://www.example.com")

        pdf.SaveAs("webpage.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

PDFreactor utilise la même propriété config.Document pour les chaînes HTML et les URL, déterminant automatiquement le type.IronPDFfournit des méthodes explicites : RenderHtmlAsPdf() pour les chaînes HTML et RenderUrlAsPdf() pour les URL. Cette approche explicite améliore la clarté du code et la prise en charge IntelliSense. Pour en savoir plus, consultez nos tutoriels.

Exemple 3 : En-têtes et pieds de page avec numéros de page

Avant (PDFreactor):

// NuGet: Install-Package PDFreactor.Native.Windows.x64
using RealObjects.PDFreactor;
using System.IO;

class Program
{
    static void Main()
    {
        PDFreactorpdfReactor = new PDFreactor();

        string html = "<html><body><h1>Document with Headers</h1><p>Content here</p></body></html>";

        Configuration config = new Configuration();
        config.Document = html;
        config.AddUserStyleSheet("@page { @top-center { content: 'Header Text'; } @bottom-center { content: 'Page ' counter(page); } }");

        Result result = pdfReactor.Convert(config);

        File.WriteAllBytes("document.pdf", result.Document);
    }
}
// NuGet: Install-Package PDFreactor.Native.Windows.x64
using RealObjects.PDFreactor;
using System.IO;

class Program
{
    static void Main()
    {
        PDFreactorpdfReactor = new PDFreactor();

        string html = "<html><body><h1>Document with Headers</h1><p>Content here</p></body></html>";

        Configuration config = new Configuration();
        config.Document = html;
        config.AddUserStyleSheet("@page { @top-center { content: 'Header Text'; } @bottom-center { content: 'Page ' counter(page); } }");

        Result result = pdfReactor.Convert(config);

        File.WriteAllBytes("document.pdf", result.Document);
    }
}
Imports RealObjects.PDFreactor
Imports System.IO

Module Program
    Sub Main()
        Dim pdfReactor As New PDFreactor()

        Dim html As String = "<html><body><h1>Document with Headers</h1><p>Content here</p></body></html>"

        Dim config As New Configuration()
        config.Document = html
        config.AddUserStyleSheet("@page { @top-center { content: 'Header Text'; } @bottom-center { content: 'Page ' counter(page); } }")

        Dim result As Result = pdfReactor.Convert(config)

        File.WriteAllBytes("document.pdf", result.Document)
    End Sub
End Module
$vbLabelText   $csharpLabel

Après (IronPDF):

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
        {
            CenterText = "Header Text"
        };

        renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
        {
            CenterText = "Page {page}"
        };

        string html = "<html><body><h1>Document with Headers</h1><p>Content here</p></body></html>";

        var pdf = renderer.RenderHtmlAsPdf(html);

        pdf.SaveAs("document.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
        {
            CenterText = "Header Text"
        };

        renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
        {
            CenterText = "Page {page}"
        };

        string html = "<html><body><h1>Document with Headers</h1><p>Content here</p></body></html>";

        var pdf = renderer.RenderHtmlAsPdf(html);

        pdf.SaveAs("document.pdf");
    }
}
Imports IronPdf
Imports IronPdf.Rendering
Imports System

Module Program
    Sub Main()
        Dim renderer As New ChromePdfRenderer()

        renderer.RenderingOptions.TextHeader = New TextHeaderFooter() With {
            .CenterText = "Header Text"
        }

        renderer.RenderingOptions.TextFooter = New TextHeaderFooter() With {
            .CenterText = "Page {page}"
        }

        Dim html As String = "<html><body><h1>Document with Headers</h1><p>Content here</p></body></html>"

        Dim pdf = renderer.RenderHtmlAsPdf(html)

        pdf.SaveAs("document.pdf")
    End Sub
End Module
$vbLabelText   $csharpLabel

Cet exemple illustre la différence syntaxique la plus importante. PDFreactorutilise la syntaxe CSS Paged Mediaavec les règles @page, les régions @bottom-center et les numéros de page counter(page) injectés via AddUserStyleSheet().

IronPDF utilise une API .NET native avec des objets TextHeaderFooter affectés à RenderingOptions.TextHeader et RenderingOptions.TextFooter. Les numéros de page utilisent l'espace réservé {page} au lieu du CSS counter(page). NotezIronPDFnécessite également l'importation de l'espace de noms IronPdf.Rendering pour les classes d'en-tête/de pied de page.


Notes de migration essentielles

Aucun serveur n'est nécessaire

IronPDF fonctionne en cours de processus - pas de serveur Java à configurer :

// PDFreactor: Requires server connection
var pdfReactor = new PDFreactor("http://localhost:9423");

// IronPDF: No server URL needed
var renderer = new ChromePdfRenderer();
// PDFreactor: Requires server connection
var pdfReactor = new PDFreactor("http://localhost:9423");

// IronPDF: No server URL needed
var renderer = new ChromePdfRenderer();
' PDFreactor: Requires server connection
Dim pdfReactor = New PDFreactor("http://localhost:9423")

' IronPDF: No server URL needed
Dim renderer = New ChromePdfRenderer()
$vbLabelText   $csharpLabel

CSS Paged MediaversIronPDFAPI

Remplacez les règles CSS @page par RenderingOptions :

// PDFreactorCSS: @page { @bottom-center { content: 'Page ' counter(page); } }
//IronPDFequivalent:
renderer.RenderingOptions.TextFooter = new TextHeaderFooter 
{ 
    CenterText = "Page {page}" 
};
// PDFreactorCSS: @page { @bottom-center { content: 'Page ' counter(page); } }
//IronPDFequivalent:
renderer.RenderingOptions.TextFooter = new TextHeaderFooter 
{ 
    CenterText = "Page {page}" 
};
' PDFreactorCSS: @page { @bottom-center { content: 'Page ' counter(page); } }
' IronPDFequivalent:
renderer.RenderingOptions.TextFooter = New TextHeaderFooter With {
    .CenterText = "Page {page}"
}
$vbLabelText   $csharpLabel

Syntaxe de l'espace réservé au numéro de page

// PDFreactorCSS: counter(page)
// IronPDF: {page}

// PDFreactorCSS: counter(pages)  
// IronPDF: {total-pages}
// PDFreactorCSS: counter(page)
// IronPDF: {page}

// PDFreactorCSS: counter(pages)  
// IronPDF: {total-pages}
' PDFreactorCSS: counter(page)
' IronPDF: {page}

' PDFreactorCSS: counter(pages)
' IronPDF: {total-pages}
$vbLabelText   $csharpLabel

Modification du traitement des résultats

Le modèle Configuration + Result devient un PdfDocument direct :

// PDFreactor: Configuration → Convert → Result → bytes
Result result = pdfReactor.Convert(config);
byte[] bytes = result.Document;
File.WriteAllBytes("output.pdf", bytes);

// IronPDF: Direct PdfDocument with built-in methods
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
// Or: byte[] bytes = pdf.BinaryData;
// PDFreactor: Configuration → Convert → Result → bytes
Result result = pdfReactor.Convert(config);
byte[] bytes = result.Document;
File.WriteAllBytes("output.pdf", bytes);

// IronPDF: Direct PdfDocument with built-in methods
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
// Or: byte[] bytes = pdf.BinaryData;
' PDFreactor: Configuration → Convert → Result → bytes
Dim result As Result = pdfReactor.Convert(config)
Dim bytes As Byte() = result.Document
File.WriteAllBytes("output.pdf", bytes)

' IronPDF: Direct PdfDocument with built-in methods
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
' Or: Dim bytes As Byte() = pdf.BinaryData
$vbLabelText   $csharpLabel

Modification des unités de marge

PDFreactor utilise des chaînes de caractères ;IronPDFutilise des millimètres :

// PDFreactor: config.PageMargins.Top = "1in"
// IronPDF: renderer.RenderingOptions.MarginTop = 25.4  // 1 inch in mm
// PDFreactor: config.PageMargins.Top = "1in"
// IronPDF: renderer.RenderingOptions.MarginTop = 25.4  // 1 inch in mm
' PDFreactor: config.PageMargins.Top = "1in"
' IronPDF: renderer.RenderingOptions.MarginTop = 25.4  ' 1 inch in mm
$vbLabelText   $csharpLabel

Nouvelles capacités après la migration

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

Fusion de fichiers PDF

var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
Dim pdf1 = PdfDocument.FromFile("document1.pdf")
Dim pdf2 = PdfDocument.FromFile("document2.pdf")
Dim merged = PdfDocument.Merge(pdf1, pdf2)
merged.SaveAs("merged.pdf")
$vbLabelText   $csharpLabel

Marques de fond

pdf.ApplyWatermark("<h2 style='color:red;'>CONFIDENTIAL</h2>");
pdf.ApplyWatermark("<h2 style='color:red;'>CONFIDENTIAL</h2>");
pdf.ApplyWatermark("<h2 style='color:red;'>CONFIDENTIAL</h2>")
$vbLabelText   $csharpLabel

Extraction de texte

string text = pdf.ExtractAllText();
string text = pdf.ExtractAllText();
Dim text As String = pdf.ExtractAllText()
$vbLabelText   $csharpLabel

Protection par mot de passe

pdf.SecuritySettings.UserPassword = "userpassword";
pdf.SecuritySettings.OwnerPassword = "ownerpassword";
pdf.SecuritySettings.UserPassword = "userpassword";
pdf.SecuritySettings.OwnerPassword = "ownerpassword";
pdf.SecuritySettings.UserPassword = "userpassword"
pdf.SecuritySettings.OwnerPassword = "ownerpassword"
$vbLabelText   $csharpLabel

Résumé de la comparaison des fonctionnalités

Fonction PDFreactor IronPDF
HTML vers PDF
URL vers PDF
En-têtes/Pieds de page CSS Paged Media API native
Paramètres de la page
Support JavaScript
Natif .NET
En cours
Fusionner des PDF
Diviser les PDF
Filigranes
Extraction de texte
Remplissage de formulaires
Signatures numériques

Liste de contrôle de la migration

Pré-migration

  • Recenser toutes les utilisations de PDFreactordans le code source
  • Documenter toutes les règles CSS Paged Mediautilisées
  • Notez tous les paramètres de configuration (marges, taille de la page, JavaScript)
  • Planifier le stockage de la clé de licenceIronPDF(variables d'environnement recommandées)
  • Commencez par tester avec une licence d'essaiIronPDF.

Modifications du paquet

  • Supprimer le package NuGet PDFreactor.NET
  • Supprimer le package NuGet PDFreactor.Native.Windows.x64
  • Installez le package NuGet IronPdf : dotnet add package IronPdf

Modifications du code

  • Mise à jour des importations d'espace de noms (using RealObjects.PDFreactor;using IronPdf;)
  • Ajoutez using IronPdf.Rendering; pour les classes d'en-tête/de pied de page
  • Remplacez la classe PDFreactor par ChromePdfRenderer
  • Convertir les objets Configuration en propriétés RenderingOptions
  • Remplacez config.Document = html par renderer.RenderHtmlAsPdf(html)
  • Remplacez config.Document = url par renderer.RenderUrlAsPdf(url)
  • Remplacez File.WriteAllBytes(path, result.Document) par pdf.SaveAs(path)
  • Convertir les règles CSS @page en objets TextFooter
  • Mettre à jour les espaces réservés aux numéros de page (counter(page){page})
  • Convertir les unités de marge de chaînes de caractères en millimètres

Migration des infrastructures

  • Supprimer l'exigence d'exécution Java
  • Mise hors service du serveur PDFreactor
  • Mettre à jour les configurations Docker/de déploiement
  • Mise à jour des pipelines CI/CD

Après la migration

  • Testez la qualité de la sortie PDF en fonction des attentes
  • Vérifier l'affichage de l'en-tête et du pied de page
  • Vérifier l'exécution de JavaScript si elle est utilisée
  • Ajouter de nouvelles fonctionnalités (fusion, filigranes, sécurité) selon les besoins

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