Zum Fußzeileninhalt springen
MIGRATIONSLEITFäDEN

Migrieren von Ghostscript GPL zu IronPDF in C#

Durch die Migration von Ghostscript GPL zu IronPDF wird Ihr .NET-PDF-Workflow von Befehlszeilen-Prozess-Spawning und String-basierter Schaltermanipulation auf eine typsichere, IntelliSense-fähige native .NET-API umgestellt. Dieser Leitfaden bietet einen umfassenden, schrittweisen Migrationspfad, der AGPL-Lizenzierungsprobleme und externe Binärabhängigkeiten für professionelle .NET-Entwickler beseitigt.

Warum von Ghostscript GPL zu IronPDF migrieren

Die Ghostscript GPL-Herausforderungen

Ghostscript GPL ist ein altehrwürdiger PostScript/PDF-Interpreter mit jahrzehntelanger Geschichte, dessen Einsatz in modernen .NET-Anwendungen jedoch erhebliche Herausforderungen mit sich bringt:

  1. AGPL-Lizenzbeschränkungen: Die AGPL-Lizenz von Ghostscript GPL verpflichtet Sie zur Veröffentlichung Ihres Quellcodes, wenn Sie Software vertreiben, die diesen verwendet – es sei denn, Sie erwerben eine teure kommerzielle Lizenz von Artifex. Dieses "virale" Lizenzierungsmodell birgt erhebliche rechtliche Risiken für proprietäre Anwendungen.

  2. Befehlszeilenschnittstelle: Ghostscript GPL ist im Grunde ein Befehlszeilenwerkzeug. Die Verwendung in C# erfordert das Starten von Prozessen, die Übergabe von String-Argumenten und das Parsen der Ausgabe - ein anfälliger und fehleranfälliger Ansatz.

  3. Externe Binärabhängigkeit: Sie müssen Ghostscript GPL separat installieren, PATH-Variablen verwalten und die Versionskompatibilität in allen Bereitstellungsumgebungen sicherstellen. Für 32-Bit-Systeme werden unterschiedliche DLLs benötigt, für 64-Bit-Systeme hingegen unterschiedliche (gsdll32.dll vs gsdll64.dll).

  4. Keine native HTML-zu-PDF-Konvertierung: Ghostscript GPL kann HTML nicht direkt in PDF konvertieren. Sie müssen zunächst HTML mit einem anderen Tool in PostScript konvertieren und dann Ghostscript GPL verwenden, um PostScript in PDF zu konvertieren - eine mehrstufige Pipeline mit externen Abhängigkeiten.

  5. Komplexe Switch-Syntax: Operationen werden über kryptische Befehlszeilenschalter wie -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=... gesteuert. Kein IntelliSense, keine Typsicherheit und leicht zu vertippen.

  6. Fehlerbehandlung: Fehler werden über stderr als Textzeichenfolgen ausgegeben, was ein Parsen anstelle einer strukturierten Ausnahmebehandlung erfordert.

  7. Mehraufwand für das Prozessmanagement: Jeder Vorgang erzeugt einen separaten Prozess, was zusätzlichen Aufwand und Komplexität für Fehlerbehandlung, Timeouts und Ressourcenbereinigung mit sich bringt.

Vergleich zwischen Ghostscript GPL und IronPDF

Aspekt Ghostscript GPL IronPDF
Lizenz AGPL (viral) oder teure kommerzielle Lizenz Kommerziell mit klaren Bedingungen
Integration Spawnen von Prozessen in der Befehlszeile Native .NET-Bibliothek
API-Entwurf String-basierte Schalter Typisierte, IntelliSense-fähige API
Fehlerbehandlung Parsen von stderr-Text .NET-Ausnahmen
HTML-zu-PDF Nicht unterstützt (externe Tools erforderlich) Eingebaute Chromium-Engine
Abhängigkeiten Externe Binärinstallation Eigenständiges NuGet-Paket
Bereitstellung PATH konfigurieren, DLLs kopieren Einfach NuGet-Referenz hinzufügen
Thread-Sicherheit Nur Prozessisolierung Thread-sicher durch Design
Modernes .NET Begrenzte Unterstützung Vollständige Unterstützung von .NET 6/7/8/9/10
Async-Unterstützung Prozessbasiert Natives async/await

Für Teams, die die Einführung von .NET 10 und C# 14 bis 2025 und 2026 planen, bietet IronPDF eine zukunftssichere Grundlage, die sich nativ in moderne .NET-Muster integrieren lässt.


Migrationskomplexitätsbewertung

Geschätzter Aufwand nach Merkmalen

Feature Komplexität der Migration
PDF in Bilder Niedrig
PDFs zusammenführen Niedrig
PDF komprimieren Niedrig
PDF-Optimierung Niedrig
Verschlüsselung Medium
Seite extrahieren Niedrig
PostScript zu PDF Mittel-Hoch
Benutzerdefinierte Schalter Mittel-Hoch

Paradigmen-Verschiebung

Der grundlegende Shift bei dieser Ghostscript-GPL-Migration besteht in der Verlagerung der Prozessausführung von der Kommandozeile hin zu typisierten .NET -API-Aufrufen:

Ghostscript GPL:  "Übergeben Sie diese String-Schalter an externe Prozesse"
IronPDF:          "Diese Methoden for .NET-Objekte aufrufen"

Bevor Sie beginnen

Voraussetzungen

  1. .NET Version:IronPDF unterstützt .NET Framework 4.6.2+ und .NET Core 2.0+ / .NET 5/6/7/8/9+
  2. Lizenzschlüssel: Ihren IronPDF-Lizenzschlüssel erhalten Sie unter IronPDF.
  3. Datensicherung: Erstellen Sie einen Branch für die Migrationsarbeiten.

Alle Ghostscript GPL-Nutzungen identifizieren

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

NuGet-Paketänderungen

# 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
SHELL

Ghostscript GPL-Abhängigkeiten entfernen

Nach der Migration:

  • Ghostscript GPL von Servern deinstallieren
  • Entfernen Sie gsdll32.dll / gsdll64.dll aus den Deployments
  • PATH-Konfiguration für Ghostscript GPL entfernen
  • Entfernen Sie alle Verweise auf GhostscriptVersionInfo

Schnellstart Migration

Schritt 1: Lizenzkonfiguration aktualisieren

Vor (Ghostscript GPL):

Ghostscript GPL unter AGPL erfordert entweder die Offenlegung des Quellcodes oder eine teure kommerzielle Lizenz von Artifex.

Nach (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"
$vbLabelText   $csharpLabel

Schritt 2: Aktualisieren der Namensraum-Importe

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

Komplette API-Referenz

Kernklassen-Zuordnung

Ghostscript.NET IronPDF Beschreibung
GhostscriptProcessor Verschiedene PdfDocument Methoden PDF-Verarbeitung
GhostscriptRasterizer PdfDocument.ToBitmap() / RasterizeToImageFiles() PDF in Bilder
GhostscriptVersionInfo N/A (nicht erforderlich) DLL-Speicherort
GhostscriptStdIO N/A (Ausnahmen verwenden) E/A-Behandlung
Prozess + Befehlszeile ChromePdfRenderer HTML zu PDF

Zuordnung von Befehlszeilenschaltern

Ghostscript GPL-Schalter IronPDF-Äquivalent Beschreibung
-dNOPAUSE N/A (nicht erforderlich) Keine Pausen zwischen den Seiten
-dBATCH N/A (nicht erforderlich) Beenden nach der Bearbeitung
-dSAFER N/A (Standard) Sicherer Dateizugriff
-sDEVICE=pdfwrite Verschiedene PDF-Methoden PDF-Ausgabe
-sDEVICE=png16m ToBitmap() oder RasterizeToImageFiles() PNG-Ausgabe
-sOutputFile=X SaveAs("X") Dateiname der Ausgabe
-r300 DPI-Parameter in Methoden Auflösung
-dPDFSETTINGS=/ebook CompressImages(quality: 75) Mittlere Qualität
-sOwnerPassword=X SecuritySettings.OwnerPassword Passwort des Eigentümers
-sUserPassword=X SecuritySettings.UserPassword Benutzer-Passwort

Beispiele für die Code-Migration

Beispiel 1: Konvertierung von HTML in PDF

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

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

Der Unterschied ist gravierend: Ghostscript GPL kann HTML nicht direkt in PDF konvertieren, sondern erfordert eine PostScript-Konvertierung mit externen Tools. IronPDF s ChromePdfRenderer bietet eine direkte HTML-zu-PDF-Konvertierung mit voller Unterstützung für CSS3, JavaScript und moderne Webstandards. Weitere Rendering-Optionen finden Sie in der HTML to PDF Dokumentation.

Beispiel 2: PDF in Bilder

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

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

Der Ghostscript GPL-Ansatz erfordert das Auffinden des externen gsdll64.dll, das Erstellen eines GhostscriptVersionInfo-Objekts und die Verwendung von 1-indizierten Seitenzahlen. Die ToBitmap()-Methode von IronPDF bietet einen sauberen, einzeiligen Ansatz ohne externe Abhängigkeiten. Beachten Sie den Unterschied in der Seitenindizierung: Ghostscript GPL verwendet 1-indizierte Seiten, während IronPDF0-indizierte Seiten verwendet (Standardkonvention for .NET).

Beispiel 3: PDF-Dateien zusammenführen

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

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

Der Ghostscript GPL-Ansatz erfordert das Auswendiglernen der Switch-Syntax (-dNOPAUSE, -dBATCH, -sDEVICE=pdfwrite) und das Verketten von Dateipfaden zu einem String-Array. Die statische Methode Merge von IronPDF ermöglicht typsicheres, IntelliSense-fähiges Zusammenführen mit korrekten PdfDocument Objekten. Erfahren Sie mehr über das Zusammenführen und Aufteilen von PDFs.


Kritische Hinweise zur Migration

Konvertierung der Seitenindizierung

Eine der wichtigsten Änderungen bei dieser Ghostscript-GPL-Migration ist der Unterschied bei der Seitenindexierung:

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

AGPL-Lizenz-Bedenken beseitigt

Die AGPL-Lizenz von Ghostscript GPL hat "virale" Eigenschaften, die die Offenlegung des Quellcodes bei der Verbreitung von Anwendungen erfordern. Die kommerzielle Lizenz von IronPDF hat klare Bedingungen, die keine solchen Anforderungen stellen.

Keine externen Binärdateien

IronPDF ist vollständig in sich geschlossen. Entfernen Sie diese nach der Migration:

  • gsdll32.dll und gsdll64.dll Dateien
  • Ghostscript GPL-Installation von Servern
  • Konfigurationen der Umgebungsvariablen PATH
  • GhostscriptVersionInfo Verweise im Code

PostScript-Dateien

IronPDF kann PostScript-Dateien (.ps) nicht direkt verarbeiten. Wenn Ihr Arbeitsablauf PostScript-Verarbeitung erfordert, sollten Sie entweder:

  1. Konvertierung von PostScript in PDF mit einem anderen Tool vor der IronPDF-Verarbeitung
  2. Konvertieren Sie den Quellinhalt in HTML und verwenden Sie das HTML-Rendering von IronPDF

Erwägungen zur Leistung

Kein Prozess-Spawning

Ghostscript GPL-Operationen erzeugen externe Prozesse mit entsprechendem Overhead.IronPDF arbeitet innerhalb Ihres .NET-Prozesses:

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

Thread-Sicherheit

IronPDF ist von vornherein thread-sicher. Mehrere Threads können ChromePdfRenderer und PdfDocument gleichzeitig verwenden, ohne dass Synchronisierungsprobleme auftreten.


Migrations-Checkliste

Vor der Migration

  • Erfassung aller Ghostscript-GPL-Nutzungen im Quellcode
  • Dokumentieren Sie die aktuell verwendeten Befehlszeilenoptionen.
  • Jegliche PostScript-Verarbeitung identifizieren (erfordert spezielle Behandlung)
  • Überprüfung des AGPL-Lizenzkonformitätsstatus -IronPDF-Lizenzschlüssel erhalten
  • Migrationszweig in der Versionskontrolle erstellen

Code-Migration

  • Ghostscript .NET NuGet Paket entfernen: dotnet remove package Ghostscript.NET
  • Installieren Sie das IronPDFNuGet Paket: dotnet add package IronPdf
  • Entfernen der externen Ghostscript-GPL-Binärabhängigkeiten
  • Entfernen Sie GhostscriptVersionInfo und DLL-Referenzen
  • Konvertierung von GhostscriptProcessor.Process() in IronPDF-Methoden
  • Konvertiere GhostscriptRasterizer in pdf.ToBitmap()
  • Ersetzen Sie Befehlszeilenoptionen durch API-Aufrufe
  • Aktualisierung der Fehlerbehandlung von stderr-Parsing auf Ausnahmen
  • Konvertierung von 1-indizierten Seitenzahlen in 0-indizierte Seitenzahlen

Testen

  • Test der PDF-zu-Bild-Konvertierung
  • PDF-Zusammenführung testen
  • Extraktion der Testseite
  • Kompressionsqualität prüfen
  • Passwortschutz testen
  • Überprüfen, ob die Ausgabequalität den Erwartungen entspricht
  • Leistungsbenchmark kritische Pfade

Bereitstellung

  • Ghostscript GPL von den Servern entfernen
  • Entfernen Sie die PATH-Konfiguration
  • Entfernen Sie die Dateien gsdll*.dll aus den Deployments
  • Überprüfen, ob die Anwendung auch ohne installiertes Ghostscript GPL funktioniert.

Nach der Migration

  • Ghostscript-GPL-Lizenz entfernen (falls kommerziell)
  • Dokumentation aktualisieren
  • Schulung des Teams zur IronPDFAPI
  • Die Produktion auf etwaige Probleme überwachen

Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender ...

Weiterlesen

Iron Support Team

Wir sind 24 Stunden am Tag, 5 Tage die Woche online.
Chat
E-Mail
Rufen Sie mich an