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:
-
AGPL-3.0 Lisans Kısıtlamaları: HemGhostscripthem de
Ghostscript.NETsargı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. -
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.exekarşıProcess.Startaracılığıyla ya daGhostscript.NETP/Invoke sargısı aracılığıyla. -
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.dllvegsdll64.dll). -
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.
-
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. -
Hata İşleme: Hatalar, yapılandırılmış istisna yönetimi yerine, text string'ler olarak stderr üzerinden gelir ve ayrıştırma gerektirir.
- 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
- .NET Sürümü: IronPDF, .NET Framework 4.6.2+ ve .NET Core / .NET 5+ (dahilinde .NET 6/7/8/9) destekler.
Ghostscript.NETv1.3.x .NET Standard 2.0'ı hedef alır. - Lisans Anahtarı:IronPDF lisans anahtarınızı ironpdf.com'dan edinin
- 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" .
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
Ghostscript Bağımlılıklarını Kaldır
Geçişten sonra:
- Sunuculardan Ghostscript'i kaldır
- Dağıtımlardan
gsdll32.dll/gsdll64.dllkaldır -Ghostscriptiçin PATH yapılandırmasını kaldır - Herhangi bir
GhostscriptVersionInforeferansı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";
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
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
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
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
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
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
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
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")
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.dllvegsdll64.dlldosyaları- SunuculardanGhostscriptkurulumu
- PATH ortam değişkeni yapılandırmalarını kaldır
- Kodda
GhostscriptVersionInforeferansları
PostScript Dosyalar
IronPDF, PostScript (.ps) dosyalarını doğrudan işlemez. İş akışınız PostScript işlemeyi gerektirirse, ya:
- PostScript'i IronPDF işleminden önce başka bir araç kullanarak PDF'ye dönüştürün
- 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)
İş 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
GhostscriptVersionInfove DLL referanslarını kaldırGhostscriptProcessor.Process()'yi IronPDF metodlarına dönüştürGhostscriptRasterizer'yipdf.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*.dlldosyaları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

