IRONSOFTWAREHOME
VIDEOLAR

C#'ta PDF'leri Sıkıştırma

Curtis Chau
Curtis Chau
Updated: 19 Temmuz 2026

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ı

AspektGhostscriptIronPDF
LisansAGPL-3.0 (ağ-copyleft) veya Artifex ticariAçık ticari koşullar
EntegrasyonKomut satırı işlem başlatmaYerel .NET kütüphanesi
API TasarımıDize tabanlı anahtarlarIntelliSense etkin API
Hata Yönetimistderr metni analiz et.NET istisnaları
HTML'den PDF'yeDesteklenmez (harici araçlar gerekir)Yerleşik Krom motor
BağımlılıklarHarici ikili yüklemeKendine yeterli NuGet paketi
DağıtımPATH yapılandır, DLL'leri kopyalaSadece NuGet referans ekle
İş Parçacığı Güvenliğiİşlem izolasyonu sadeceTasarımı gereği iş parçacığı güvenli
Modern .NETGhostscript.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

ÖzellikGöç Karmaşıklığı
PDF'den GörüntüyeDüşük
PDF'leri birleştirDüşük
PDF sıkıştırDüşük
PDF OptimizasyonuDüşük
ŞifrelemeOrta
Sayfa ÇıkartmaDüşük
PostScript PDF'yeOrta-Yüksek
Özel AnahtarlarOrta-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"
Text

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

NuGet Paket Değişiklikleri

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

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;

Tam API Referansı

Temel Sınıf Eşlemeleri

Ghostscript.NETIronPDFAçıklama
GhostscriptProcessorÇeşitli PdfDocument yöntemleriPDF işlemi
GhostscriptRasterizerPdfDocument.RasterizeToImageFiles()PDF'den resimlere
GhostscriptVersionInfoN/A (gerekli değil)DLL konumu
GhostscriptStdION/A (istisna kullan)G/Ç yönetimi
İşlem + komut satırıChromePdfRendererHTML'den PDF'ye

Komut Satırı Anahtar Eşlemesi

Ghostscript AnahtarıIronPDF EşdeğeriAçıklama
-dNOPAUSEN/A (gerekli değil)Sayfalar arasında duraklatma
-dBATCHN/A (gerekli değil)İşlem sonrası çıkış
-dSAFERN/A (varsayılan)Güvenli dosya erişimi
-sDEVICE=pdfwriteÇeşitli PDF yöntemleriPDF çıktısı
-sDEVICE=png16mRasterizeToImageFiles("*.png", DPI: N)PNG çıktısı
-sOutputFile=XSaveAs("X")Çıktı dosya adı
-r300DPI: 300 parametresiÇözünürlük
-dPDFSETTINGS=/ebookCompressImages(quality: 60)Orta kalite
-dFirstPage=N -dLastPage=MCopyPages(new[] {N-1, ..., M-1})Sayfa çıkartma (0-indeksli)
-sOwnerPassword=XSecuritySettings.OwnerPasswordSahip şifresi
-sUserPassword=XSecuritySettings.UserPasswordKullanı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());
    }
}
C#

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

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

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

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

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

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

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

İş 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ın: Ghostscript, 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ılandırılmış, görsel olarak çekici kılavuzlar oluşturmayı seviyor.

...
Daha Fazla Oku

İlgili Makaleler

Key in blue circle

Ücretsiz 30 günlük Deneme Anahtarınızı anında edinin.

Your trial license will be sent to your email address

Herhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.

bullet_checkedKredi kartı veya hesap oluşturma gerektirmezHerhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Ücretsiz Canlı Demo rezervasyonu yapın
Booking Badge

Dünya Çapında Milyonlarca Mühendisin Güvendiği

Iron Software müşteri logoları
Bağımsız Danışmanlık Alın
Aşağıdaki formu doldurun veya sales@ironsoftware.com adresine e-posta gönderin
Bilgileriniz daima gizli kalacaktır.
Dünya Çapında Milyonlarca Mühendisin Güvendiği
Iron Software müşteri logoları
Ücretsiz 30 Günlük Deneme Anahtarınızı anında alın.
Kredi kartı veya hesap oluşturma gerektirmez