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

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:

  1. 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.

  2. Satış odaklı fiyatlandırma: nutrient.io/sdk/pricing sayfası, 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.

  3. 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 GdPicture NuGet paketi ve GdPicture14 ad alanı olarak gönderilir, ancak sınıf adları GdPicturePDF ve GdPictureDocumentConverter 'dir ve 'Nutrient' veya 'PSPDFKit' markasıyla eşleşmez.

  4. 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 SetWebBrowserPath ile sağladığınız taşınabilir bir yola).IronPDF kendi gömülü Chromium ile gönderilir.

  5. Prosedürel PDF API: Filigranlar SetFillAlpha, DrawTextBox ve 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

  1. .NET Ortamı: .NET Framework 4.6.2+ veya .NET Core 3.1+ / .NET 5/6/7/8/9+
  2. NuGet Erişimi: NuGet paketlerini yükleyebilme
  3. 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
SHELL

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"
$vbLabelText   $csharpLabel

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

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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")
$vbLabelText   $csharpLabel

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)
$vbLabelText   $csharpLabel

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)
$vbLabelText   $csharpLabel

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)
$vbLabelText   $csharpLabel

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}"
}
$vbLabelText   $csharpLabel

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)
$vbLabelText   $csharpLabel

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()
$vbLabelText   $csharpLabel

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")
$vbLabelText   $csharpLabel

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)
$vbLabelText   $csharpLabel

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")
$vbLabelText   $csharpLabel

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)
$vbLabelText   $csharpLabel

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

  • GdPicture NuGet paketini kaldırın (ve mevcutsa GdPicture.WPF / GdPicture.WinForms)
  • Mümkünse eski PSPDFKit.NET paketini kaldırın
  • IronPdf NuGet 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() yerine new ChromePdfRenderer() kullanın
  • new GdPicturePDF() + LoadFromFile yerine PdfDocument.FromFile() kullanın
  • converter.CombineToPDF(paths, ...) yerine PdfDocument.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 HtmlHeaderFooter ile {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

Lütfen dikkate alınNutrient, PSPDFKit, GdPicture ve ORPALIS, ilgili sahiplerinin ticari markalarıdır. Bu site Nutrient, PSPDFKit, GdPicture veya ORPALIS ile ilişkilendirilmemiştir, onaylanmış veya desteklenmemiştir. Tüm ürün adları, logolar ve markalar kendi sahiplerine aittir. Karşılaştırmalar, yalnızca bilgilendirme amaçlıdır ve yazı sırasında halka açık bilgilerle alakalı olarak yansıtılmaktadır.

Curtis Chau
Teknik Yazar

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

Daha Fazla Oku

Iron Destek Ekibi

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