IRONSOFTWAREHOME
VIDÉOS

Comment convertir des SVG en PDF en utilisant C#

Curtis Chau
Curtis Chau
Updated: 19 juillet 2026

La migration de PDFreactorvers IronPDF é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/aspectPDFreactorIronPDF
Bibliothèque native .NETNon (basé sur Java)Oui
RuntimeJava (serveur externe)Natif .NET(en cours)
ArchitectureService API RESTBibliothèque NuGet
DéploiementJava + configuration du serveurPaquet NuGet unique
DépendancesJRE + client HTTPAutonome
LatenceAller-retour sur le réseauAppels de méthode directs
Capacité multiplateformeOui (dépendant de Java)Oui (Chromium inclus)
Support CSSPrise en charge avancée de CSS3, CSS Paged MediaPrise en charge complète de HTML5/CSS3
Complexité du déploiementPlus complexe en raison de JavaSimple, s'intègre directement à .NET
Fonctionnalités de manipulation du PDFBasique (Génération uniquement)Extensif, incluant la fusion, le fractionnement, l'édition et l'annotation

Contrairement à PDFreactor,IronPDF se 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.IronPDF utilise 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 adoptant les versions modernes de .NET,IronPDF fournit une solution .NET native qui élimine la complexité des serveurs Java tout en offrant une gestion complète du cycle de vie des PDFs.


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

# PDFreactoris NOT distributed via NuGet. The .NET wrapper ships as
# PDFreactor.dll inside <PDFreactor-install>/clients/netstandard2/bin/
# (or netframework40/bin for older .NET Framework projects).
# Remove the assembly reference from your .csproj.

# Stop PDFreactorWeb Service (Java/Jetty, default port 9423)
# 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 the PDFreactorWeb Service via config file or command line.
// The .NET client (RealObjects.PDFreactor.Webservice.Client) connects to that licensed service.
var pdfReactor = new PDFreactor("http://pdfreactor-server:9423/service/rest");
C#

IronPDF (niveau application):

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

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

Référence API complète

Modifications de l'espace de nommage

// Before: PDFreactor(Web Service client)
using RealObjects.PDFreactor.Webservice.Client;
using System.IO;

// After: IronPDF
using IronPdf;
using IronPdf.Rendering;
C#

Mappages de classes de base

PDFreactorIronPDF
PDFreactorChromePdfRenderer
ConfigurationChromePdfRenderOptions
ResultPdfDocument
config.Document = htmlrenderer.RenderHtmlAsPdf(html)
result.Document (byte[])pdf.BinaryData

Mappages de propriétés de configuration

Configuration de PDFreactorOptions de rendu IronPDF
config.Document = htmlrenderer.RenderHtmlAsPdf(html)
config.Document = urlrenderer.RenderUrlAsPdf(url)
config.PageFormat = PageFormat.A4RenderingOptions.PaperSize = PdfPaperSize.A4
config.PageOrientationRenderingOptions.PaperOrientation
config.PageMarginsRenderingOptions.MarginTop/Bottom/Left/Right
config.EnableJavaScript = trueRenderingOptions.EnableJavaScript = true
config.UserStyleSheets = new List<Resource>{...}Intégrer CSS dans HTML
config.Titlepdf.MetaData.Title
config.Encryptionpdf.SecuritySettings

Nouvelles fonctionnalités non disponibles dans PDFreactor

Fonctionnalité d'IronPDFDescription du projet
PdfDocument.Merge()Fusionner plusieurs PDF
pdf.ApplyWatermark()Ajouter des filigranes
pdf.ExtractAllText()Extraction de texte
pdf.FormRemplissage 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):

// PDFreactor.NET wrapper is a Web Service client (no NuGet package).
// Reference PDFreactor.dll from <PDFreactor-install>/clients/netstandard2/bin/
// and run the PDFreactorWeb Service (Java/Jetty) locally or remotely.
using RealObjects.PDFreactor.Webservice.Client;
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);
    }
}
C#

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

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), un objet Configuration séparé pour contenir les paramètres et le contenu HTML, l'appel à Convert() qui renvoie un objet Result, et enfin l'écriture des octets result.Document dans le fichier en utilisant File.WriteAllBytes().

IronPDF simplifie cela à créer un ChromePdfRenderer, appeler directement RenderHtmlAsPdf() avec la chaîne HTML, et utiliser la méthode intégrée SaveAs() sur le PdfDocument retourné. 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):

// PDFreactor.NET wrapper is a Web Service client (no NuGet package).
// Reference PDFreactor.dll from <PDFreactor-install>/clients/netstandard2/bin/
// and run the PDFreactorWeb Service (Java/Jetty) locally or remotely.
using RealObjects.PDFreactor.Webservice.Client;
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);
    }
}
C#

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

PDFreactor utilise la même propriété config.Document pour les chaînes HTML et les URLs, déterminant automatiquement le type.IronPDF fournit des méthodes explicites : RenderHtmlAsPdf() pour les chaînes HTML et RenderUrlAsPdf() pour les URLs. 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):

// PDFreactor.NET wrapper is a Web Service client (no NuGet package).
// Reference PDFreactor.dll from <PDFreactor-install>/clients/netstandard2/bin/
// and run the PDFreactorWeb Service (Java/Jetty) locally or remotely.
using RealObjects.PDFreactor.Webservice.Client;
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.UserStyleSheets = new System.Collections.Generic.List<Resource>
        {
            new Resource { Content = "@page { @top-center { content: 'Header Text'; } @bottom-center { content: 'Page ' counter(page); } }" }
        };
        
        Result result = pdfReactor.Convert(config);
        
        File.WriteAllBytes("document.pdf", result.Document);
    }
}
C#

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

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

IronPDF utilise une API .NET native avec des objets TextHeaderFooter assignés à RenderingOptions.TextHeader et RenderingOptions.TextFooter. Les numéros de page utilisent le placeholder {page} au lieu de CSS counter(page).


Notes de migration essentielles

Aucun serveur n'est nécessaire

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

// PDFreactor: Requires the Web Service running on a reachable host
var pdfReactor = new PDFreactor("http://localhost:9423/service/rest");

// IronPDF: No server URL needed
var renderer = new ChromePdfRenderer();

CSS Paged Mediavers IronPDF API

Remplacer les règles CSS @page par RenderingOptions :

// PDFreactorCSS: @page { @bottom-center { content: 'Page ' counter(page); } }
//IronPDF equivalent:
renderer.RenderingOptions.TextFooter = new TextHeaderFooter 
{ 
    CenterText = "Page {page}" 
};
C#

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

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

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

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;

Modification des unités de marge

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

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

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");

Marques de fond

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

Extraction de texte

string text = pdf.ExtractAllText();

Protection par mot de passe

pdf.SecuritySettings.UserPassword = "userpassword";
pdf.SecuritySettings.OwnerPassword = "ownerpassword";

Résumé de la comparaison des fonctionnalités

FonctionPDFreactorIronPDF
HTML vers PDF
URL vers PDF
En-têtes/Pieds de pageCSS Paged MediaAPI 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 licence IronPDF(variables d'environnement recommandées)
  • Commencez par tester avec une licence d'essai IronPDF.

Modifications du paquet

  • Supprimez la référence directe à l'assembly PDFreactor.dll de votre .csproj
  • Désaffectez le service Web PDFreactor(Java/Jetty)
  • Installez le package NuGet IronPdf : dotnet add package IronPdf

Modifications du code

  • Mettez à jour les importations de namespace (using RealObjects.PDFreactor.Webservice.Client;using IronPdf;)
  • Ajoutez using IronPdf.Rendering; pour les classes d'en-tête/pied de page
  • Remplacez la classe PDFreactor par ChromePdfRenderer
  • Convertissez 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)
  • Convertissez les règles CSS @page en objets TextFooter
  • Mettez à jour les placeholders des 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

Veuillez noter: PDFReactor est une marque déposée de son propriétaire respectif. Ce site n'est pas affilié à, approuvé par, ou sponsorisé par RealObjects. Tous les noms de produits, logos et marques sont la propriété de leurs propriétaires respectifs. Les comparaisons sont à titre informatif uniquement et reflètent les informations publiquement disponibles au moment de l'écriture.
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 et créer des manuels bien structurés et visuellement attrayants.

...
Lire la suite

Articles connexes

Key in blue circle

Obtenez votre clé d'essai de 30 jours instantanément.

Your trial license will be sent to your email address

Aucune restriction. 100 % débloqué. Pas de carte bancaire.

bullet_checkedAucune carte de crédit ou création de compte requiseAucune restriction. 100 % débloqué. Pas de carte bancaire.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Réservez votre Démonstration en direct gratuite
Booking Badge

De confiance par des millions d'ingénieurs dans le monde entier

Logos des clients d'Iron Software
Obtenez Votre Consultation sans Engagement
Remplissez le formulaire ci-dessous ou envoyez un email à sales@ironsoftware.com
Vos informations seront toujours gardées confidentielles.
De confiance par des millions d'ingénieurs dans le monde entier
Logos des clients d'Iron Software
Obtenez votre clé d'essai 30 jours gratuitement.
Aucune carte de crédit ou création de compte requise