Comment migrer de Ghostscript GPL à IronPDF en C#
La migration de Ghostscript GPLversIronPDFtransforme votre flux de travail PDF .NET, qui passe du lancement de processus en ligne de commande et de la manipulation de commutateurs à base de chaînes à une API native .NET sécurisée et dotée d'IntelliSense. Ce guide fournit un chemin de migration complet, étape par étape, qui élimine les problèmes de licence AGPL et les dépendances binaires externes pour les développeurs .NET professionnels.
Pourquoi passer de Ghostscript GPLà IronPDF
Les défis de la licence GPL de Ghostscript
Ghostscript GPL est un interprète PostScript/PDF vénérable qui a des décennies d'histoire, mais son utilisation dans les applications .NET modernes présente des défis importants :
-
Restrictions de la licence AGPL : La licence AGPL de Ghostscript GPLvous oblige à publier votre code source si vous distribuez un logiciel qui l'utilise, à moins d'acheter une licence commerciale coûteuse auprès d'Artifex. Ce modèle de licence "virale" crée un risque juridique important pour les applications propriétaires.
-
Interface en ligne de commande : Ghostscript GPLest fondamentalement un outil en ligne de commande. Pour l'utiliser à partir de C#, il faut lancer des processus, passer des arguments de chaîne et analyser la sortie - une approche fragile et sujette aux erreurs.
-
Dépendance binaire externe : vous devez installer Ghostscript GPLséparément, gérer les variables PATH et assurer la compatibilité des versions dans tous les environnements de déploiement. Des DLL différentes sont nécessaires pour les systèmes 32 bits et 64 bits (
gsdll32.dllvsgsdll64.dll). -
Pas de conversion native HTML vers PDF : Ghostscript GPLne peut pas convertir directement le HTML en PDF. Vous devez d'abord convertir HTML en PostScript à l'aide d'un autre outil, puis utiliser Ghostscript GPLpour convertir PostScript en PDF - un processus en plusieurs étapes avec des dépendances externes.
-
Syntaxe de commutation complexe : les opérations sont contrôlées via des commutateurs de ligne de commande cryptiques comme
-dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=.... Pas d'IntelliSense, pas de sécurité de type, et facile de faire des fautes de frappe. -
Gestion des erreurs : Les erreurs arrivent via stderr sous forme de chaînes de caractères, nécessitant une analyse syntaxique plutôt qu'une gestion structurée des exceptions.
- Surcharge de gestion des processus : Chaque opération génère un processus distinct, ce qui ajoute de la surcharge et de la complexité pour la gestion des erreurs, les délais d'attente et le nettoyage des ressources.
Comparaison entre Ghostscript GPLet IronPDF
| Aspect | Ghostscript GPL | IronPDF |
|---|---|---|
| Licence | AGPL (virale) ou commerciale onéreuse | Commercial avec des termes clairs |
| Intégration | Lancement d'un processus en ligne de commande | Bibliothèque native .NET |
| Conception de l'API | Commutateurs à base de chaînes | API typée et dotée d'IntelliSense |
| Gestion des erreurs | Analyse du texte stderr | exceptions .NET |
| HTML vers PDF | Non pris en charge (besoin d'outils externes) | Moteur Chromium intégré |
| Dépendances | Installation binaire externe | Paquet NuGet autonome |
| Déploiement | Configurer le PATH, copier les DLL | Il suffit d'ajouter une référence NuGet |
| Sécurité des fils | Isolation du processus uniquement | Sécurité des threads dès la conception |
| .NET moderne | Soutien limité | Prise en charge complète de .NET 6/7/8/9/10 |
| Prise en charge de l'asynchronisme | Basé sur le processus | Async/await natif |
Pour les équipes qui prévoient d'adopter .NET 10 et C# 14 jusqu'en 2025 et 2026,IronPDFconstitue une base à l'épreuve du temps qui s'intègre nativement aux modèles .NET modernes.
Évaluation de la complexité de la migration
Estimation de l'effort par fonctionnalité
| Fonction | Complexité de la migration |
|---|---|
| PDF vers images | Faible |
| Fusionner des PDF | Faible |
| Compresser le PDF | Faible |
| Optimisation PDF | Faible |
| Chiffrement | Moyen |
| Extraction de pages | Faible |
| PostScript vers PDF | Moyenne-élevée |
| Commutateurs personnalisés | Moyenne-élevée |
Changement de paradigme
Le Shift fondamental de cette migration vers la licence GPL de Ghostscript réside dans le passage de l'exécution de processus en ligne de commande aux appels d'API .NET typés :
Ghostscript GPL : "Transmettre ces chaînes de caractères à un processus externe"
IronPDF : "Appeler ces méthodes sur des objets .NET"
Avant de commencer
Prérequis
- Version .NET :IronPDFprend en charge .NET Framework 4.6.2+ et .NET Core 2.0+ / .NET 5/6/7/8/9+.
- Clé de licence : Obtenez votre clé de licenceIronPDFsur IronPDF
- Sauvegarde : Créer une branche pour les travaux de migration
Identifier toutes les utilisations de Ghostscript sous licence GPL
# Find all Ghostscript.NET references
grep -r "Ghostscript\.NET\|GhostscriptProcessor\|GhostscriptRasterizer\|gsdll" --include="*.cs" .
# Find direct process calls to Ghostscript
grep -r "gswin64c\|gswin32c\|gs\|ProcessStartInfo.*ghost" --include="*.cs" .
# Find package references
grep -r "Ghostscript" --include="*.csproj" .
# Find all Ghostscript.NET references
grep -r "Ghostscript\.NET\|GhostscriptProcessor\|GhostscriptRasterizer\|gsdll" --include="*.cs" .
# Find direct process calls to Ghostscript
grep -r "gswin64c\|gswin32c\|gs\|ProcessStartInfo.*ghost" --include="*.cs" .
# Find package references
grep -r "Ghostscript" --include="*.csproj" .
Modifications du paquet NuGet
# Remove Ghostscript.NET
dotnet remove package Ghostscript.NET
# Install IronPDF
dotnet add package IronPdf
# Remove Ghostscript.NET
dotnet remove package Ghostscript.NET
# Install IronPDF
dotnet add package IronPdf
Supprimer les dépendances GPL de Ghostscript
Après la migration :
- Désinstaller Ghostscript GPLdes serveurs
- Supprimer
gsdll32.dll/gsdll64.dlldes déploiements - Supprimer la configuration PATH pour Ghostscript GPL
- Supprimez toutes les références à
GhostscriptVersionInfo
Migration rapide
Étape 1 : Mise à jour de la configuration de la licence
Avant (Ghostscript GPL):
Ghostscript GPL sous AGPL nécessite soit la divulgation du code source, soit une licence commerciale onéreuse auprès d'Artifex.
Après (IronPDF):
// Set once at application startup
IronPdf.License.LicenseKey = "YOUR-IRONPDF-LICENSE-KEY";
// Set once at application startup
IronPdf.License.LicenseKey = "YOUR-IRONPDF-LICENSE-KEY";
' Set once at application startup
IronPdf.License.LicenseKey = "YOUR-IRONPDF-LICENSE-KEY"
Étape 2 : mise à jour des importations de l'espace de noms
// Before (Ghostscript GPL)
using Ghostscript.NET;
using Ghostscript.NET.Processor;
using Ghostscript.NET.Rasterizer;
// After (IronPDF)
using IronPdf;
// Before (Ghostscript GPL)
using Ghostscript.NET;
using Ghostscript.NET.Processor;
using Ghostscript.NET.Rasterizer;
// After (IronPDF)
using IronPdf;
Imports IronPdf
Référence API complète
Mappage des classes de base
| Ghostscript.NET | IronPDF | Description du projet |
|---|---|---|
GhostscriptProcessor |
Diverses méthodes PdfDocument |
Traitement PDF |
GhostscriptRasterizer |
PdfDocument.ToBitmap() / RasterizeToImageFiles() |
PDF vers images |
GhostscriptVersionInfo |
N/A (pas nécessaire) | Emplacement de la DLL |
GhostscriptStdIO |
N/A (utiliser les exceptions) | Traitement des E/S |
| Processus + ligne de commande | ChromePdfRenderer |
HTML vers PDF |
Mappage des commutateurs de ligne de commande
| Ghostscript GPLSwitch | Équivalent d'IronPDF | Description du projet |
|---|---|---|
-dNOPAUSE |
N/A (pas nécessaire) | Ne pas faire de pause entre les pages |
-dBATCH |
N/A (pas nécessaire) | Quitter après traitement |
-dSAFER |
N/A (par défaut) | Accès sécurisé aux fichiers |
-sDEVICE=pdfwrite |
Diverses méthodes PDF | PDF de sortie |
-sDEVICE=png16m |
ToBitmap() ou RasterizeToImageFiles() |
Sortie PNG |
-sOutputFile=X |
SaveAs("X") |
Nom du fichier de sortie |
-r300 |
Paramètre DPI dans les méthodes | Résolution |
-dPDFSETTINGS=/ebook |
CompressImages(quality: 75) |
Qualité moyenne |
-sOwnerPassword=X |
SecuritySettings.OwnerPassword |
Mot de passe du propriétaire |
-sUserPassword=X |
SecuritySettings.UserPassword |
Mot de passe utilisateur |
Exemples de migration de code
Exemple 1 : Conversion HTML vers PDF
Avant (Ghostscript GPL):
// NuGet: Install-Package Ghostscript.NET
using Ghostscript.NET;
using Ghostscript.NET.Processor;
using System.IO;
using System.Text;
class GhostscriptExample
{
static void Main()
{
// Ghostscript cannot directly convert HTML to PDF
// You need to first convert HTML to PS/EPS using another tool
// then use Ghostscript to convert PS to PDF
string htmlContent = "<html><body><h1>Hello World</h1></body></html>";
string psFile = "temp.ps";
string outputPdf = "output.pdf";
// This is a workaround - Ghostscript primarily works with PostScript
GhostscriptProcessor processor = new GhostscriptProcessor();
List<string> switches = new List<string>
{
"-dNOPAUSE",
"-dBATCH",
"-dSAFER",
"-sDEVICE=pdfwrite",
$"-sOutputFile={outputPdf}",
psFile
};
processor.Process(switches.ToArray());
}
}
// NuGet: Install-Package Ghostscript.NET
using Ghostscript.NET;
using Ghostscript.NET.Processor;
using System.IO;
using System.Text;
class GhostscriptExample
{
static void Main()
{
// Ghostscript cannot directly convert HTML to PDF
// You need to first convert HTML to PS/EPS using another tool
// then use Ghostscript to convert PS to PDF
string htmlContent = "<html><body><h1>Hello World</h1></body></html>";
string psFile = "temp.ps";
string outputPdf = "output.pdf";
// This is a workaround - Ghostscript primarily works with PostScript
GhostscriptProcessor processor = new GhostscriptProcessor();
List<string> switches = new List<string>
{
"-dNOPAUSE",
"-dBATCH",
"-dSAFER",
"-sDEVICE=pdfwrite",
$"-sOutputFile={outputPdf}",
psFile
};
processor.Process(switches.ToArray());
}
}
Imports Ghostscript.NET
Imports Ghostscript.NET.Processor
Imports System.IO
Imports System.Text
Class GhostscriptExample
Shared Sub Main()
' Ghostscript cannot directly convert HTML to PDF
' You need to first convert HTML to PS/EPS using another tool
' then use Ghostscript to convert PS to PDF
Dim htmlContent As String = "<html><body><h1>Hello World</h1></body></html>"
Dim psFile As String = "temp.ps"
Dim outputPdf As String = "output.pdf"
' This is a workaround - Ghostscript primarily works with PostScript
Dim processor As New GhostscriptProcessor()
Dim switches As New List(Of String) From {
"-dNOPAUSE",
"-dBATCH",
"-dSAFER",
"-sDEVICE=pdfwrite",
$"-sOutputFile={outputPdf}",
psFile
}
processor.Process(switches.ToArray())
End Sub
End Class
Après (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
class IronPdfExample
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string htmlContent = "<html><body><h1>Hello World</h1></body></html>";
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("output.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
class IronPdfExample
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string htmlContent = "<html><body><h1>Hello World</h1></body></html>";
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("output.pdf");
}
}
Imports IronPdf
Class IronPdfExample
Shared Sub Main()
Dim renderer As New ChromePdfRenderer()
Dim htmlContent As String = "<html><body><h1>Hello World</h1></body></html>"
Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
pdf.SaveAs("output.pdf")
End Sub
End Class
La différence est flagrante : Ghostscript GPLne peut pas du tout convertir directement HTML en PDF - il faut une conversion PostScript intermédiaire à l'aide d'outils externes.IronPDF(ChromePdfRenderer) offre une conversion directe HTML vers PDF avec une prise en charge complète des normes CSS3, JavaScript et Web modernes. Voir la documentation HTML vers PDF pour plus d'options de rendu.
Exemple 2 : PDF vers images
Avant (Ghostscript GPL):
// NuGet: Install-Package Ghostscript.NET
using Ghostscript.NET;
using Ghostscript.NET.Rasterizer;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
class GhostscriptExample
{
static void Main()
{
string inputPdf = "input.pdf";
string outputPath = "output";
GhostscriptVersionInfo gvi = new GhostscriptVersionInfo("gsdll64.dll");
using (GhostscriptRasterizer rasterizer = new GhostscriptRasterizer())
{
rasterizer.Open(inputPdf, gvi, false);
for (int pageNumber = 1; pageNumber <= rasterizer.PageCount; pageNumber++)
{
Image img = rasterizer.GetPage(300, pageNumber);
img.Save($"{outputPath}_page{pageNumber}.png", ImageFormat.Png);
img.Dispose();
}
}
}
}
// NuGet: Install-Package Ghostscript.NET
using Ghostscript.NET;
using Ghostscript.NET.Rasterizer;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
class GhostscriptExample
{
static void Main()
{
string inputPdf = "input.pdf";
string outputPath = "output";
GhostscriptVersionInfo gvi = new GhostscriptVersionInfo("gsdll64.dll");
using (GhostscriptRasterizer rasterizer = new GhostscriptRasterizer())
{
rasterizer.Open(inputPdf, gvi, false);
for (int pageNumber = 1; pageNumber <= rasterizer.PageCount; pageNumber++)
{
Image img = rasterizer.GetPage(300, pageNumber);
img.Save($"{outputPath}_page{pageNumber}.png", ImageFormat.Png);
img.Dispose();
}
}
}
}
Imports Ghostscript.NET
Imports Ghostscript.NET.Rasterizer
Imports System.Drawing
Imports System.Drawing.Imaging
Imports System.IO
Class GhostscriptExample
Shared Sub Main()
Dim inputPdf As String = "input.pdf"
Dim outputPath As String = "output"
Dim gvi As New GhostscriptVersionInfo("gsdll64.dll")
Using rasterizer As New GhostscriptRasterizer()
rasterizer.Open(inputPdf, gvi, False)
For pageNumber As Integer = 1 To rasterizer.PageCount
Dim img As Image = rasterizer.GetPage(300, pageNumber)
img.Save($"{outputPath}_page{pageNumber}.png", ImageFormat.Png)
img.Dispose()
Next
End Using
End Sub
End Class
Après (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class IronPdfExample
{
static void Main()
{
var pdf = PdfDocument.FromFile("input.pdf");
var images = pdf.ToBitmap();
for (int i = 0; i < images.Length; i++)
{
images[i].Save($"output_page{i + 1}.png");
}
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class IronPdfExample
{
static void Main()
{
var pdf = PdfDocument.FromFile("input.pdf");
var images = pdf.ToBitmap();
for (int i = 0; i < images.Length; i++)
{
images[i].Save($"output_page{i + 1}.png");
}
}
}
Imports IronPdf
Imports System
Class IronPdfExample
Shared Sub Main()
Dim pdf = PdfDocument.FromFile("input.pdf")
Dim images = pdf.ToBitmap()
For i As Integer = 0 To images.Length - 1
images(i).Save($"output_page{i + 1}.png")
Next
End Sub
End Class
L'approche Ghostscript GPLnécessite de localiser l'objet externe gsdll64.dll, de créer un objet GhostscriptVersionInfo et d'utiliser des numéros de page indexés à partir de 1. La méthode ToBitmap() d'IronPDF offre une approche simple et concise, sans dépendances externes. Notez la différence d'indexation des pages : Ghostscript GPLutilise des pages indexées à 1 alors qu'IronPDF utilise des pages indexées à 0 (convention .NET standard).
Exemple 3 : Fusionner des fichiers PDF
Avant (Ghostscript GPL):
// NuGet: Install-Package Ghostscript.NET
using Ghostscript.NET;
using Ghostscript.NET.Processor;
using System.Collections.Generic;
class GhostscriptExample
{
static void Main()
{
string outputPdf = "merged.pdf";
string[] inputFiles = { "file1.pdf", "file2.pdf", "file3.pdf" };
GhostscriptProcessor processor = new GhostscriptProcessor();
List<string> switches = new List<string>
{
"-dNOPAUSE",
"-dBATCH",
"-dSAFER",
"-sDEVICE=pdfwrite",
$"-sOutputFile={outputPdf}"
};
switches.AddRange(inputFiles);
processor.Process(switches.ToArray());
}
}
// NuGet: Install-Package Ghostscript.NET
using Ghostscript.NET;
using Ghostscript.NET.Processor;
using System.Collections.Generic;
class GhostscriptExample
{
static void Main()
{
string outputPdf = "merged.pdf";
string[] inputFiles = { "file1.pdf", "file2.pdf", "file3.pdf" };
GhostscriptProcessor processor = new GhostscriptProcessor();
List<string> switches = new List<string>
{
"-dNOPAUSE",
"-dBATCH",
"-dSAFER",
"-sDEVICE=pdfwrite",
$"-sOutputFile={outputPdf}"
};
switches.AddRange(inputFiles);
processor.Process(switches.ToArray());
}
}
Imports Ghostscript.NET
Imports Ghostscript.NET.Processor
Imports System.Collections.Generic
Class GhostscriptExample
Shared Sub Main()
Dim outputPdf As String = "merged.pdf"
Dim inputFiles As String() = {"file1.pdf", "file2.pdf", "file3.pdf"}
Dim processor As New GhostscriptProcessor()
Dim switches As New List(Of String) From {
"-dNOPAUSE",
"-dBATCH",
"-dSAFER",
"-sDEVICE=pdfwrite",
$"-sOutputFile={outputPdf}"
}
switches.AddRange(inputFiles)
processor.Process(switches.ToArray())
End Sub
End Class
Après (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using System.Collections.Generic;
class IronPdfExample
{
static void Main()
{
var pdfs = new List<PdfDocument>
{
PdfDocument.FromFile("file1.pdf"),
PdfDocument.FromFile("file2.pdf"),
PdfDocument.FromFile("file3.pdf")
};
var merged = PdfDocument.Merge(pdfs);
merged.SaveAs("merged.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System.Collections.Generic;
class IronPdfExample
{
static void Main()
{
var pdfs = new List<PdfDocument>
{
PdfDocument.FromFile("file1.pdf"),
PdfDocument.FromFile("file2.pdf"),
PdfDocument.FromFile("file3.pdf")
};
var merged = PdfDocument.Merge(pdfs);
merged.SaveAs("merged.pdf");
}
}
Imports IronPdf
Imports System.Collections.Generic
Class IronPdfExample
Shared Sub Main()
Dim pdfs As New List(Of PdfDocument) From {
PdfDocument.FromFile("file1.pdf"),
PdfDocument.FromFile("file2.pdf"),
PdfDocument.FromFile("file3.pdf")
}
Dim merged = PdfDocument.Merge(pdfs)
merged.SaveAs("merged.pdf")
End Sub
End Class
L'approche Ghostscript GPLnécessite de mémoriser la syntaxe de switch (-dNOPAUSE, -dBATCH, -sDEVICE=pdfwrite) et de concaténer les chemins de fichiers dans un tableau de chaînes. La méthode statique Merge d'IronPDF fournit une fusion sûre en termes de type et compatible avec IntelliSense avec les objets PdfDocument appropriés. En savoir plus sur la fusion et la division de PDF.
Notes de migration essentielles
Conversion de l'indexation des pages
L'un des changements les plus importants dans cette migration GPL de Ghostscript est la différence d'indexation des pages :
// Ghostscript GPL: 1-indexed pages
for (int pageNumber = 1; pageNumber <= rasterizer.PageCount; pageNumber++)
{
Image img = rasterizer.GetPage(300, pageNumber);
}
// IronPDF: 0-indexed pages (standard .NET)
for (int i = 0; i < images.Length; i++)
{
images[i].Save($"output_page{i + 1}.png");
}
// Ghostscript GPL: 1-indexed pages
for (int pageNumber = 1; pageNumber <= rasterizer.PageCount; pageNumber++)
{
Image img = rasterizer.GetPage(300, pageNumber);
}
// IronPDF: 0-indexed pages (standard .NET)
for (int i = 0; i < images.Length; i++)
{
images[i].Save($"output_page{i + 1}.png");
}
Option Strict On
' Ghostscript GPL: 1-indexed pages
For pageNumber As Integer = 1 To rasterizer.PageCount
Dim img As Image = rasterizer.GetPage(300, pageNumber)
Next
' IronPDF: 0-indexed pages (standard .NET)
For i As Integer = 0 To images.Length - 1
images(i).Save($"output_page{i + 1}.png")
Next
Les problèmes liés à la licence AGPL éliminés
La licence AGPL de Ghostscript GPLa des propriétés "virales" qui exigent la divulgation du code source lors de la distribution des applications. La licence commerciale d'IronPDF comporte des termes clairs sans aucune exigence de ce type.
Pas de binaires externes
IronPDF est entièrement autonome. Supprimez-les après la migration :
- Fichiers
gsdll32.dlletgsdll64.dll - Installation de Ghostscript GPLà partir de serveurs
- Configurations de la variable d'environnement PATH
GhostscriptVersionInforéférences dans le code
Fichiers PostScript
IronPDF ne gère pas directement les fichiers PostScript (.ps). Si votre flux de travail nécessite un traitement PostScript, soit :
- Convertir PostScript en PDF à l'aide d'un autre outil avant le traitement par IronPDF
- Convertissez le contenu source en HTML et utilisez le rendu HTML d'IronPDF
Considérations de Performance
Pas de création de processus
Les opérations de Ghostscript GPLgénèrent des processus externes avec les frais généraux associés.IronPDFfonctionne dans le cadre de votre processus .NET :
// Ghostscript GPL: Process spawning overhead
processor.Process(switches.ToArray()); // Creates new OS process
// IronPDF: In-process execution
var merged = PdfDocument.Merge(pdfs); // Native .NET method call
// Ghostscript GPL: Process spawning overhead
processor.Process(switches.ToArray()); // Creates new OS process
// IronPDF: In-process execution
var merged = PdfDocument.Merge(pdfs); // Native .NET method call
Sécurité des threads
IronPDF est de par sa conception à l'épreuve des threads. Plusieurs threads peuvent utiliser ChromePdfRenderer et PdfDocument simultanément sans problème de synchronisation.
Liste de contrôle de la migration
Pré-migration
- Recenser toutes les utilisations de Ghostscript GPLdans le code source
- Documenter les options de ligne de commande actuellement utilisées
- Identifier tout traitement PostScript (nécessitant un traitement spécial)
- Vérifier la conformité de la licence AGPL
- Obtenir une clé de licence IronPDF
- Créer une branche de migration dans le système de contrôle de version
Migration de code
- Supprimer le package NuGet Ghostscript .NET :
dotnet remove package Ghostscript.NET - Installez le package NuGet IronPDF :
dotnet add package IronPdf - Supprimer les dépendances binaires externes Ghostscript GPL
- Supprimer les références à
GhostscriptVersionInfoet aux DLL - Convertir
GhostscriptProcessor.Process()en méthodes IronPDF - Convertir
GhostscriptRasterizerenpdf.ToBitmap() - Remplacer les options de ligne de commande par des appels d'API
- Mise à jour de la gestion des erreurs : passage de l'analyse de stderr à la gestion des exceptions
- Convertir les numéros de page indexés à 1 en numéros indexés à 0
Essai
- Test de conversion PDF en image
- Test de fusion de PDF
- Extraction de la page de test
- Tester la qualité de compression
- Tester la protection par mot de passe
- Vérifier que la qualité de la production correspond aux attentes
- Chemins critiques de référence des performances
Déploiement
- Supprimer Ghostscript GPLdes serveurs
- Supprimer la configuration PATH
- Supprimer les fichiers
gsdll*.dlldes déploiements - Vérifier que l'application fonctionne sans Ghostscript GPLinstallé
Après la migration
- Supprimer la licence GPL de Ghostscript (si commercial)
- Mise à jour de la documentation
- Former l'équipe à l'API IronPDF
- Surveiller la production pour détecter tout problème.

