GdPicture.NET SDK'dan IronPDF'e C# ile Nasıl Geçilir
GdPicture.NET SDK'dan IronPDF'ye geçiş, .NET geliştiricileri için PDF üretimine odaklanmış, akıcı bir yaklaşım sunar. Bu rehber, karmaşık belge görüntüleme SDK kalıplarını modern, PDF özel API'lere sahip güncel .NET geliştirmesi için tasarlanmış bir yol sunar ve kapsamlı, adım adım bir geçiş yolu sağlar.
GdPicture.NET SDK'dan IronPDF'e Neden Geçmeli
GdPicture.NET SDK Zorlukları
GdPicture.NET SDK (şimdi Nutrient olarak yeniden markalandı) PDF odaklı geliştirme için birkaç zorluğu olan kapsamlı bir belge görüntüleme SDK'sıdır:
-
Sadece PDF İçerikli Projeler için Aşırı: GdPicture.NET SDK, OCR, barkod tanıma, tarama ve görüntü işleme dahil olmak üzere tam bir belge görüntüleme paketidir. Sadece PDF işlevselliğine ihtiyacınız varsa, asla kullanmayacağınız özellikler için ödeme yapıyorsunuz.
-
Karmaşık Lisanslama: Çeşitli ürün kademeleri (GdPicture.NET 14, GdPicture.API, Ultimate, Professional) ve kafa karıştırıcı SKU kombinasyonları ile yıllık abonelik gereklilikleri.
-
Kurumsal Fiyatlandırma: Tek başına PDF plugin için lisans maliyetleri $2.999'dan başlar ve Ultimate sürümü için $10.000+ 'ya kadar çıkar. Her geliştirici için lisanslama, büyüyen ekipler için önemli bir genel gider ekler.
-
Dik Öğrenme Eğrisi: API, modern .NET kalıplarına göre değil, belge görüntüleme kavramları etrafında tasarlanmıştır. Güncel C# konvansiyonlarına kıyasla,
LicenseManager.RegisterKEY()gibi yöntemler,GdPictureStatusenum kontrolü ve 1-indeksli sayfalar eski görünüyor. -
Durum Kodu Deseni: Her işlem, kontrol edilmesi gereken bir
GdPictureStatusenum döndürür—hatalarda hiçbir istisna atılmaz, bu da hata yönetimini ayrıntılı ve tekrarlı hale getirir. -
Manuel Kaynak Yönetimi: Açık bir
Dispose()veyaRelease()çağrısı gerektirir. SDK, standart .NET imha kalıplarını temiz bir şekilde takip etmez. -
Sürüm Bağlılığı:
GdPicture14isim alanı, sürüm numarasını içerir, bu nedenle büyük sürüm yükseltmeleri tüm kod tabanınızda isim alanı değişiklikleri gerektirir. - Rebranding Karışıklığı: 'Nutrient' olarak yakın zamanda yeniden markalandırma, gdpicture.com ve nutrient.io arasında belgelerin bölünmesine neden olur, bu da destek ve öğrenmeyi karmaşık hale getirir.
GdPicture.NET SDK ve IronPDF Karşılaştırması
| Aspekt | GdPicture.NET SDK | IronPDF |
|---|---|---|
| Odak | Belge görüntüleme paketi (PDF için gereksiz) | PDF'ye özgü kütüphane |
| Fiyatlandırma | $2,999-$10,000+ kurumsal kademe | Rekabetçi, iş ile ölçeklenir |
| API Tarzı | Durum kodları, manuel yönetim | İstisnalar, IDisposable, modern .NET |
| Öğrenme Eğrisi | Zor (görüntüleme SDK kavramları) | Basit (HTML/CSS tanıdık) |
| HTML İşleme | Temel, dahili motor | En son Chromium, CSS3/JS ile |
| Sayfa İçin Dizimleme | 1-indexli | 0-indexli (standart .NET) |
| İş Parçacığı Güvenliği | Manuel senkronizasyon gereklidir | Tasarımı gereği iş parçacığı güvenli |
| Namespace | Sürüme özgü (GdPicture14) |
Stabil (IronPdf) |
IronPDF, modern .NET kalıpları ve gelenekleri ile uyumludur ve mevcut .NET sürümleri için doğrudan bir uyum sağlar.
Göç Karmaşıklığı Değerlendirmesi
Özelliklere Göre Tahmini Çaba
| Özellik | Göç Karmaşıklığı |
|---|---|
| HTML'den PDF'ye | Düşük |
| URL'yi PDF'ye çevir | Düşük |
| PDF'leri birleştir | Düşük |
| PDF Ayırma | Düşük |
| Filigranlar | Düşük |
| Metin Çıkarma | Düşük |
| Şifre Koruması | Orta |
| Form Alanları | Orta |
| Dijital İmzalar | Orta-Yüksek |
| OCR | Yüksek |
| Barkod Tanıma | Yok |
Geçiş Karar Matrisi
| Durumunuz | Öneri |
|---|---|
| Sadece PDF işlemleri | Geçiş yapın - önemli basitleştirme ve maliyet tasarrufu |
| YoğunOCRkullanımı | IronOCR'yu yardımcı ürün olarak düşünün |
| Barkod/tarama ihtiyaçları | Bu özellikler içinGdPicture.NET SDKkullanın, PDF için IronPDF kullanın |
| Tam belge görüntüleme | Tüm özellikleri gerçekten kullanıp kullanmadığınızı değerlendirin |
Başlamadan Önce
Ön Koşullar
- .NET Sürümü: IronPDF, .NET Framework 4.6.2+ ve .NET Core 2.0+ / .NET 5+ destekler
- Lisans Anahtarı:IronPDF lisans anahtarınızı ironpdf.com'dan edinin
- Yedekleme: Geçiş çalışmaları için bir dal oluşturun
TümGdPicture.NET SDKKullanımını Tanımla
# Find allGdPicture.NET SDKreferences in your codebase
grep -r "GdPicture14\|GdPicturePDF\|GdPictureDocumentConverter\|GdPictureStatus\|LicenseManager\.RegisterKEY" --include="*.cs" .
# Find all GdPicture package references
grep -r "GdPicture" --include="*.csproj" .
# Find allGdPicture.NET SDKreferences in your codebase
grep -r "GdPicture14\|GdPicturePDF\|GdPictureDocumentConverter\|GdPictureStatus\|LicenseManager\.RegisterKEY" --include="*.cs" .
# Find all GdPicture package references
grep -r "GdPicture" --include="*.csproj" .
NuGet Paket Değişiklikleri
# RemoveGdPicture.NET SDKpackages
dotnet remove package GdPicture.NET.14
dotnet remove package GdPicture.NET.14.API
dotnet remove package GdPicture
dotnet remove package GdPicture.API
# Install IronPDF
dotnet add package IronPdf
# RemoveGdPicture.NET SDKpackages
dotnet remove package GdPicture.NET.14
dotnet remove package GdPicture.NET.14.API
dotnet remove package GdPicture
dotnet remove package GdPicture.API
# Install IronPDF
dotnet add package IronPdf
Hızlı Başlangıç Göçü
Adım 1: Lisans Yapılandırmasını Güncelleyin
Önce (GdPicture.NET SDK):
// Must be called before anyGdPicture.NET SDKoperations
LicenseManager.RegisterKEY("YOUR-GDPICTURE-LICENSE-KEY");
// Must be called before anyGdPicture.NET SDKoperations
LicenseManager.RegisterKEY("YOUR-GDPICTURE-LICENSE-KEY");
' Must be called before any GdPicture.NET SDK operations
LicenseManager.RegisterKEY("YOUR-GDPICTURE-LICENSE-KEY")
Sonrası (IronPDF):
// Set once at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Or in appsettings.json:
// { "IronPdf.License.LicenseKey": "YOUR-LICENSE-KEY" }
// Set once at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Or in appsettings.json:
// { "IronPdf.License.LicenseKey": "YOUR-LICENSE-KEY" }
Imports IronPdf
' Set once at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
' Or in appsettings.json:
' { "IronPdf.License.LicenseKey": "YOUR-LICENSE-KEY" }
Adım 2: Ad Alanı İthalatlarını Güncelleyin
// Before (GdPicture.NET SDK)
using GdPicture14;
// After (IronPDF)
using IronPdf;
using IronPdf.Editing;
// Before (GdPicture.NET SDK)
using GdPicture14;
// After (IronPDF)
using IronPdf;
using IronPdf.Editing;
Imports IronPdf
Imports IronPdf.Editing
Adım 3: Temel Dönüştürme Kalıbı
GdPicture.NET SDK geçişindeki en önemli değişiklik, ayrıntılı durum-kontrol kalıbını ortadan kaldırmaktır:
Önce (GdPicture.NET SDK):
using GdPicture14;
LicenseManager.RegisterKEY("YOUR-GDPICTURE-LICENSE-KEY");
using (GdPictureDocumentConverter converter = new GdPictureDocumentConverter())
{
GdPictureStatus status = converter.LoadFromHTMLString("<h1>Hello World</h1>");
if (status == GdPictureStatus.OK)
{
status = converter.SaveAsPDF("output.pdf");
if (status != GdPictureStatus.OK)
{
Console.WriteLine($"Error: {status}");
}
}
else
{
Console.WriteLine($"Load error: {status}");
}
}
using GdPicture14;
LicenseManager.RegisterKEY("YOUR-GDPICTURE-LICENSE-KEY");
using (GdPictureDocumentConverter converter = new GdPictureDocumentConverter())
{
GdPictureStatus status = converter.LoadFromHTMLString("<h1>Hello World</h1>");
if (status == GdPictureStatus.OK)
{
status = converter.SaveAsPDF("output.pdf");
if (status != GdPictureStatus.OK)
{
Console.WriteLine($"Error: {status}");
}
}
else
{
Console.WriteLine($"Load error: {status}");
}
}
Imports GdPicture14
LicenseManager.RegisterKEY("YOUR-GDPICTURE-LICENSE-KEY")
Using converter As New GdPictureDocumentConverter()
Dim status As GdPictureStatus = converter.LoadFromHTMLString("<h1>Hello World</h1>")
If status = GdPictureStatus.OK Then
status = converter.SaveAsPDF("output.pdf")
If status <> GdPictureStatus.OK Then
Console.WriteLine($"Error: {status}")
End If
Else
Console.WriteLine($"Load error: {status}")
End If
End Using
Sonrası (IronPDF):
using IronPdf;
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
pdf.SaveAs("output.pdf");
using IronPdf;
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
pdf.SaveAs("output.pdf");
Imports IronPdf
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>")
pdf.SaveAs("output.pdf")
Ana Farklılıklar:
- Durum kontrolü yok - hatalarda istisnalar
- İşleyici için açık imha gerekmez
- Modern akıcı API
- Daha iyi HTML/CSS desteği için Chromium tabanlı işleme
Tam API Referansı
Namespace Haritalama
| GdPicture.NET SDK | IronPDF |
|---|---|
GdPicture14 |
IronPdf |
GdPicture14.PDF |
IronPdf |
GdPicture14.Imaging |
Yok(gerekli değil) |
Temel Sınıf Eşlemeleri
| GdPicture.NET SDK | IronPDF | Açıklama |
|---|---|---|
GdPicturePDF |
PdfDocument |
Ana PDF döküman sınıfı |
GdPictureDocumentConverter |
ChromePdfRenderer |
HTML/URL'den PDF'e dönüşüm |
LicenseManager |
IronPdf.License |
Lisans yönetimi |
GdPictureStatus |
Istisnalar | Hata işleme |
Belge Yükleme Yöntemleri
| GdPicture.NET SDK | IronPDF |
|---|---|
pdf.LoadFromFile(path, loadInMemory) |
PdfDocument.FromFile(path) |
pdf.LoadFromFile(path, password, loadInMemory) |
PdfDocument.FromFile(path, password) |
converter.LoadFromHTMLString(html) |
renderer.RenderHtmlAsPdf(html) |
converter.LoadFromURL(url) |
renderer.RenderUrlAsPdf(url) |
Sayfa İşlemleri
| GdPicture.NET SDK | IronPDF |
|---|---|
pdf.GetPageCount() |
pdf.PageCount |
pdf.SelectPage(pageNo) |
pdf.Pages[index] |
pdf.GetPageWidth() |
pdf.Pages[i].Width |
pdf.GetPageHeight() |
pdf.Pages[i].Height |
Birleştirme ve Bölme İşlemleri
| GdPicture.NET SDK | IronPDF |
|---|---|
pdf1.MergePages(pdf2) |
PdfDocument.Merge(pdf1, pdf2) |
pdf.ExtractPages(start, end) |
pdf.CopyPages(indices) |
Filigran İşlemleri
| GdPicture.NET SDK | IronPDF |
|---|---|
pdf.DrawText(...) döngü |
pdf.ApplyWatermark(html) |
pdf.SetTextColor(color) |
CSS stillendirme |
pdf.SetTextSize(size) |
CSS stillendirme |
Kod Göç Örnekleri
Örnek 1: HTML'den PDF'ye Dönüştürme
Önce (GdPicture.NET SDK):
// NuGet: Install-Package GdPicture.NET
using GdPicture14;
using System;
class Program
{
static void Main()
{
using (GdPictureDocumentConverter converter = new GdPictureDocumentConverter())
{
string htmlContent = "<html><body><h1>Hello World</h1></body></html>";
GdPictureStatus status = converter.LoadFromHTMLString(htmlContent);
if (status == GdPictureStatus.OK)
{
converter.SaveAsPDF("output.pdf");
}
}
}
}
// NuGet: Install-Package GdPicture.NET
using GdPicture14;
using System;
class Program
{
static void Main()
{
using (GdPictureDocumentConverter converter = new GdPictureDocumentConverter())
{
string htmlContent = "<html><body><h1>Hello World</h1></body></html>";
GdPictureStatus status = converter.LoadFromHTMLString(htmlContent);
if (status == GdPictureStatus.OK)
{
converter.SaveAsPDF("output.pdf");
}
}
}
}
Imports GdPicture14
Imports System
Class Program
Shared Sub Main()
Using converter As New GdPictureDocumentConverter()
Dim htmlContent As String = "<html><body><h1>Hello World</h1></body></html>"
Dim status As GdPictureStatus = converter.LoadFromHTMLString(htmlContent)
If status = GdPictureStatus.OK Then
converter.SaveAsPDF("output.pdf")
End If
End Using
End Sub
End Class
Sonrası (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
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;
using System;
class Program
{
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
Imports System
Class Program
Shared Sub Main()
Dim renderer = 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
IronPDF'nin ChromePdfRenderer, durum kodu kontrolü ihtiyacını ortadan kaldıran doğru HTML/CSS işleme için modern bir Chromium motoru kullanır. Daha fazla HTML renderleme seçeneği için, HTML'den PDF'ye dokümantasyona bakın.
Örnek 2: Birden Fazla PDF Birleştir
Önce (GdPicture.NET SDK):
// NuGet: Install-Package GdPicture.NET
using GdPicture14;
using System;
class Program
{
static void Main()
{
using (GdPicturePDF pdf1 = new GdPicturePDF())
using (GdPicturePDF pdf2 = new GdPicturePDF())
{
pdf1.LoadFromFile("document1.pdf", false);
pdf2.LoadFromFile("document2.pdf", false);
pdf1.MergePages(pdf2);
pdf1.SaveToFile("merged.pdf");
}
}
}
// NuGet: Install-Package GdPicture.NET
using GdPicture14;
using System;
class Program
{
static void Main()
{
using (GdPicturePDF pdf1 = new GdPicturePDF())
using (GdPicturePDF pdf2 = new GdPicturePDF())
{
pdf1.LoadFromFile("document1.pdf", false);
pdf2.LoadFromFile("document2.pdf", false);
pdf1.MergePages(pdf2);
pdf1.SaveToFile("merged.pdf");
}
}
}
Imports GdPicture14
Imports System
Class Program
Shared Sub Main()
Using pdf1 As New GdPicturePDF(), pdf2 As New GdPicturePDF()
pdf1.LoadFromFile("document1.pdf", False)
pdf2.LoadFromFile("document2.pdf", False)
pdf1.MergePages(pdf2)
pdf1.SaveToFile("merged.pdf")
End Using
End Sub
End Class
Sonrası (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using System.Collections.Generic;
class Program
{
static void Main()
{
var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
var merged = PdfDocument.Merge(new List<PdfDocument> { pdf1, pdf2 });
merged.SaveAs("merged.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System.Collections.Generic;
class Program
{
static void Main()
{
var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
var merged = PdfDocument.Merge(new List<PdfDocument> { pdf1, pdf2 });
merged.SaveAs("merged.pdf");
}
}
Imports IronPdf
Imports System.Collections.Generic
Class Program
Shared Sub Main()
Dim pdf1 = PdfDocument.FromFile("document1.pdf")
Dim pdf2 = PdfDocument.FromFile("document2.pdf")
Dim merged = PdfDocument.Merge(New List(Of PdfDocument) From {pdf1, pdf2})
merged.SaveAs("merged.pdf")
End Sub
End Class
IronPDF'nin statik Merge yöntemi, bir belge listesini kabul eder, bu da birden fazla PDF'yi tek bir işlemde birleştirmeyi kolaylaştırır. Daha fazla bilgi edinin PDF birleştirme ve bölme.
Örnek 3: Tüm Sayfalara Filigran Ekle
Önce (GdPicture.NET SDK):
// NuGet: Install-Package GdPicture.NET
using GdPicture14;
using System;
using System.Drawing;
class Program
{
static void Main()
{
using (GdPicturePDF pdf = new GdPicturePDF())
{
pdf.LoadFromFile("input.pdf", false);
for (int i = 1; i <= pdf.GetPageCount(); i++)
{
pdf.SelectPage(i);
pdf.SetTextColor(Color.Red);
pdf.SetTextSize(48);
pdf.DrawText("CONFIDENTIAL", 200, 400);
}
pdf.SaveToFile("watermarked.pdf");
}
}
}
// NuGet: Install-Package GdPicture.NET
using GdPicture14;
using System;
using System.Drawing;
class Program
{
static void Main()
{
using (GdPicturePDF pdf = new GdPicturePDF())
{
pdf.LoadFromFile("input.pdf", false);
for (int i = 1; i <= pdf.GetPageCount(); i++)
{
pdf.SelectPage(i);
pdf.SetTextColor(Color.Red);
pdf.SetTextSize(48);
pdf.DrawText("CONFIDENTIAL", 200, 400);
}
pdf.SaveToFile("watermarked.pdf");
}
}
}
Imports GdPicture14
Imports System
Imports System.Drawing
Module Program
Sub Main()
Using pdf As New GdPicturePDF()
pdf.LoadFromFile("input.pdf", False)
For i As Integer = 1 To pdf.GetPageCount()
pdf.SelectPage(i)
pdf.SetTextColor(Color.Red)
pdf.SetTextSize(48)
pdf.DrawText("CONFIDENTIAL", 200, 400)
Next
pdf.SaveToFile("watermarked.pdf")
End Using
End Sub
End Module
Sonrası (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Editing;
class Program
{
static void Main()
{
var pdf = PdfDocument.FromFile("input.pdf");
pdf.ApplyWatermark("<h1 style='color:red;'>CONFIDENTIAL</h1>", 50, VerticalAlignment.Middle, HorizontalAlignment.Center);
pdf.SaveAs("watermarked.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Editing;
class Program
{
static void Main()
{
var pdf = PdfDocument.FromFile("input.pdf");
pdf.ApplyWatermark("<h1 style='color:red;'>CONFIDENTIAL</h1>", 50, VerticalAlignment.Middle, HorizontalAlignment.Center);
pdf.SaveAs("watermarked.pdf");
}
}
Imports IronPdf
Imports IronPdf.Editing
Class Program
Shared Sub Main()
Dim pdf = PdfDocument.FromFile("input.pdf")
pdf.ApplyWatermark("<h1 style='color:red;'>CONFIDENTIAL</h1>", 50, VerticalAlignment.Middle, HorizontalAlignment.Center)
pdf.SaveAs("watermarked.pdf")
End Sub
End Class
GdPicture.NET SDK'da koordinat tabanlı metin çiziminden HTML tabanlı filigranlamaya geçiş, kodu önemli ölçüde basitleştirir. IronPDF'nin ApplyWatermark yöntemi, manuel sayfa yinelemesi ve koordinat hesaplamalarını ortadan kaldırarak HTML/CSS stilini kullanır. Ek seçenekler için filigran dokümantasyonunu görün.
Örnek 4: Şifre Koruması ve Güvenlik
Önce (GdPicture.NET SDK):
using GdPicture14;
class Program
{
static void Main()
{
LicenseManager.RegisterKEY("YOUR-GDPICTURE-LICENSE-KEY");
using (GdPicturePDF pdf = new GdPicturePDF())
{
GdPictureStatus status = pdf.LoadFromFile("document.pdf", false);
if (status != GdPictureStatus.OK) return;
// Save with encryption - many boolean parameters
status = pdf.SaveToFile(
"protected.pdf",
PdfEncryption.PdfEncryption256BitAES,
"user123", // User password
"owner456", // Owner password
true, // Can print
false, // Cannot copy
false, // Cannot modify
false, // Cannot add notes
true, // Can fill forms
false, // Cannot extract
false, // Cannot assemble
true // Can print high quality
);
}
}
}
using GdPicture14;
class Program
{
static void Main()
{
LicenseManager.RegisterKEY("YOUR-GDPICTURE-LICENSE-KEY");
using (GdPicturePDF pdf = new GdPicturePDF())
{
GdPictureStatus status = pdf.LoadFromFile("document.pdf", false);
if (status != GdPictureStatus.OK) return;
// Save with encryption - many boolean parameters
status = pdf.SaveToFile(
"protected.pdf",
PdfEncryption.PdfEncryption256BitAES,
"user123", // User password
"owner456", // Owner password
true, // Can print
false, // Cannot copy
false, // Cannot modify
false, // Cannot add notes
true, // Can fill forms
false, // Cannot extract
false, // Cannot assemble
true // Can print high quality
);
}
}
}
Imports GdPicture14
Class Program
Shared Sub Main()
LicenseManager.RegisterKEY("YOUR-GDPICTURE-LICENSE-KEY")
Using pdf As New GdPicturePDF()
Dim status As GdPictureStatus = pdf.LoadFromFile("document.pdf", False)
If status <> GdPictureStatus.OK Then Return
' Save with encryption - many boolean parameters
status = pdf.SaveToFile(
"protected.pdf",
PdfEncryption.PdfEncryption256BitAES,
"user123", ' User password
"owner456", ' Owner password
True, ' Can print
False, ' Cannot copy
False, ' Cannot modify
False, ' Cannot add notes
True, ' Can fill forms
False, ' Cannot extract
False, ' Cannot assemble
True ' Can print high quality
)
End Using
End Sub
End Class
Sonrası (IronPDF):
using IronPdf;
class Program
{
static void Main()
{
var pdf = PdfDocument.FromFile("document.pdf");
// Configure security settings with clear property names
pdf.SecuritySettings.OwnerPassword = "owner456";
pdf.SecuritySettings.UserPassword = "user123";
// Set permissions
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserEdits = PdfEditSecurity.NoEdit;
pdf.SecuritySettings.AllowUserAnnotations = false;
pdf.SecuritySettings.AllowUserFormData = true;
pdf.SaveAs("protected.pdf");
}
}
using IronPdf;
class Program
{
static void Main()
{
var pdf = PdfDocument.FromFile("document.pdf");
// Configure security settings with clear property names
pdf.SecuritySettings.OwnerPassword = "owner456";
pdf.SecuritySettings.UserPassword = "user123";
// Set permissions
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserEdits = PdfEditSecurity.NoEdit;
pdf.SecuritySettings.AllowUserAnnotations = false;
pdf.SecuritySettings.AllowUserFormData = true;
pdf.SaveAs("protected.pdf");
}
}
Imports IronPdf
Class Program
Shared Sub Main()
Dim pdf = PdfDocument.FromFile("document.pdf")
' Configure security settings with clear property names
pdf.SecuritySettings.OwnerPassword = "owner456"
pdf.SecuritySettings.UserPassword = "user123"
' Set permissions
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights
pdf.SecuritySettings.AllowUserCopyPasteContent = False
pdf.SecuritySettings.AllowUserEdits = PdfEditSecurity.NoEdit
pdf.SecuritySettings.AllowUserAnnotations = False
pdf.SecuritySettings.AllowUserFormData = True
pdf.SaveAs("protected.pdf")
End Sub
End Class
IronPDF'nin SecuritySettings özelliği, konumsal boolean parametreler yerine adlandırılmış, kendini dökümante eden özellikler sağlar.
Kritik Taşıma Notları
Sayfa İndeksleme Dönüşümü
BuGdPicture.NET SDKgeçişindeki en önemli değişikliklerden biri, sayfa indeksleme farkıdır:
// GdPicture.NET SDK:1-indexlipages
for (int i = 1; i <= pdf.GetPageCount(); i++)
{
pdf.SelectPage(i);
// process page
}
// IronPDF: 0-indexed pages (standard .NET)
for (int i = 0; i < pdf.PageCount; i++)
{
var page = pdf.Pages[i];
// process page
}
// GdPicture.NET SDK:1-indexlipages
for (int i = 1; i <= pdf.GetPageCount(); i++)
{
pdf.SelectPage(i);
// process page
}
// IronPDF: 0-indexed pages (standard .NET)
for (int i = 0; i < pdf.PageCount; i++)
{
var page = pdf.Pages[i];
// process page
}
Imports GdPicture
Imports IronPdf
' GdPicture.NET SDK:1-indexed pages
For i As Integer = 1 To pdf.GetPageCount()
pdf.SelectPage(i)
' process page
Next
' IronPDF: 0-indexed pages (standard .NET)
For i As Integer = 0 To pdf.PageCount - 1
Dim page = pdf.Pages(i)
' process page
Next
Durum Kodları ve İstisnalar
Daha ayrıntılı durum kontrolünü standart try-catch ile değiştirin:
// GdPicture.NET SDK
GdPictureStatus status = converter.LoadFromHTMLString(html);
if (status != GdPictureStatus.OK)
{
Console.WriteLine($"Error: {status}");
return;
}
// IronPDF
try
{
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
catch (Exception ex)
{
Console.WriteLine($"Error: {ex.Message}");
}
// GdPicture.NET SDK
GdPictureStatus status = converter.LoadFromHTMLString(html);
if (status != GdPictureStatus.OK)
{
Console.WriteLine($"Error: {status}");
return;
}
// IronPDF
try
{
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
catch (Exception ex)
{
Console.WriteLine($"Error: {ex.Message}");
}
' GdPicture.NET SDK
Dim status As GdPictureStatus = converter.LoadFromHTMLString(html)
If status <> GdPictureStatus.OK Then
Console.WriteLine($"Error: {status}")
Return
End If
' IronPDF
Try
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
Catch ex As Exception
Console.WriteLine($"Error: {ex.Message}")
End Try
Birim Dönüşümü
GdPicture.NET SDK kenar boşlukları için inç kullanır;IronPDF milimetre kullanır:
// GdPicture.NET SDK: 0.5 inches margin
converter.HtmlSetMargins(0.5f, 0.5f, 0.5f, 0.5f);
// IronPDF: 0.5 inches = 12.7 mm
renderer.RenderingOptions.MarginTop = 12.7;
renderer.RenderingOptions.MarginBottom = 12.7;
renderer.RenderingOptions.MarginLeft = 12.7;
renderer.RenderingOptions.MarginRight = 12.7;
// GdPicture.NET SDK: 0.5 inches margin
converter.HtmlSetMargins(0.5f, 0.5f, 0.5f, 0.5f);
// IronPDF: 0.5 inches = 12.7 mm
renderer.RenderingOptions.MarginTop = 12.7;
renderer.RenderingOptions.MarginBottom = 12.7;
renderer.RenderingOptions.MarginLeft = 12.7;
renderer.RenderingOptions.MarginRight = 12.7;
' GdPicture.NET SDK: 0.5 inches margin
converter.HtmlSetMargins(0.5F, 0.5F, 0.5F, 0.5F)
' IronPDF: 0.5 inches = 12.7 mm
renderer.RenderingOptions.MarginTop = 12.7
renderer.RenderingOptions.MarginBottom = 12.7
renderer.RenderingOptions.MarginLeft = 12.7
renderer.RenderingOptions.MarginRight = 12.7
Dönüşüm formülü: millimeters = inches × 25.4
İş Parçacığı Güvenliği
GdPicture.NET SDK, eşzamanlı işlemler için manuel senkronizasyon gerektirir. IronPDF'nin ChromePdfRenderer tasarım gereği iş parçacığı güvenliğindedir, bu da çoklu iş parçacıklı PDF üretimini basitleştirir.
Performans Dikkat Edilecek Hususlar
ChromePdfRenderer'ı Yeniden Kullanın
Optimal performans için, işlendiı tasarımı yineleyin:
// GOOD - Reuse renderer (thread-safe)
public class PdfService
{
private static readonly ChromePdfRenderer _renderer = new ChromePdfRenderer();
public byte[] Generate(string html) => _renderer.RenderHtmlAsPdf(html).BinaryData;
}
// BAD - Creates new instance each time
public byte[] GenerateBad(string html)
{
var renderer = new ChromePdfRenderer(); // Wasteful
return renderer.RenderHtmlAsPdf(html).BinaryData;
}
// GOOD - Reuse renderer (thread-safe)
public class PdfService
{
private static readonly ChromePdfRenderer _renderer = new ChromePdfRenderer();
public byte[] Generate(string html) => _renderer.RenderHtmlAsPdf(html).BinaryData;
}
// BAD - Creates new instance each time
public byte[] GenerateBad(string html)
{
var renderer = new ChromePdfRenderer(); // Wasteful
return renderer.RenderHtmlAsPdf(html).BinaryData;
}
Imports System
Public Class PdfService
Private Shared ReadOnly _renderer As New ChromePdfRenderer()
Public Function Generate(html As String) As Byte()
Return _renderer.RenderHtmlAsPdf(html).BinaryData
End Function
' BAD - Creates new instance each time
Public Function GenerateBad(html As String) As Byte()
Dim renderer As New ChromePdfRenderer() ' Wasteful
Return renderer.RenderHtmlAsPdf(html).BinaryData
End Function
End Class
Kaynakların Doğru Şekilde Atılması
// Use using statements for automatic cleanup
using (var pdf = PdfDocument.FromFile("large.pdf"))
{
string text = pdf.ExtractAllText();
} // pdf is disposed automatically
// Use using statements for automatic cleanup
using (var pdf = PdfDocument.FromFile("large.pdf"))
{
string text = pdf.ExtractAllText();
} // pdf is disposed automatically
Imports PdfDocument
' Use Using blocks for automatic cleanup
Using pdf = PdfDocument.FromFile("large.pdf")
Dim text As String = pdf.ExtractAllText()
End Using ' pdf is disposed automatically
Geçiş Kontrol Listesi
Öncesi-Geçiş
- Kod tabanındaki tümGdPicture.NET SDKkullanımını envanterleyin
- Hangi özelliklerin gerçekten kullanıldığını belirleyin (PDF vsOCRvs barkod)
- OCR/barkod özelliklerine ihtiyaç olup olmadığını belirleyin (IronOCR/IronBarcode dikkate alın)
- Mevcut lisanslamayı inceleyin ve IronPDF fiyatlarıyla karşılaştırın -IronPDF lisans anahtarını edinin
- Sürüm kontrolünde geçiş dalı oluşturun
Kod Geçişi
-GdPicture.NET SDKNuGet paketlerini kaldırın: dotnet remove package GdPicture.NET
-IronPDF NuGet paketini yükleyin: dotnet add package IronPdf
- İsim alanı ithalatlarını güncelleyin (
GdPicture14→IronPdf) LicenseManager.RegisterKEY()ileIronPdf.License.LicenseKeydeğiştirin- Durum kodu kontrollerini try-catch bloklarına dönüştürün
- Sayfa indekslemeyi güncelleyin (1-indeksli → 0-indeksli)
GdPicturePDFilePdfDocumentdeğiştirinGdPictureDocumentConverterileChromePdfRendererdeğiştirin- Koordinat tabanlı metni HTML damgalamasına dönüştürün
- Birim dönüşümlerini güncelleyin (inç → milimetre)
Test Etme
- Tüm PDF oluşturma yollarını birim testi yapın
- HTML render kalitesinin eşleştiğinden veya aştığından emin olun
- Tüm güvenlik/şifreleme senaryolarını test edin
- Form doldurma işlevselliğini doğrulayın
- Birleştirme/bölme işlemlerini test edin
- Filigran görünümünü doğrulayın
- Kritik yolları performans benchmark yapın
Geçiş Sonrası
-GdPicture.NET SDKlisans dosyalarını/anahtarlarını kaldırın
- Belgeleri güncelleyin
- TakımıIronPDF API modelleri hakkında eğitin
- Herhangi bir sorunu izlemek için üretimi takip edin

