Nutrient.io'dan IronPDF'e C# ile Nasıl Geçilir
Nutrient'ten (önceden PSPDFKit) IronPDF'ye geçmek, .NET PDF iş akışınızı geniş bir görüntüleme ve PDF araç setinden odaklanmış bir PDF kütüphanesine taşıyarak basitleştirir. Nutrient'in sunucu tarafı .NET teklifi GdPicture.NET — ORPALIS'ten satın alınan ve 'Nutrient .NET SDK' olarak yeniden konumlandırılan toolkit — GdPicture NuGet paketi ve GdPicture14 ad alanında gönderilir. Bu kılavuz, prosedürel, çok amaçlı bir araç setini daha küçük bir yüzey alanına sahip yalnızca PDF kütüphanesiyle değiştiren adım adım bir geçiş yolunu kapsar.
Nutrient'ten IronPDF'ye Neden Geçilmeli
Araç Seti Yüzey Alanı Problemi
Nutrient (eski adıyla PSPDFKit, 2024-10-23'te yeniden markalandı) çok ürünlü bir aile satar: Belge Motoru (Docker mikroservis), Web SDK, mobil SDK'lar ve GdPicture altında bir sunucu tarafı .NET SDK. Araç setinin geri kalanını kullanmak istemeyen ekipler için yüzey alanı birkaç somut şekilde ortaya çıkar:
-
Geniş araç seti kapsamı: .NET SDK, PDF, OCR, barkodlar, TWAIN tarama, görüntü işleme ve 100'den fazla dosya formatında dönüştürmeyi kapsar. Bu genişlik gerekiyorsa faydalıdır, ancak sadece PDF içeren bir projeye ihtiyacınız yoksa daha fazla yüzey alanı gerektirir.
-
Satış odaklı fiyatlandırma:
nutrient.io/sdk/pricingsayfası, geliştirici başına ücretleri yayınlamaktansa bir iletişim formuna yönlendirir, bu da küçük takımlar için yan yana maliyet karşılaştırmasını zorlaştırır. -
Marka ve paket değişimi: PSPDFKit → Nutrient (2024-10-23), GdPicture satın almasıyla birlikte, eski koddaki üç ismi takip etmelisiniz. .NET SDK, hala
GdPictureNuGet paketi veGdPicture14ad alanı olarak gönderilir, ancak sınıf adlarıGdPicturePDFveGdPictureDocumentConverter'dir ve 'Nutrient' veya 'PSPDFKit' markasıyla eşleşmez. -
HTML'den PDF'e dış tarayıcı bağımlılığı: .NET SDK'nın HTML oluşturucusu, sistemde yüklü bir Chrome veya Edge'e dayanır (veya
SetWebBrowserPathile sağladığınız taşınabilir bir yola).IronPDF kendi gömülü Chromium ile gönderilir. - Prosedürel PDF API: Filigranlar
SetFillAlpha,DrawTextBoxve OCG katman işaretleyicilerini oluşturur; başlıklar ve altbilgiler bir döngüde sayfa başına çizilir. İlkellerden yaygın PDF işlemleri oluşturmak her görev için daha fazla kod anlamına gelir.
Nutrient .NET SDK ve IronPDF Karşılaştırması
| Aspekt | Nutrient .NET SDK (GdPicture) | IronPDF |
|---|---|---|
| Kapsam | PDF + OCR + barkod + tarama + görüntüleme | PDF kütüphanesi |
| Fiyatlandırma | Satış liderliğinde (teklif için iletişim) | Şeffaf, yayımlanmış |
| NuGet paketi | GdPicture |
IronPdf |
| Kök isim alanı | GdPicture14 |
IronPdf |
| API stili | Çoğunlukla senkron, prosedürel çizim çağrıları | Asenkron seçenekle senkron, akıcı |
| HTML işleme | Sistem Chrome / Edge gerektirir | Gömülü Chromium |
| Sayfa indeksleme | 1 tabanlı | 0 tabanlı |
| Hedef kullanıcılar | İmgeleme + tarama + PDF'yi bir araç kitinde gerektiren ekipler | Sadece PDF'ye ihtiyaç duyan ekipler |
Yalnızca PDF'ye ihtiyaç duyan modern .NET kullanıcıları için, IronPDF, ek imgeleme / tarama / OCR katmanları olmadan temiz bir şekilde entegre olan daha küçük, PDF odaklı bir temel sağlar.
Başlamadan Önce
Ön Koşullar
- .NET Ortamı: .NET Framework 4.6.2+ veya .NET Core 3.1+ / .NET 5/6/7/8/9+
- NuGet Erişimi: NuGet paketlerini yükleyebilme
- IronPDF Lisansı: Lisans anahtarınızı ironpdf.com adresinden edinin
NuGet Paket Değişiklikleri
# Remove theNutrient .NET SDK (GdPicture)and any legacy PSPDFKit-branded packages
dotnet remove package GdPicture
dotnet remove package GdPicture.WPF
dotnet remove package GdPicture.WinForms
dotnet remove package PSPDFKit.NET
# Install IronPDF
dotnet add package IronPdf
# Remove theNutrient .NET SDK (GdPicture)and any legacy PSPDFKit-branded packages
dotnet remove package GdPicture
dotnet remove package GdPicture.WPF
dotnet remove package GdPicture.WinForms
dotnet remove package PSPDFKit.NET
# Install IronPDF
dotnet add package IronPdf
Mevcut Nutrient .NET SDK, GdPicture NuGet ID altında gönderilir (en son 14.x, sahibi ORPALIS — bir Nutrient yan kuruluşu). Eski PSPDFKit markalı PSPDFKit.NET paketi sona erdi; mevcutsa kaldırın.
Lisans Yapılandırması
// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
' Add at application startup (Program.vb or Startup.vb)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
Nutrient .NET SDK Kullanımını Belirleyin
# Find GdPicture / Nutrient / PSPDFKit usage
grep -rE "GdPicture14|GdPicturePDF|GdPictureDocumentConverter|PSPDFKit|Nutrient" --include="*.cs" .
# Find GdPicture / Nutrient / PSPDFKit usage
grep -rE "GdPicture14|GdPicturePDF|GdPictureDocumentConverter|PSPDFKit|Nutrient" --include="*.cs" .
Tam API Referansı
Başlatma Eşlemeleri
| Nutrient .NET SDK (GdPicture) | IronPDF |
|---|---|
new GdPicturePDF() |
new PdfDocument(...) / PdfDocument.FromFile(...) |
new GdPictureDocumentConverter() |
new ChromePdfRenderer() |
pdf.Dispose() (IDisposable) |
pdf.Dispose() (IDisposable) |
Belge Yükleme Eşlemeleri
| Nutrient .NET SDK (GdPicture) | IronPDF |
|---|---|
pdf.LoadFromFile(path) |
PdfDocument.FromFile(path) |
pdf.LoadFromStream(stream) |
PdfDocument.FromStream(stream) |
pdf.LoadFromByteArray(bytes) |
new PdfDocument(bytes) / PdfDocument.FromBinaryData(bytes) |
PDF Oluşturma Eşlemeleri
| Nutrient .NET SDK (GdPicture) | IronPDF |
|---|---|
HTML dizisi: geçici dosyaya yazın, ardından converter.LoadFromFile(path, DocumentFormat.DocumentFormatHTML) + SaveAsPDF(out) |
renderer.RenderHtmlAsPdf(html) |
converter.LoadFromHttp(url) + SaveAsPDF(out) |
renderer.RenderUrlAsPdf(url) |
converter.LoadFromFile(htmlPath, DocumentFormat.DocumentFormatHTML) + SaveAsPDF(out) |
renderer.RenderHtmlFileAsPdf(path) |
Belge İşlemleri Eşlemeleri
| Nutrient .NET SDK (GdPicture) | IronPDF |
|---|---|
converter.CombineToPDF(paths, out, PdfConformance.PDF) |
PdfDocument.Merge(pdfs) |
pdf.GetPageCount() |
pdf.PageCount |
pdf.SaveToFile(path) |
pdf.SaveAs(path) |
pdf.SaveToByteArray(out bytes) |
pdf.BinaryData |
Su Damgaları Eşlemeleri
| Nutrient .NET SDK (GdPicture) | IronPDF |
|---|---|
Sayfa başına pdf.SetFillAlpha(...) + pdf.DrawTextBox(...) |
pdf.ApplyWatermark(html, rotation, vAlign, hAlign) |
pdf.AddStandardFont(...) + çizim çağrıları |
Su damgası dizgisinde HTML/CSS |
SetFillAlpha(128) (0–255 byte ölçeği) |
Filigran Opacity 0–100 (int) veya CSS opacity |
pdf.SetTextSize(48) |
CSS font-size: 48px |
Kod Göç Örnekleri
Örnek 1: HTML'den PDF'ye Dönüştürme
Before (Nutrient .NET SDK / GdPicture):
// NuGet: Install-Package GdPicture
using GdPicture14;
using System.IO;
class Program
{
static void Main()
{
var htmlContent = "<html><body><h1>Hello World</h1></body></html>";
// GdPicture's HTML loader is file-based, so stage the string to disk first.
File.WriteAllText("input.html", htmlContent);
using var converter = new GdPictureDocumentConverter();
converter.LoadFromFile("input.html", DocumentFormat.DocumentFormatHTML);
converter.SaveAsPDF("output.pdf");
}
}
// NuGet: Install-Package GdPicture
using GdPicture14;
using System.IO;
class Program
{
static void Main()
{
var htmlContent = "<html><body><h1>Hello World</h1></body></html>";
// GdPicture's HTML loader is file-based, so stage the string to disk first.
File.WriteAllText("input.html", htmlContent);
using var converter = new GdPictureDocumentConverter();
converter.LoadFromFile("input.html", DocumentFormat.DocumentFormatHTML);
converter.SaveAsPDF("output.pdf");
}
}
Imports GdPicture14
Imports System.IO
Class Program
Shared Sub Main()
Dim htmlContent As String = "<html><body><h1>Hello World</h1></body></html>"
' GdPicture's HTML loader is file-based, so stage the string to disk first.
File.WriteAllText("input.html", htmlContent)
Using converter As New GdPictureDocumentConverter()
converter.LoadFromFile("input.html", DocumentFormat.DocumentFormatHTML)
converter.SaveAsPDF("output.pdf")
End Using
End Sub
End Class
Sonrası (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var htmlContent = "<html><body><h1>Hello World</h1></body></html>";
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("output.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var htmlContent = "<html><body><h1>Hello World</h1></body></html>";
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("output.pdf");
}
}
Imports IronPdf
Class Program
Shared Sub Main()
Dim htmlContent As String = "<html><body><h1>Hello World</h1></body></html>"
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
pdf.SaveAs("output.pdf")
End Sub
End Class
GdPicture yaklaşımı birkaç ek adım gerektirir: HTML yükleyici dosya/URL tabanlıdır, bu nedenle hafıza içi HTML dizisi önce diske yerleştirilmelidir, ardından converter.LoadFromFile(...) DocumentFormat.DocumentFormatHTML ile çağrılır ve SaveAsPDF ile takip edilir. HTML oluşturma, sistemde yüklü bir Chrome veya Edge'e dayanır (veya SetWebBrowserPath ile sağladığınız taşınabilir bir yol).
IronPDF, HTML dizgisini doğrudan kabul eder. ChromePdfRenderer oluşturun, RenderHtmlAsPdf() çağrısını yapın ve SaveAs() ile kaydedin. Geçici dosya yok, ana bilgisayar tarayıcı bağımlılığı yok —IronPDF kendi gömülü Chromium ile gönderilir. HTML'den PDF'ye belgelemeyi ek işleme seçenekleri için inceleyin.
Örnek 2: Birden Fazla PDF'yi Birleştirme
Before (Nutrient .NET SDK / GdPicture):
// NuGet: Install-Package GdPicture
using GdPicture14;
using System.Collections.Generic;
class Program
{
static void Main()
{
IEnumerable<string> sourceFiles = new List<string>
{
"document1.pdf",
"document2.pdf"
};
using var converter = new GdPictureDocumentConverter();
converter.CombineToPDF(sourceFiles, "merged.pdf", PdfConformance.PDF);
}
}
// NuGet: Install-Package GdPicture
using GdPicture14;
using System.Collections.Generic;
class Program
{
static void Main()
{
IEnumerable<string> sourceFiles = new List<string>
{
"document1.pdf",
"document2.pdf"
};
using var converter = new GdPictureDocumentConverter();
converter.CombineToPDF(sourceFiles, "merged.pdf", PdfConformance.PDF);
}
}
Imports GdPicture14
Imports System.Collections.Generic
Class Program
Shared Sub Main()
Dim sourceFiles As IEnumerable(Of String) = New List(Of String) From {
"document1.pdf",
"document2.pdf"
}
Using converter As New GdPictureDocumentConverter()
converter.CombineToPDF(sourceFiles, "merged.pdf", PdfConformance.PDF)
End Using
End Sub
End Class
Sonrası (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
}
}
Imports IronPdf
Class Program
Shared Sub Main()
Dim pdf1 = PdfDocument.FromFile("document1.pdf")
Dim pdf2 = PdfDocument.FromFile("document2.pdf")
Dim merged = PdfDocument.Merge(pdf1, pdf2)
merged.SaveAs("merged.pdf")
End Sub
End Class
GdPicture bir yol tabanlı IEnumerable<string> converter.CombineToPDF aracılığıyla birleştirir, çıktı uygunluk seviyesini belirleyen bir PdfConformance değeri ile.
IronPDF, belge düzeyinde çalışır: her PDF'i PdfDocument.FromFile() ile yükleyin, sabit PdfDocument.Merge() yöntemi ile birleştirin ve kaydedin. Belgeler doğrudan veya bir enumerable olarak iletilebilir. Daha fazla bilgi edinin PDF birleştirme ve bölme.
Örnek 3: Filigran Ekleme
Before (Nutrient .NET SDK / GdPicture):
// NuGet: Install-Package GdPicture
using GdPicture14;
class Program
{
static void Main()
{
using var pdf = new GdPicturePDF();
pdf.LoadFromFile("document.pdf");
pdf.SetMeasurementUnit(PdfMeasurementUnit.PdfMeasurementUnitPoint);
var font = pdf.AddStandardFont(PdfStandardFont.PdfStandardFontHelveticaBold);
int pageCount = pdf.GetPageCount();
for (int i = 1; i <= pageCount; i++)
{
pdf.SelectPage(i);
pdf.SetFillAlpha(128); // ~50% (0..255)
pdf.SetTextSize(48);
pdf.SetOriginRotationInDegrees(45);
pdf.DrawTextBox(font, 100, 300, 500, 400, "CONFIDENTIAL",
PdfHorizontalAlignment.PdfHorizontalAlignmentCenter,
PdfVerticalAlignment.PdfVerticalAlignmentMiddle);
}
pdf.SaveToFile("watermarked.pdf");
}
}
// NuGet: Install-Package GdPicture
using GdPicture14;
class Program
{
static void Main()
{
using var pdf = new GdPicturePDF();
pdf.LoadFromFile("document.pdf");
pdf.SetMeasurementUnit(PdfMeasurementUnit.PdfMeasurementUnitPoint);
var font = pdf.AddStandardFont(PdfStandardFont.PdfStandardFontHelveticaBold);
int pageCount = pdf.GetPageCount();
for (int i = 1; i <= pageCount; i++)
{
pdf.SelectPage(i);
pdf.SetFillAlpha(128); // ~50% (0..255)
pdf.SetTextSize(48);
pdf.SetOriginRotationInDegrees(45);
pdf.DrawTextBox(font, 100, 300, 500, 400, "CONFIDENTIAL",
PdfHorizontalAlignment.PdfHorizontalAlignmentCenter,
PdfVerticalAlignment.PdfVerticalAlignmentMiddle);
}
pdf.SaveToFile("watermarked.pdf");
}
}
Imports GdPicture14
Class Program
Shared Sub Main()
Using pdf As New GdPicturePDF()
pdf.LoadFromFile("document.pdf")
pdf.SetMeasurementUnit(PdfMeasurementUnit.PdfMeasurementUnitPoint)
Dim font = pdf.AddStandardFont(PdfStandardFont.PdfStandardFontHelveticaBold)
Dim pageCount As Integer = pdf.GetPageCount()
For i As Integer = 1 To pageCount
pdf.SelectPage(i)
pdf.SetFillAlpha(128) ' ~50% (0..255)
pdf.SetTextSize(48)
pdf.SetOriginRotationInDegrees(45)
pdf.DrawTextBox(font, 100, 300, 500, 400, "CONFIDENTIAL", PdfHorizontalAlignment.PdfHorizontalAlignmentCenter, PdfVerticalAlignment.PdfVerticalAlignmentMiddle)
Next
pdf.SaveToFile("watermarked.pdf")
End Using
End Sub
End Class
Sonrası (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Editing;
class Program
{
static void Main()
{
var pdf = PdfDocument.FromFile("document.pdf");
pdf.ApplyWatermark("<h1 style='color:gray;opacity:0.5;'>CONFIDENTIAL</h1>",
45,
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("document.pdf");
pdf.ApplyWatermark("<h1 style='color:gray;opacity:0.5;'>CONFIDENTIAL</h1>",
45,
VerticalAlignment.Middle,
HorizontalAlignment.Center);
pdf.SaveAs("watermarked.pdf");
}
}
Imports IronPdf
Imports IronPdf.Editing
Class Program
Shared Sub Main()
Dim pdf = PdfDocument.FromFile("document.pdf")
pdf.ApplyWatermark("<h1 style='color:gray;opacity:0.5;'>CONFIDENTIAL</h1>",
45,
VerticalAlignment.Middle,
HorizontalAlignment.Center)
pdf.SaveAs("watermarked.pdf")
End Sub
End Class
Bu örnek temel bir mimari farkı vurgular. GdPicture bir prosedürel çizim çağrısı yaklaşımı kullanır: standart bir yazı tipi ekleyin, ardından her sayfada SelectPage, SetFillAlpha, SetTextSize, SetOriginRotationInDegrees ve DrawTextBox çağrılarından geçerek yineleyin. Alpha, 0–255 bayt seviyesi ölçeğindedir, dönüş, bir grafik durumu özelliği olarak ayarlanır ve konumlama açık koordinatlarla yapılır.
IronPDF bir HTML tabanlı yaklaşım kullanır: ApplyWatermark() yöntemi, tüm sayfalara tek bir çağrıda CSS stiline sahip bir HTML dizisi alır ve uygular. Görünümü, çeşitli grafik çağrılar yerine tanıdık CSS özellikleri (color, opacity, font-size) üzerinden kontrol edersiniz. Bu yaklaşım ayrıca aynı dizgide daha zengin içerikleri destekler — gradyanlar, görüntüler ve daha karmaşık düzenler. Filigran belgelerini ileri düzey örnekler için inceleyin.
Kritik Taşıma Notları
HTML Giriş Yüzeyi
GdPicture'ın HTML yükleyicisi dosya/URL tabanlıdır; IronPDF, HTML dizgilerini doğrudan kabul eder:
// Nutrient .NET SDK (string -> file -> PDF):
File.WriteAllText("input.html", html);
converter.LoadFromFile("input.html", DocumentFormat.DocumentFormatHTML);
converter.SaveAsPDF("output.pdf");
//IronPDF(string -> PDF):
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
// Nutrient .NET SDK (string -> file -> PDF):
File.WriteAllText("input.html", html);
converter.LoadFromFile("input.html", DocumentFormat.DocumentFormatHTML);
converter.SaveAsPDF("output.pdf");
//IronPDF(string -> PDF):
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
' Nutrient .NET SDK (string -> file -> PDF):
File.WriteAllText("input.html", html)
converter.LoadFromFile("input.html", DocumentFormat.DocumentFormatHTML)
converter.SaveAsPDF("output.pdf")
' IronPDF(string -> PDF):
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
Eğer async işlemlerine ihtiyacınız olursa,IronPDFRenderHtmlAsPdfAsync() gibi async varyantları sağlar.
Harici Tarayıcı Bağımlılığı
GdPicture'ın HTML oluşturucusu, sistemde yüklü bir Chrome veya Edge'e dayanır (veya SetWebBrowserPath ile ayarladığınız bir taşınabilir yoluna dayanır). IronPDF, kendi gömülü Chromium ile gönderilir:
// Nutrient .NET SDK: optionally point to a portable Chrome
converter.SetWebBrowserPath(@"C:\Tools\chrome\chrome.exe");
// IronPDF: nothing to configure
var pdf = renderer.RenderHtmlAsPdf(html);
// Nutrient .NET SDK: optionally point to a portable Chrome
converter.SetWebBrowserPath(@"C:\Tools\chrome\chrome.exe");
// IronPDF: nothing to configure
var pdf = renderer.RenderHtmlAsPdf(html);
' Nutrient .NET SDK: optionally point to a portable Chrome
converter.SetWebBrowserPath("C:\Tools\chrome\chrome.exe")
' IronPDF: nothing to configure
Dim pdf = renderer.RenderHtmlAsPdf(html)
Konfigürasyon Deseni Değişimi
GdPicture layout ayarlarını dönüştürücüde (HTML sayfa genişliği/yüksekliği inç cinsinden, bireysel kenar boşlukları) özelliğe göre değerler olarak ortaya çıkarır. IronPDF, onları adlandırılmış kağıt boyutları ile RenderingOptions çantası üzerine gruplandırır:
// Nutrient .NET SDK: properties on the converter (inches)
using var converter = new GdPictureDocumentConverter();
converter.HtmlPageWidth = 8.27f; // A4 width (inches)
converter.HtmlPageHeight = 11.69f; // A4 height (inches)
converter.HtmlMarginTop = 0.78f;
converter.HtmlMarginBottom = 0.78f;
converter.HtmlMarginLeft = 0.78f;
converter.HtmlMarginRight = 0.78f;
// IronPDF: properties on RenderingOptions (millimetres)
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 20;
renderer.RenderingOptions.MarginBottom = 20;
renderer.RenderingOptions.MarginLeft = 20;
renderer.RenderingOptions.MarginRight = 20;
var pdf = renderer.RenderHtmlAsPdf(html);
// Nutrient .NET SDK: properties on the converter (inches)
using var converter = new GdPictureDocumentConverter();
converter.HtmlPageWidth = 8.27f; // A4 width (inches)
converter.HtmlPageHeight = 11.69f; // A4 height (inches)
converter.HtmlMarginTop = 0.78f;
converter.HtmlMarginBottom = 0.78f;
converter.HtmlMarginLeft = 0.78f;
converter.HtmlMarginRight = 0.78f;
// IronPDF: properties on RenderingOptions (millimetres)
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 20;
renderer.RenderingOptions.MarginBottom = 20;
renderer.RenderingOptions.MarginLeft = 20;
renderer.RenderingOptions.MarginRight = 20;
var pdf = renderer.RenderHtmlAsPdf(html);
Imports GdPicture14
Imports IronPdf
' Nutrient .NET SDK: properties on the converter (inches)
Using converter As New GdPictureDocumentConverter()
converter.HtmlPageWidth = 8.27F ' A4 width (inches)
converter.HtmlPageHeight = 11.69F ' A4 height (inches)
converter.HtmlMarginTop = 0.78F
converter.HtmlMarginBottom = 0.78F
converter.HtmlMarginLeft = 0.78F
converter.HtmlMarginRight = 0.78F
End Using
' IronPDF: properties on RenderingOptions (millimetres)
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
renderer.RenderingOptions.MarginTop = 20
renderer.RenderingOptions.MarginBottom = 20
renderer.RenderingOptions.MarginLeft = 20
renderer.RenderingOptions.MarginRight = 20
Dim pdf = renderer.RenderHtmlAsPdf(html)
Prosedürel Su Damgalarından HTML Su Damgalarına
İlkel çizim çağrılarını tek bir HTML/CSS dizgisi ile değiştirin:
// Nutrient .NET SDK: SetFillAlpha + SetTextSize + DrawTextBox in a per-page loop
pdf.SetFillAlpha(128);
pdf.SetTextSize(48);
pdf.SetOriginRotationInDegrees(45);
pdf.DrawTextBox(font, 100, 300, 500, 400, "CONFIDENTIAL",
PdfHorizontalAlignment.PdfHorizontalAlignmentCenter,
PdfVerticalAlignment.PdfVerticalAlignmentMiddle);
// IronPDF: one HTML/CSS string
pdf.ApplyWatermark("<h1 style='opacity:0.5; font-size:48px;'>CONFIDENTIAL</h1>",
45, VerticalAlignment.Middle, HorizontalAlignment.Center);
// Nutrient .NET SDK: SetFillAlpha + SetTextSize + DrawTextBox in a per-page loop
pdf.SetFillAlpha(128);
pdf.SetTextSize(48);
pdf.SetOriginRotationInDegrees(45);
pdf.DrawTextBox(font, 100, 300, 500, 400, "CONFIDENTIAL",
PdfHorizontalAlignment.PdfHorizontalAlignmentCenter,
PdfVerticalAlignment.PdfVerticalAlignmentMiddle);
// IronPDF: one HTML/CSS string
pdf.ApplyWatermark("<h1 style='opacity:0.5; font-size:48px;'>CONFIDENTIAL</h1>",
45, VerticalAlignment.Middle, HorizontalAlignment.Center);
' Nutrient .NET SDK: SetFillAlpha + SetTextSize + DrawTextBox in a per-page loop
pdf.SetFillAlpha(128)
pdf.SetTextSize(48)
pdf.SetOriginRotationInDegrees(45)
pdf.DrawTextBox(font, 100, 300, 500, 400, "CONFIDENTIAL", PdfHorizontalAlignment.PdfHorizontalAlignmentCenter, PdfVerticalAlignment.PdfVerticalAlignmentMiddle)
' IronPDF: one HTML/CSS string
pdf.ApplyWatermark("<h1 style='opacity:0.5; font-size:48px;'>CONFIDENTIAL</h1>", 45, VerticalAlignment.Middle, HorizontalAlignment.Center)
Sayfa Numarası İşleme
GdPicture'ın, birinci sınıf başlık/altbilgi modeli yoktur — sayfa numaraları bir döngüde her sayfada çizilir. IronPDF, yerleşik {page} / {total-pages} yer tutucularını sunar:
// Nutrient .NET SDK: per-page DrawText loop (1-based)
for (int i = 1; i <= pdf.GetPageCount(); i++)
{
pdf.SelectPage(i);
pdf.DrawText(font, x, y, $"Page {i} of {pdf.GetPageCount()}");
}
// IronPDF: built-in placeholders
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
HtmlFragment = "Page {page} of {total-pages}"
};
// Nutrient .NET SDK: per-page DrawText loop (1-based)
for (int i = 1; i <= pdf.GetPageCount(); i++)
{
pdf.SelectPage(i);
pdf.DrawText(font, x, y, $"Page {i} of {pdf.GetPageCount()}");
}
// IronPDF: built-in placeholders
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
HtmlFragment = "Page {page} of {total-pages}"
};
' Nutrient .NET SDK: per-page DrawText loop (1-based)
For i As Integer = 1 To pdf.GetPageCount()
pdf.SelectPage(i)
pdf.DrawText(font, x, y, $"Page {i} of {pdf.GetPageCount()}")
Next
' IronPDF: built-in placeholders
renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter With {
.HtmlFragment = "Page {page} of {total-pages}"
}
Sayfa İndeksleme
GdPicture 1-tabanlı (SelectPage(1) ilk sayfadır).IronPDFpdf.Pages ve pdf.RemovePages(int) 0-tabanlıdır. Port etmeye çalışırken en yaygın hata sınırıdır:
// Nutrient .NET SDK (1-based):
pdf.SelectPage(1);
pdf.DeletePage();
//IronPDF(0-based):
pdf.RemovePages(0);
// Nutrient .NET SDK (1-based):
pdf.SelectPage(1);
pdf.DeletePage();
//IronPDF(0-based):
pdf.RemovePages(0);
' Nutrient .NET SDK (1-based):
pdf.SelectPage(1)
pdf.DeletePage()
' IronPDF(0-based):
pdf.RemovePages(0)
Hata Ayıklama
Sorun 1: GdPictureDocumentConverter Bulunamadı
Problem: GdPictureDocumentConverter sınıfı IronPDF'de mevcut değil.
Çözüm: HTML/URL → PDF için ChromePdfRenderer kullanın:
// Nutrient .NET SDK
using var converter = new GdPictureDocumentConverter();
// IronPDF
var renderer = new ChromePdfRenderer();
// Nutrient .NET SDK
using var converter = new GdPictureDocumentConverter();
// IronPDF
var renderer = new ChromePdfRenderer();
Imports GdPicture14
Imports IronPdf
' Nutrient .NET SDK
Using converter As New GdPictureDocumentConverter()
' Your code here
End Using
' IronPDF
Dim renderer As New ChromePdfRenderer()
Sorun 2: GdPicturePDF Bulunamadı
Problem: GdPicturePDF sınıfı IronPDF'de mevcut değil.
Çözüm: PdfDocument kullanın:
// Nutrient .NET SDK
using var pdf = new GdPicturePDF();
pdf.LoadFromFile("input.pdf");
// IronPDF
var pdf = PdfDocument.FromFile("input.pdf");
// Nutrient .NET SDK
using var pdf = new GdPicturePDF();
pdf.LoadFromFile("input.pdf");
// IronPDF
var pdf = PdfDocument.FromFile("input.pdf");
Imports GdPicture14
Imports IronPdf
' Nutrient .NET SDK
Using pdf As New GdPicturePDF()
pdf.LoadFromFile("input.pdf")
End Using
' IronPDF
Dim pdfDocument = PdfDocument.FromFile("input.pdf")
Sorun 3: DrawTextBox / SetFillAlpha Bulunamadı
Problem: İlkel çizim çağrıları IronPDF'de yok.
Çözüm: HTML tabanlı filigranları kullanın:
// Nutrient .NET SDK
pdf.SetFillAlpha(128);
pdf.DrawTextBox(font, 100, 300, 500, 400, "DRAFT",
PdfHorizontalAlignment.PdfHorizontalAlignmentCenter,
PdfVerticalAlignment.PdfVerticalAlignmentMiddle);
// IronPDF
pdf.ApplyWatermark("<div style='opacity:0.5;'>DRAFT</div>",
45, VerticalAlignment.Middle, HorizontalAlignment.Center);
// Nutrient .NET SDK
pdf.SetFillAlpha(128);
pdf.DrawTextBox(font, 100, 300, 500, 400, "DRAFT",
PdfHorizontalAlignment.PdfHorizontalAlignmentCenter,
PdfVerticalAlignment.PdfVerticalAlignmentMiddle);
// IronPDF
pdf.ApplyWatermark("<div style='opacity:0.5;'>DRAFT</div>",
45, VerticalAlignment.Middle, HorizontalAlignment.Center);
' Nutrient .NET SDK
pdf.SetFillAlpha(128)
pdf.DrawTextBox(font, 100, 300, 500, 400, "DRAFT", PdfHorizontalAlignment.PdfHorizontalAlignmentCenter, PdfVerticalAlignment.PdfVerticalAlignmentMiddle)
' IronPDF
pdf.ApplyWatermark("<div style='opacity:0.5;'>DRAFT</div>", 45, VerticalAlignment.Middle, HorizontalAlignment.Center)
Mesaj 4: CombineToPDF Bulunamadı
Sorun: Yol tabanlı birleştirme metodu yok.
Çözüm: Her PDF'i PdfDocument olarak yükleyin ve sabit PdfDocument.Merge() kullanın:
// Nutrient .NET SDK
converter.CombineToPDF(paths, "merged.pdf", PdfConformance.PDF);
// IronPDF
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
// Nutrient .NET SDK
converter.CombineToPDF(paths, "merged.pdf", PdfConformance.PDF);
// IronPDF
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
' Nutrient .NET SDK
converter.CombineToPDF(paths, "merged.pdf", PdfConformance.PDF)
' IronPDF
Dim merged = PdfDocument.Merge(pdf1, pdf2)
merged.SaveAs("merged.pdf")
Mesaj 5: Yanıltıcı Sayfa İndeksi
Sorun: GdPicture, 1 tabanlı sayfa indeksleri kullanıyor; IronPDF, 0 tabanlı kullanır. SelectPage(1) 'den pdf.Pages[1] 'e doğrudan taşıma ilk sayfayı atlar.
Çözüm: Sayfa indislerini taşırken bir çıkarın:
// Nutrient .NET SDK (first page)
pdf.SelectPage(1);
//IronPDF(first page)
var firstPage = pdf.Pages[0];
// Nutrient .NET SDK (first page)
pdf.SelectPage(1);
//IronPDF(first page)
var firstPage = pdf.Pages[0];
' Nutrient .NET SDK (first page)
pdf.SelectPage(1)
' IronPDF(first page)
Dim firstPage = pdf.Pages(0)
Geçiş Kontrol Listesi
Öncesi-Geçiş
- Kod tabanında GdPicture / PSPDFKit / Nutrient kullanımlarının tümünü envanterleyin
- Mevcut GdPicture kodunda 1 tabanlı ve 0 tabanlı sayfa indekslemesini not edin
GdPictureDocumentConverterüzerinde liste yapılandırması (HTML sayfa boyutları, kenar boşlukları) ayarlayın- Filigranlar ve başlıklar için prosedürel çizim belirleyin (
SetFillAlpha,DrawTextBox) - Dizin tabanlı erişim kullanan form alanı kodunu inceleyin (
GetFormFieldName(i)) -IronPDF lisans anahtarını edinin
Paket Değişiklikleri
GdPictureNuGet paketini kaldırın (ve mevcutsaGdPicture.WPF/GdPicture.WinForms)- Mümkünse eski
PSPDFKit.NETpaketini kaldırın IronPdfNuGet paketini yükleyin:dotnet add package IronPdf- Ad alanı ithalatlarını güncelleyin (
using GdPicture14;→using IronPdf;)
Kod Değişiklikleri
Başlangıçta lisans anahtarı yapılandırmasını ekleyin
- HTML/URL → PDF için
new GdPictureDocumentConverter()yerinenew ChromePdfRenderer()kullanın new GdPicturePDF()+LoadFromFileyerinePdfDocument.FromFile()kullanınconverter.CombineToPDF(paths, ...)yerinePdfDocument.Merge()kullanın- Prosedürel filigran çizim çağrılarını
pdf.ApplyWatermark(html, ...)'e dönüştürün - Dönüştürücü özelliklerini
RenderingOptions(adlandırılmış kağıt boyutları, mm kenar boşlukları) ile değiştirin - Başlıkları/altbilgileri
HtmlHeaderFooterile{page}/{total-pages}jetonları ile güncelleyin - 1 tabanlı sayfa indislerini her yerde 0 tabanlı hale getirin
Geçiş Sonrası
- GdPicture için varsa sistem Chrome / Edge bağımlılığını dağıtım görüntülerinden kaldırın
- PDF çıkışını karşılaştırmak için regresyon testlerini çalıştırın
- Sayfa numaraları olan başlıkları/altbilgileri doğrulayın
- Filigran işleme test edin
- CI/CD hattını güncelleyin

