Altbilgi içeriğine atla
GEçIş KıLAVUZLARı

Ghostscript GPL'den IronPDF'e C# ile Nasıl Geçilir

Ghostscript'ten IronPDF'ye taşıma, .NET PDF iş akışınızı komut satırı işlem üretmesinden ve dize tabanlı anahtar yönetiminden, türlenmiş, IntelliSense etkinleştirilmiş yerel .NET API'sine taşır. Bu kılavuz, AGPL-3.0 lisanslama maruziyetini ve harici yerel ikili bağımlılığı kaldıran adım adım bir taşıma yolunu açıklar.

Terim konusunda bir not:Ghostscript(Artifex Software tarafından) AGPL-3.0 veya ticari bir lisans altında çift lisanslıdır, düz GPL değil. "GPL" etiketi, açık kaynak yapı için uzun süredir devam eden bir topluluk kısaltmasıdır; bu kılavuzda her şey Ghostscript'in AGPL-3.0 yapısına ve Ghostscript.NET sargısına (aynı zamanda AGPL-3.0 / ticari-çift) atıfta bulunur. .NET'ten,Ghostscriptgenellikle bu sargı aracılığıyla tüketilir, bu da yerel gsdll32.dll / gsdll64.dll veya Process.Start üzerinden gswin32c / gswin64c dışa aktararak çalışır.

Neden Ghostscript'ten IronPDF'ye Geçiş Yapmalıyım

Ghostscript Zorlukları

Ghostscript, Artifex Software'den uzun süreli bir PostScript/PDF yorumlayıcısıdır ve uzun bir geçmişi vardır.Modern .NETuygulamalarındaki kullanımı birkaç pratik zorluk sunar:

  1. AGPL-3.0 Lisans Kısıtlamaları: HemGhostscripthem de Ghostscript.NET sargısı, AGPL-3.0 veya Artifex'ten ticari bir lisans altında çift lisanslıdır. AGPL'nin ağ-copyleft maddesi genellikle, büyük çalışmanın karşılık gelen kaynağı — SaaS / ağ kullanımı dahil — olmadığı sürece, ticari bir lisans satın almadığınız sürece, ağ kullanımı dahil daha geniş işin karşılık gelen kaynağını serbest bırakmanızı gerektirir. Bu, kapalı kaynaklı veya barındırılan .NET uygulamaları için genellikle AGPL yapısını devre dışı bırakır.

  2. Komut Satırı Arayüzü:Ghostscripttemel olarak bir komut satırı aracıdır. C#'tan kullanmak, işlemleri başlatmak, dize argümanları geçirmek ve çıktıyı ayrıştırmak anlamına gelir — ya gswin*c.exe karşı Process.Start aracılığıyla ya da Ghostscript.NET P/Invoke sargısı aracılığıyla.

  3. Harici İkili Bağımlılık: Ghostscript'i ayrı olarak yüklemelisiniz, PATH değişkenlerini yönetmelisiniz ve sürümleri ortamlar arasında uyumlu tutmalısınız. 32-bit ve 64-bit için farklı yerel DLL'ler gereklidir (gsdll32.dll ve gsdll64.dll).

  4. Yerel HTML'den PDF'ye Yok:GhostscriptHTML'yi PDF'ye doğrudan çeviremez. Öncelikle HTML'yi başka bir aracıyla PostScript'e dönüştürmeli, ardından PostScript'i PDF'ye dönüştürmek içinGhostscriptçalıştırmalısınız — harici bağımlılıklarla çok adımlı bir hat.

  5. Karışık Anahtar Sözcük Sözdizimi: İşlemler -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=... gibi komut satırı anahtarları aracılığıyla kontrol edilir. Hiçbir IntelliSense, hiçbir derleme-zamanı kontrol yok.

  6. Hata İşleme: Hatalar, yapılandırılmış istisna yönetimi yerine, text string'ler olarak stderr üzerinden gelir ve ayrıştırma gerektirir.

  7. Süreç Yönetimi Aşırı Yükü: Her işlem ayrı bir süreç üretir, zaman aşımı ve kaynak temizliği için yük ve karmaşıklık ekler.

Ghostscript ve IronPDF Karşılaştırması

Aspekt Ghostscript IronPDF
Lisans AGPL-3.0 (ağ-copyleft) veya Artifex ticari Açık ticari koşullar
Entegrasyon Komut satırı işlem başlatma Yerel .NET kütüphanesi
API Tasarımı Dize tabanlı anahtarlar IntelliSense etkin API
Hata Yönetimi stderr metni analiz et .NET istisnaları
HTML'den PDF'ye Desteklenmez (harici araçlar gerekir) Yerleşik Krom motor
Bağımlılıklar Harici ikili yükleme Kendine yeterli NuGet paketi
Dağıtım PATH yapılandır, DLL'leri kopyala Sadece NuGet referans ekle
İş Parçacığı Güvenliği İşlem izolasyonu sadece Tasarımı gereği iş parçacığı güvenli
Modern .NET Ghostscript.NET v1.3.x .NET Standard 2.0'ı hedef alır .NET Framework 4.6.2+ and .NET 6/7/8/9
Asenkron Destek İşlem tabanlı Yerel async/await

Göç Karmaşıklığı Değerlendirmesi

Özelliklere Göre Tahmini Çaba

Özellik Göç Karmaşıklığı
PDF'den Görüntüye Düşük
PDF'leri birleştir Düşük
PDF sıkıştır Düşük
PDF Optimizasyonu Düşük
Şifreleme Orta
Sayfa Çıkartma Düşük
PostScript PDF'ye Orta-Yüksek
Özel Anahtarlar Orta-Yüksek

Paradigma Değişimi

BuGhostscriptmigrasyonundaki temel değişiklik, komut satırı işlem yürütülmesinden türlenmiş .NET API çağrılarına:

Ghostscript:  "Bu dizi anahtarları harici bir süreçlere geçir"
IronPDF: "Bu yöntemleri .NET nesneleri üzerinde çağır"

Başlamadan Önce

Ön Koşullar

  1. .NET Sürümü: IronPDF, .NET Framework 4.6.2+ ve .NET Core / .NET 5+ (dahilinde .NET 6/7/8/9) destekler. Ghostscript.NET v1.3.x .NET Standard 2.0'ı hedef alır.
  2. Lisans Anahtarı:IronPDF lisans anahtarınızı ironpdf.com'dan edinin
  3. Yedekleme: Geçiş çalışmaları için bir dal oluşturun

TümGhostscriptKullanımını Belirleyin

# 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 Değişiklikleri

# 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 Bağımlılıklarını Kaldır

Geçişten sonra:

  • Sunuculardan Ghostscript'i kaldır
  • Dağıtımlardan gsdll32.dll / gsdll64.dll kaldır -Ghostscriptiçin PATH yapılandırmasını kaldır
  • Herhangi bir GhostscriptVersionInfo referansını kaldır

Hızlı Başlangıç Göçü

Adım 1: Lisans Yapılandırmasını Güncelleyin

Before (Ghostscript):

Ghostscript, AGPL-3.0 altında, ya AGPL şartları altında kaynak ifşası ya da Artifex'ten ticari bir lisans gerektirir.

Sonrası (IronPDF):

// Set once at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Set once at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
$vbLabelText   $csharpLabel

Adım 2: Ad Alanı İthalatlarını Güncelleyin

// Before (Ghostscript)
using Ghostscript.NET;
using Ghostscript.NET.Processor;
using Ghostscript.NET.Rasterizer;

// After (IronPDF)
using IronPdf;
// Before (Ghostscript)
using Ghostscript.NET;
using Ghostscript.NET.Processor;
using Ghostscript.NET.Rasterizer;

// After (IronPDF)
using IronPdf;
Imports Ghostscript.NET
Imports Ghostscript.NET.Processor
Imports Ghostscript.NET.Rasterizer

' After (IronPDF)
Imports IronPdf
$vbLabelText   $csharpLabel

Tam API Referansı

Temel Sınıf Eşlemeleri

Ghostscript.NET IronPDF Açıklama
GhostscriptProcessor Çeşitli PdfDocument yöntemleri PDF işlemi
GhostscriptRasterizer PdfDocument.RasterizeToImageFiles() PDF'den resimlere
GhostscriptVersionInfo N/A (gerekli değil) DLL konumu
GhostscriptStdIO N/A (istisna kullan) G/Ç yönetimi
İşlem + komut satırı ChromePdfRenderer HTML'den PDF'ye

Komut Satırı Anahtar Eşlemesi

Ghostscript Anahtarı IronPDF Eşdeğeri Açıklama
-dNOPAUSE N/A (gerekli değil) Sayfalar arasında duraklatma
-dBATCH N/A (gerekli değil) İşlem sonrası çıkış
-dSAFER N/A (varsayılan) Güvenli dosya erişimi
-sDEVICE=pdfwrite Çeşitli PDF yöntemleri PDF çıktısı
-sDEVICE=png16m RasterizeToImageFiles("*.png", DPI: N) PNG çıktısı
-sOutputFile=X SaveAs("X") Çıktı dosya adı
-r300 DPI: 300 parametresi Çözünürlük
-dPDFSETTINGS=/ebook CompressImages(quality: 60) Orta kalite
-dFirstPage=N -dLastPage=M CopyPages(new[] {N-1, ..., M-1}) Sayfa çıkartma (0-indeksli)
-sOwnerPassword=X SecuritySettings.OwnerPassword Sahip şifresi
-sUserPassword=X SecuritySettings.UserPassword Kullanıcı şifresi

Kod Göç Örnekleri

Örnek 1: HTML'den PDF'ye Dönüştürme

Before (Ghostscript):

// NuGet: Install-Package Ghostscript.NET
using Ghostscript.NET;
using Ghostscript.NET.Processor;
using System.IO;
using System.Text;

class GhostscriptExample
{
    static void Main()
    {
        //Ghostscriptcannot directly convert HTML to PDF
        // You need to first convert HTML to PS/EPS using another tool
        // then useGhostscriptto 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 -Ghostscriptprimarily 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()
    {
        //Ghostscriptcannot directly convert HTML to PDF
        // You need to first convert HTML to PS/EPS using another tool
        // then useGhostscriptto 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 -Ghostscriptprimarily 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

Sonrası (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;

class IronPdfExample
{
    static void Main()
    {
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

        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()
    {
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

        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()
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"

        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

Ghostscript, HTML'yi PDF'ye doğrudan çeviremez — PostScript veya PDF girişi bekler, bu nedenle HTML iş akışı, bir ara dönüşüm (genellikle wkhtmltopdf veya benzeri aracılığıyla) gerektirir. IronPDF'in ChromePdfRenderer, CSS, JavaScript ve modern web standartları desteği ile gömülü bir Chrome motoru aracılığıyla doğrudan HTML-PDF dönüştürmesi sağlar. Daha fazla işlem seçeneği için HTML'den PDF'e belgelerine bakın.

Örnek 2: PDF'den Görüntülere

Before (Ghostscript):

// 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

Sonrası (IronPDF):

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

class IronPdfExample
{
    static void Main()
    {
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

        var pdf = PdfDocument.FromFile("input.pdf");

        // One-shot: write every page as PNG matching Ghostscript's -r300 -sDEVICE=png16m
        pdf.RasterizeToImageFiles("output_page*.png", DPI: 300);
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class IronPdfExample
{
    static void Main()
    {
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

        var pdf = PdfDocument.FromFile("input.pdf");

        // One-shot: write every page as PNG matching Ghostscript's -r300 -sDEVICE=png16m
        pdf.RasterizeToImageFiles("output_page*.png", DPI: 300);
    }
}
Imports IronPdf
Imports System

Class IronPdfExample
    Shared Sub Main()
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"

        Dim pdf = PdfDocument.FromFile("input.pdf")

        ' One-shot: write every page as PNG matching Ghostscript's -r300 -sDEVICE=png16m
        pdf.RasterizeToImageFiles("output_page*.png", DPI:=300)
    End Sub
End Class
$vbLabelText   $csharpLabel

Ghostscript yaklaşımı, harici gsdll64.dll bulunmasını, bir GhostscriptVersionInfo nesnesi oluşturulmasını ve 1-baz indeksli sayfa numaralarıyla sayfaların yinelemesini gerektirir. IronPDF'in RasterizeToImageFiles her sayfayı tek bir çağrıda bir glob çıktı deseni ve açık bir DPI: parametresi ile yazar, hiçbir harici yerel bağımlılık olmadan. Sayfa indeksleriyle çalıştığınızda Ghostscript'in 1-indeksli sayfalar kullandığını, IronPDF'un ise 0-indeksli sayfalar (standart .NET) kullandığını unutmayın.

Örnek 3: PDF Dosyalarını Birleştirin

Before (Ghostscript):

// 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

Sonrası (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using System.Collections.Generic;

class IronPdfExample
{
    static void Main()
    {
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

        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()
    {
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

        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()
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"

        Dim pdfs = 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

Ghostscript yaklaşımı, tam bir anahtar büyüsünü (-dNOPAUSE, -dBATCH, -sDEVICE=pdfwrite) ve dosya yollarını bir karakter dizisi dizisine birleştirmeyi gerektirir. IronPDF'in statik Merge metodu, tipi belirtilmiş bir IEnumerable<PdfDocument> alır ve yeni bir PdfDocument döndürür. Daha fazla bilgi edinin PDF birleştirme ve bölme.


Kritik Taşıma Notları

Sayfa İndeksleme Dönüşümü

Bu taşımanın en önemli farklarından biri sayfa indekslemedir.Ghostscriptanahtarları -dFirstPage=N / -dLastPage=M gibi 1-baz indekslidir; IronPDF'in CopyPages 0-baz indekslidir (standart .NET):

// Ghostscript: -dFirstPage=5 -dLastPage=8 (1-indexed, inclusive)

// IronPDF: 0-indexed page array
var extracted = pdf.CopyPages(new[] {4, 5, 6, 7});
extracted.SaveAs("pages_5_to_8.pdf");
// Ghostscript: -dFirstPage=5 -dLastPage=8 (1-indexed, inclusive)

// IronPDF: 0-indexed page array
var extracted = pdf.CopyPages(new[] {4, 5, 6, 7});
extracted.SaveAs("pages_5_to_8.pdf");
' Ghostscript: -dFirstPage=5 -dLastPage=8 (1-indexed, inclusive)

' IronPDF: 0-indexed page array
Dim extracted = pdf.CopyPages({4, 5, 6, 7})
extracted.SaveAs("pages_5_to_8.pdf")
$vbLabelText   $csharpLabel

AGPL-3.0 Lisans Endişeleri

HemGhostscripthem de Ghostscript.NET sargısı, AGPL-3.0 veya Artifex'ten ticari bir lisans altında çift lisanslıdır. AGPL-3.0'nın ağ-copyleft maddesi genellikle, ağda erişilebilir dağıtımlar dahil — ticari lisansınız olmadıkça daha geniş işin karşılık gelen kaynağını serbest bırakmanızı gerektirir. PDF iş yüklerini IronPDF'a taşımak, o parçaları taşıdığınız taahhüdü kaldırır; eğer Ghostscript'i sadece PostScript alımı için tutarsanız, Artifex ticari lisansı o parçayı kapsar. (This is a general summary, not legal advice — consult counsel for your specific deployment.)

Hiçbir Harici İkili Yok

IronPDF, bir NuGet paketi olarak dağıtılır. Bunları geçişten sonra kaldırın:

  • gsdll32.dll ve gsdll64.dll dosyaları
  • SunuculardanGhostscriptkurulumu
  • PATH ortam değişkeni yapılandırmalarını kaldır
  • Kodda GhostscriptVersionInfo referansları

PostScript Dosyalar

IronPDF, PostScript (.ps) dosyalarını doğrudan işlemez. İş akışınız PostScript işlemeyi gerektirirse, ya:

  1. PostScript'i IronPDF işleminden önce başka bir araç kullanarak PDF'ye dönüştürün
  2. Kaynak içeriği HTML'ye dönüştürün ve IronPDF'nin HTML renderlemesini kullanın

Performans Dikkat Edilecek Hususlar

İşlem Çalıştırma Yok

gswin64c.exe dışa yürütme (veya gsdll64.dll P/Invoke yapma), işlem ve yerel etkileşim yükü taşır. IronPDF, yönetilen .NET kodu olarak işlem içinde çalışır:

// Ghostscript: process or P/Invoke overhead per call
processor.Process(switches.ToArray());

// IronPDF: in-process method call
var merged = PdfDocument.Merge(pdfs);
// Ghostscript: process or P/Invoke overhead per call
processor.Process(switches.ToArray());

// IronPDF: in-process method call
var merged = PdfDocument.Merge(pdfs);
' Ghostscript: process or P/Invoke overhead per call
processor.Process(switches.ToArray())

' IronPDF: in-process method call
Dim merged = PdfDocument.Merge(pdfs)
$vbLabelText   $csharpLabel

İş Parçacığı Güvenliği

IronPDF, birden çok iş parçacığından ChromePdfRenderer ve PdfDocument'nin eşzamanlı kullanımını destekler. Paralel işleme desenleri rehberliği için IronPDF belgelerine bakın.


Geçiş Kontrol Listesi

Öncesi-Geçiş

  • Kod tabanındaki tümGhostscriptkullanımının envanterini çıkarın
  • Kullanılan mevcut komut satırı anahtarlarını belgeleyin
  • Herhangi bir PostScript işlemesini belirleyin (özel işleme ihtiyaç duyabilir)
  • AGPL-3.0 lisans uyumluluğu durumunu gözden geçirin -IronPDF lisans anahtarını edinin
  • Sürüm kontrolünde geçiş dalı oluşturun

Kod Geçişi

  • Ghostscript.NET NuGet paketini kaldırın: dotnet remove package Ghostscript.NET -IronPDF NuGet paketini kurun: dotnet add package IronPdf
  • HariciGhostscriptikili bağımlılıklarını kaldırın
  • GhostscriptVersionInfo ve DLL referanslarını kaldır
  • GhostscriptProcessor.Process()'yi IronPDF metodlarına dönüştür
  • GhostscriptRasterizer'yi pdf.RasterizeToImageFiles()'a dönüştür
  • Komut satırı anahtarlarını API çağrılarıyla değiştirin
  • Yanlış h_handle'den bellek sızıntısını kaldırmak için hata ayıklama
  • 1'den başlayan sayfa numaralarını 0'dan başlayan numaralara dönüştürün

Test Etme

  • PDF'den resme dönüştürme test edin
  • PDF birleştirmesini test edin
  • Sayfa çıkarmayı test edin
  • Sıkıştırma kalitesini test edin
  • Şifre korumasını test edin
  • Çıktı kalitesinin beklentileri karşıladığını doğrulayın
  • Kritik yolları performans benchmark yapın

Kullanım

  • Sunuculardan Ghostscript'i kaldırın
  • PATH yapılandırmasını kaldırın
  • Dağıtımlardan gsdll*.dll dosyalarını kaldır
  • UygulamanınGhostscriptyüklenmeden çalıştığını doğrulayın

Geçiş Sonrası

  • Artifex ticari lisansını iptal edin (eğer önceden sahiplenilmişse ve artık gerekmiyorsa)
  • Belgeleri güncelleyin
  • Ekibe IronPDF API eğitimi verin
  • Herhangi bir sorunu izlemek için üretimi takip edin

Lütfen dikkate alınGhostscript, ilgili sahibinin tescilli markasıdır. Bu site Artifex Software ile bağlantılı değildir, onaylanmamış veya desteklenmemektedir. Tüm ürün adları, logolar ve markalar kendi sahiplerine aittir. Karşılaştırmalar, yalnızca bilgilendirme amaçlıdır ve yazı sırasında halka açık bilgilerle alakalı olarak yansıtılmaktadır.

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında Lisans Derecesine (Carleton Üniversitesi) sahip ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirmeyle ilgileniyor. Sezgisel ve estetik açıdan hoş kullanıcı arayüzleri oluşturma tutkunu, Curtis modern çerçevelerle çalışmayı ve iyi yapı...

Daha Fazla Oku

Iron Destek Ekibi

Haftada 5 gün, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara