IRONSOFTWAREHOME
VIDEOLAR

Özel PDF Su İşaretleri Uygulamak

Curtis Chau
Curtis Chau
Updated: 19 Temmuz 2026

ActivePDF, .NET geliştiricileri için güvenilir bir PDF aracıdır. PDFTron'un Haziran 2020'de satın alması ve Şubat 2023'te Apryse olarak yeniden markalanmasıyla birlikte,ActivePDFşimdi daha geniş Apryse portföyünde birkaç markadan biri olarak yer alıyor. Bu rehber, ActivePDF'den IronPDF'ye geçiş için detaylı, adım adım bir yol sunar—.NET Framework 4.6.2'den .NET 9'a kadar destekleyen modern, aktif bir .NET PDF kütüphanesi.

ActivePDF'den Neden Uzaklaşmayı Düşünmelisiniz?

ActivePDF hâlâ gönderilip kullanılmakta ve ActivePDF.Toolkit NuGet paketi Apryse altında güncellemeler almaktadır, ancak tasarım ve paketlemesinin çeşitli yönleri, ekipleri alternatifleri değerlendirmeye sevk edebilir.

Marka ve Yol Haritası Düşünceleri

ActivePDF artık Apryse içinde tek bir markadır, Apryse SDK da dahil. ActivePDF'yi özel olarak sunucu tarafı otomasyon odaklı seçen takımlar,ActivePDFSKU'larında kalmayı veya zaman içinde daha geniş Apryse SDK'ya geçmeyi değerlendirmek isteyebilir.

Lisanslama Modeli

ActivePDF'nin geleneksel sunucu başına/çekirdek başına lisanslaması, uygulamalar bulut ve kapsayıcılı ortamlar üzerinde altyapı çapında dinamik olarak ölçeklenirken sürtüşme yaratabilir.

Eski Mimari Kalıplar

ActivePDF'nin API yüzeyi, COM/yerel kökenlerini yansıtır. CloseOutputFile iş akışı ve tam sayı dönüş kodları (başarı için 0), modern C# idiomlarıyla, using, istisnalar ve async gibi her zaman uyuşmayan belirgin yaşam döngüsü yönetimi gerektirir.

Çoklu SKU Ürün Yerleşimi

HTML/URL'den PDF'ye oluşturma ayrı ActivePDF.WebGrabber ürününde yer alırken, PDF manipülasyonu ActivePDF.Toolkit içindedir. Toolkit 10 ile başlayarak, yerel kitaplıklar artık sistem klasörüne otomatik kopyalanmadığından, kurucu genellikle açık bir CoreLibPath argümanına ihtiyaç duyar—Docker, CI ve kurulum gerektirmeyen dağıtımları zorlaştıran bir modeldir.

##ActivePDFve IronPDF: Ana Farklılıklar

Geçiş sürecine başlamadan önce,ActivePDFve IronPDF arasındaki temel farkları anlamak, gereken kod değişiklikleri için beklentileri ayarlamaya yardımcı olur.

AspektActivePDFIronPDF
SatıcıApryse (eski adıyla PDFTron,ActivePDFHaziran 2020'de satın aldı)Iron Software, bağımsız
Ürün YerleşimiMultiple SKUs (Toolkit, WebGrabber, DocConverter, Server, Meridian)Single IronPdf NuGet package
KurulumNuGet paketi + yerel çalışma zamanı yolu (CoreLibPath v10'dan itibaren)Tek bir NuGet paketi; natives bundled
API ModeliDurum bilgili (CloseOutputFile), COM türevliAkıcı, fonksiyonel API
Lisans ModeliSunucu başına / çekirdek başınaKod tabanlı anahtar
.NET Desteği.NET Framework 4.5+ / .NET Standard 1.0+ / .NET CoreFramework 4.6.2'den .NET 9'a kadar
Hata YönetimiTam sayı dönüş kodları (0 = başarı)Standart .NET istisnaları
Asenkron DestekYerel değilTam async/await desteği

Migration'a Ön Hazırlık

Kod Tabanınızı Denetleme

Geçişe başlamadan önce, çözümünüzdeki tümActivePDFkullanımını belirleyin. Gerçek isim alanları APToolkitNET (Toolkit) ve APWebGrabber (WebGrabber); bazı eski projeler ayrıca COM uyumlu montaj aracılığıyla ActivePDF.Toolkit'a referans verir. Çözüm dizininizde bu komutları çalıştırın:

grep -r "using APToolkitNET" --include="*.cs" .
grep -r "using APWebGrabber" --include="*.cs" .
grep -r "ActivePDF" --include="*.csproj" .
SHELL

Kıran Değişiklikleri Belgeleme

Temel API farklarını anlamak, geçiş stratejinizi planlamanızı sağlar:

KategoriActivePDF DavranışıIronPDF DavranışıGeçiş Eylemi
Ürün AyrımıToolkit (manipülasyon) + WebGrabber (HTML dönüştürme) ayrı satılırTek IronPdf paketiHer ikisini tek kütüphanede toplamak
Nesne ModeliPDF'ler için APToolkitNET.Toolkit, HTML için APWebGrabber.WebGrabberChromePdfRenderer + PdfDocumentEndişeleri ayırmak
Dosya İşlemleriCloseOutputFile()Doğrudan SaveAs()Açma/kapama çağrılarını kaldır
Yerel Çalışma Zamanıv10'dan beri CoreLibPath argümanıNuGet yerel öğeleri gönderirYol yapılandırmasını kaldır
Sayfa OluşturmaNewPage() yöntemiHTML'den otomatikSayfa oluşturma çağrılarını kaldır
Geri Dönüş DeğerleriTamsayı hata kodlarıIstisnalartry/catch uygulayın
Sayfa Boyutu BirimleriNoktalar (612x792 = Mektup)Enum veya milimetreÖlçümleri Güncelle

Ön Koşullar

Ortamınızın bu gereksinimleri karşıladığından emin olun:

  • .NET Framework 4.6.2+ or .NET Core 3.1 / .NET 5-9
  • Visual Studio 2019+ veya JetBrains Rider
  • NuGet Package Manager erişimi -IronPDF lisans anahtarı (ücretsiz deneme sürümü ironpdf.com adresinde mevcut)

Adım Adım Geçiş Süreci

1. Adım: NuGet Paketlerini Güncelleyin

nuget.org üzerinde paket ActivePDF.Toolkit (şu anki sürüm 11.4.4, Aralık 2025 yayınlandı). HTML renderleme, ActivePDF.WebGrabber olarak ayrı gönderilir.ActivePDFSKU'larını kaldırın ve IronPDF'i yükleyin:

# RemoveActivePDFpackages
dotnet remove package ActivePDF.Toolkit
dotnet remove package ActivePDF.WebGrabber

# Install IronPDF
dotnet add package IronPdf
SHELL

Alternatif olarak, Visual Studio Paket Yöneticisi Konsolu aracılığıyla:

Uninstall-Package ActivePDF.Toolkit
Uninstall-Package ActivePDF.WebGrabber
Install-Package IronPdf
PowerShell

Manuel DLL referansları olan projeler için, .csproj dosyanızdaki referansı kaldırın:

<!-- Remove this block -->
<Reference Include="APToolkitNET">
    <HintPath>path\to\APToolkitNET.dll</HintPath>
</Reference>
XML

2. Adım: Lisans Anahtarını Yapılandırma

Uygulama başlangıcında IronPDF lisans anahtarını ekleyin, herhangi bir PDF işlemi öncesinde:

// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

// Verify license status
bool isLicensed = IronPdf.License.IsLicensed;

3. Adım: Ad Alanı Referanslarını Güncelle

Çözümünüz genelinde küresel bir bul ve değiştir yapın:

BulBununla Değiştir
using APToolkitNET;using IronPdf;
using APWebGrabber;using IronPdf;
APToolkitNET.ToolkitChromePdfRenderer (oluşturma) / PdfDocument (manipülasyon)
APWebGrabber.WebGrabberChromePdfRenderer

Tam API Geçiş Referansı

Belge Oluşturma Yöntemleri

ActivePDFMetoduIronPDF EşdeğeriNotlar
new APToolkitNET.Toolkit()new ChromePdfRenderer() / new PdfDocument(...)IronPDF render'i manipülasyonundan ayırır
new Toolkit(CoreLibPath: path)new ChromePdfRenderer()NuGet yerel dosyaları gönderir—CoreLibPath yok
toolkit.OpenOutputFile(path)Eşdeğeri gerekmezSadece sonunda SaveAs çağırın
toolkit.CloseOutputFile()Eşdeğeri gerekmezusing temizliği yönetir
webGrabber.URL = html; webGrabber.ConvertToPDF()renderer.RenderHtmlAsPdf(html)WebGrabber, Toolkit değil
webGrabber.URL = url; webGrabber.ConvertToPDF()renderer.RenderUrlAsPdf(url)WebGrabber, Toolkit değil

Dosya İşlemleri

ActivePDFMetoduIronPDF EşdeğeriNotlar
toolkit.OpenInputFile(path)PdfDocument.FromFile(path)Mevcut PDF'yi yükle
toolkit.MergeFile(path, startPage, endPage)PdfDocument.Merge(pdfs)ActivePDF açılan çıktı dosyasına yerinde birleştirilir;IronPDF yeni bir birleştirilmiş belge döndürür
toolkit.NumPages (özellik)pdf.PageCountSayfa sayısı
toolkit.GetPageText(page, 0)pdf.Pages[i].Text / pdf.ExtractAllText()Metin çıkarma

Sayfa Yapılandırması

ActivePDFMetoduIronPDF Eşdeğeri
toolkit.SetPageSize(612, 792)RenderingOptions.PaperSize = PdfPaperSize.Letter
toolkit.SetOrientation("Landscape")RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape
toolkit.SetMargins(t, b, l, r)RenderingOptions.MarginTop/Bottom/Left/Right

Güvenlik Yöntemleri

ActivePDFMetoduIronPDF Eşdeğeri
toolkit.SetEncryption(user, owner, 128, 0)pdf.SecuritySettings.OwnerPassword / UserPassword
toolkit.SetPermissions(flags)pdf.SecuritySettings.AllowUserXxx
toolkit.PrintText(x, y, text) (sayfa başına filigran)pdf.ApplyWatermark(html)

Kod Göç Örnekleri

HTML'den PDF'ye Dönüşüm

HTML dizelerini PDF belgelerine dönüştürmek, en yaygın PDF üretme senaryolarından birini temsil eder. ActivePDF'de, HTML render ayrı lisanslı WebGrabber ürününde yer alır, Toolkit'te değil, ve WebGrabber bir URL'yi veya dosya yolunu işlemeden önce bellekte bir dizeyle işlenir.

ActivePDF Uygulaması (WebGrabber):

// NuGet: Install-Package ActivePDF.WebGrabber
using APWebGrabber;
using System;
using System.IO;

class Program
{
    static void Main()
    {
        WebGrabber wg = new WebGrabber();

        string htmlContent = "<html><body><h1>Hello World</h1></body></html>";
        string tempHtml = Path.Combine(Path.GetTempPath(), "input.html");
        File.WriteAllText(tempHtml, htmlContent);

        wg.URL = tempHtml;
        wg.OutputDirectory = Directory.GetCurrentDirectory();
        wg.OutputFilename = "output.pdf";

        if (wg.ConvertToPDF() == 0)
        {
            Console.WriteLine("PDF created successfully");
        }
    }
}

IronPDF Uygulaması:

// 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");
        
        Console.WriteLine("PDF created successfully");
    }
}

IronPDF yaklaşımı, açık dosya tanıtıcı yönetimini ortadan kaldırır ve daha temiz, daha okunabilir kod sunar. Gelişmiş HTML'den PDF'ye senaryoları için, IronPDF'in ChromePdfRenderer'i piksel hassasiyetinde CSS ve JavaScript desteği için Çromium tabanlı bir oluşturma motoru kullanır.

URL'den PDF'ye Dönüşüm

Web sayfalarını PDF belgeleri olarak yakalama, Toolkit'te değil, WebGrabber'da barındırılır.

ActivePDF Uygulaması (WebGrabber):

// NuGet: Install-Package ActivePDF.WebGrabber
using APWebGrabber;
using System;
using System.IO;

class Program
{
    static void Main()
    {
        WebGrabber wg = new WebGrabber();

        wg.URL = "https://www.example.com";
        wg.OutputDirectory = Directory.GetCurrentDirectory();
        wg.OutputFilename = "webpage.pdf";

        if (wg.ConvertToPDF() == 0)
        {
            Console.WriteLine("PDF from URL created successfully");
        }
    }
}

IronPDF Uygulaması:

using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        
        string url = "https://www.example.com";
        
        var pdf = renderer.RenderUrlAsPdf(url);
        pdf.SaveAs("webpage.pdf");
        
        Console.WriteLine("PDF from URL created successfully");
    }
}

Birden Fazla PDF'yi Birleştirme

Birden fazla PDF belgesini tek bir dosyada birleştirmek, IronPDF'in belge manipülasyonu için işlevsel yaklaşımını gösterir.

ActivePDF Uygulaması (Toolkit):

// NuGet: Install-Package ActivePDF.Toolkit
using APToolkitNET;
using System;

class Program
{
    static void Main()
    {
        using (Toolkit toolkit = new Toolkit())
        {
            if (toolkit.OpenOutputFile("merged.pdf") == 0)
            {
                // MergeFile(FileName, StartPage, EndPage); -1 = end of file
                toolkit.MergeFile("document1.pdf", 1, -1);
                toolkit.MergeFile("document2.pdf", 1, -1);
                toolkit.CloseOutputFile();
                Console.WriteLine("PDFs merged successfully");
            }
        }
    }
}

IronPDF Uygulaması:

using IronPdf;
using System;
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(pdf1, pdf2);
        merged.SaveAs("merged.pdf");
        
        Console.WriteLine("PDFs merged successfully");
    }
}

Seçici sayfa çıkarma da dahil olmak üzere daha gelişmiş birleştirme senaryoları için, PDF birleştirme belgelerini inceleyin.

Başlık ve Alt Bilgi Ekleme

ActivePDF Uygulaması (WebGrabber):

using APWebGrabber;
using System.IO;

public void CreatePdfWithHeaderFooter(string html, string outputPath)
{
    var wg = new WebGrabber();
    string tempHtml = Path.Combine(Path.GetTempPath(), "input.html");
    File.WriteAllText(tempHtml, html);

    wg.URL = tempHtml;
    wg.HeaderText = "My Document";
    wg.FooterText = "Page [page] of [pages]";
    wg.OutputDirectory = Path.GetDirectoryName(outputPath);
    wg.OutputFilename = Path.GetFileName(outputPath);
    wg.ConvertToPDF();
}

IronPDF Uygulaması:

using IronPdf;

public void CreatePdfWithHeaderFooter(string html, string outputPath)
{
    var renderer = new ChromePdfRenderer();

    renderer.RenderingOptions.TextHeader = new TextHeaderFooter
    {
        CenterText = "My Document",
        FontSize = 12,
        FontFamily = "Arial"
    };

    renderer.RenderingOptions.TextFooter = new TextHeaderFooter
    {
        CenterText = "Page {page} of {total-pages}",
        FontSize = 10,
        FontFamily = "Arial"
    };

    using var pdf = renderer.RenderHtmlAsPdf(html);
    pdf.SaveAs(outputPath);
}

IronPDF, hem metin tabanlı hem de HTML başlıkları ve altbilgileri destekler, tam tasarım esnekliği sunar.

Parola Koruması ve Güvenlik

ActivePDF Uygulaması (Toolkit):

using APToolkitNET;

public void ProtectPdf(string inputPath, string outputPath, string password)
{
    using (Toolkit toolkit = new Toolkit())
    {
        if (toolkit.OpenOutputFile(outputPath) == 0
            && toolkit.OpenInputFile(inputPath) == 0)
        {
            toolkit.SetEncryption(password, password, 128, 0);
            toolkit.CopyForm(0, 0);
            toolkit.CloseInputFile();
            toolkit.CloseOutputFile();
        }
    }
}

IronPDF Uygulaması:

using IronPdf;

public void ProtectPdf(string inputPath, string outputPath, string password)
{
    using var pdf = PdfDocument.FromFile(inputPath);

    pdf.SecuritySettings.OwnerPassword = password;
    pdf.SecuritySettings.UserPassword = password;
    pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights;
    pdf.SecuritySettings.AllowUserCopyPasteContent = false;
    pdf.SecuritySettings.AllowUserEdits = PdfEditSecurity.NoEdit;

    pdf.SaveAs(outputPath);
}

IronPDF'in güvenlik ayarları API'si, belge izinleri üzerinde güçlü türlendirilmiş numaralandırmalar yerine tamsayı bayraklar sağlar.

Metin Çıkarma

ActivePDF Uygulaması (Toolkit):

using APToolkitNET;
using System.Text;

public string ExtractText(string pdfPath)
{
    var sb = new StringBuilder();

    using (Toolkit toolkit = new Toolkit())
    {
        if (toolkit.OpenInputFile(pdfPath) == 0)
        {
            int pageCount = toolkit.NumPages;
            for (int i = 1; i <= pageCount; i++)
            {
                sb.AppendLine(toolkit.GetPageText(i, 0));
            }
            toolkit.CloseInputFile();
        }
    }

    return sb.ToString();
}

IronPDF Uygulaması:

using IronPdf;

public string ExtractText(string pdfPath)
{
    using var pdf = PdfDocument.FromFile(pdfPath);
    return pdf.ExtractAllText();
}

IronPDF uygulaması, çoklu satırdan tek bir yöntem çağrısına metin çıkarma işlemini azaltır.

Filigran Ekleme

ActivePDF Uygulaması (Toolkit — sayfa başına sayfa metni olarak çizilir):

using APToolkitNET;

public void AddWatermark(string inputPath, string outputPath, string watermarkText)
{
    using (Toolkit toolkit = new Toolkit())
    {
        if (toolkit.OpenOutputFile(outputPath) == 0
            && toolkit.OpenInputFile(inputPath) == 0)
        {
            int pageCount = toolkit.NumPages;
            for (int i = 1; i <= pageCount; i++)
            {
                toolkit.CopyForm(i, 0);
                toolkit.SetFont("Helvetica", 72);
                toolkit.SetTextColor(200, 200, 200);
                toolkit.PrintText(150, 400, watermarkText);
            }
            toolkit.CloseInputFile();
            toolkit.CloseOutputFile();
        }
    }
}

IronPDF Uygulaması:

using IronPdf;

public void AddWatermark(string inputPath, string outputPath, string watermarkText)
{
    using var pdf = PdfDocument.FromFile(inputPath);

    pdf.ApplyWatermark(
        $"<h1 style='color:lightgray;font-size:72px;'>{watermarkText}</h1>",
        rotation: 45,
        opacity: 50);

    pdf.SaveAs(outputPath);
}

IronPDF'in HTML tabanlı filigranlama CSS stilleme sağlar ve sayfa başına yineleme gerekmeksizin tam tasarım kontrolü sunar.

ASP.NET Core Integration

Modern web uygulamaları, IronPDF'in daha temiz entegrasyon kalıplarından önemli ölçüde faydalanır.

ActivePDF Pattern (WebGrabber):

[HttpPost]
public IActionResult GeneratePdf([FromBody] ReportRequest request)
{
    var wg = new APWebGrabber.WebGrabber();
    string tempHtml = Path.Combine(Path.GetTempPath(), Guid.NewGuid() + ".html");
    System.IO.File.WriteAllText(tempHtml, request.Html);

    wg.URL = tempHtml;
    wg.OutputDirectory = Path.GetTempPath();
    wg.OutputFilename = "temp.pdf";

    if (wg.ConvertToPDF() == 0)
    {
        byte[] bytes = System.IO.File.ReadAllBytes(Path.Combine(Path.GetTempPath(), "temp.pdf"));
        return File(bytes, "application/pdf", "report.pdf");
    }

    return BadRequest("PDF generation failed");
}

IronPDF Deseni:

[HttpPost]
public IActionResult GeneratePdf([FromBody] ReportRequest request)
{
    var renderer = new ChromePdfRenderer();
    using var pdf = renderer.RenderHtmlAsPdf(request.Html);

    return File(pdf.BinaryData, "application/pdf", "report.pdf");
}

IronPDF, geçici dosyalara olan ihtiyacı ortadan kaldırır, PDF ikili verilerini doğrudan bellekten döndürür.

Web Uygulamaları için Async Desteği

ActivePDF yerel async desteğine sahip değildir. IronPDF, ölçeklenebilir web uygulamaları için gerekli olan tam async/await yetenekleri sağlar:

using IronPdf;

public async Task<byte[]> GeneratePdfAsync(string html)
{
    var renderer = new ChromePdfRenderer();
    using var pdf = await renderer.RenderHtmlAsPdfAsync(html);
    return pdf.BinaryData;
}

Dependency Injection Yapılandırması

.NET 6+ uygulamaları için, DI konteynerinizde IronPDF servislerini kaydedin:

// Program.cs (.NET 6+)
builder.Services.AddSingleton<ChromePdfRenderer>();

// Service wrapper
public interface IPdfService
{
    Task<byte[]> GeneratePdfAsync(string html);
    Task<byte[]> GeneratePdfFromUrlAsync(string url);
}

public class IronPdfService : IPdfService
{
    private readonly ChromePdfRenderer _renderer;

    public IronPdfService()
    {
        _renderer = new ChromePdfRenderer();
        _renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
    }

    public async Task<byte[]> GeneratePdfAsync(string html)
    {
        using var pdf = await _renderer.RenderHtmlAsPdfAsync(html);
        return pdf.BinaryData;
    }

    public async Task<byte[]> GeneratePdfFromUrlAsync(string url)
    {
        using var pdf = await _renderer.RenderUrlAsPdfAsync(url);
        return pdf.BinaryData;
    }
}

Hata Yönetimi Geçişi

ActivePDF, bakış tablosuna ihtiyaç duyan tam sayı dönüş kodlarını kullanır. IronPDF, modern istisna yönetimini kullanır:

ActivePDF Hata Yönetimi:

using APToolkitNET;

using (var toolkit = new Toolkit())
{
    int result = toolkit.OpenOutputFile(path);

    if (result != 0)
    {
        // Error - look up the code in "Toolkit Return Results and Error Codes"
        Console.WriteLine($"Error code: {result}");
    }
}

IronPDF Hata Yönetimi:

try
{
    var renderer = new ChromePdfRenderer();
    using var pdf = renderer.RenderHtmlAsPdf(html);
    pdf.SaveAs(path);
}
catch (IronPdf.Exceptions.IronPdfProductException ex)
{
    Console.WriteLine($"IronPDF Error: {ex.Message}");
}
catch (Exception ex)
{
    Console.WriteLine($"General Error: {ex.Message}");
}

Performans Optimizasyon İpuçları

Renderer Örneğini Yeniden Kullan

Yeni bir ChromePdfRenderer oluşturmak başlangıç yükü getirir. Toplu işlemler için, tek bir örneği yeniden kullanın:

var renderer = new ChromePdfRenderer();
foreach (var html in htmlList)
{
    using var pdf = renderer.RenderHtmlAsPdf(html);
    pdf.SaveAs($"output_{i}.pdf");
}

Web Uygulamalarında Async Kullanımı

ASP.NET Core uygulamaları için, async PDF üretimi throughput'u artırır:

public async Task<IActionResult> GenerateReport()
{
    var renderer = new ChromePdfRenderer();
    using var pdf = await renderer.RenderHtmlAsPdfAsync(html);
    return File(pdf.BinaryData, "application/pdf");
}

Kaynakların Doğru Şekilde Atılması

Her zaman uygun temizlik sağlamak için using ifadelerini kullanın:

using var pdf = renderer.RenderHtmlAsPdf(html);
return pdf.BinaryData;

Resim Sıkıştırması

Resim sıkıştırması ile çıktı dosya boyutlarını küçültün:

using var pdf = renderer.RenderHtmlAsPdf(html);
pdf.CompressImages(85); // 85% quality
pdf.SaveAs("compressed.pdf");

Yaygın Göç Sorunlarını Giderme

Problem: Sayfa Boyutu Farklılıkları

ActivePDF WebGrabber noktalar (612x792 = Mektup) kullanırken,IronPDF enum veya milimetre kullanır:

//ActivePDFWebGrabber: Points
wg.PageWidth = 612;
wg.PageHeight = 792;

// IronPDF: Use enum
renderer.RenderingOptions.PaperSize = PdfPaperSize.Letter;
// Or custom in mm:
renderer.RenderingOptions.SetCustomPaperSizeInMillimeters(215.9, 279.4);
C#

Problem: Eşlenik CloseOutputFile Eksik

IronPDF, açık dosya tutucu yönetimi olmadan modern bir paradigma kullanır:

//ActivePDFToolkit
toolkit.OpenOutputFile(path);
// ... operations ...
toolkit.CloseOutputFile(); // Required!

//IronPDF- no open/close needed
using var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs(path); // 'using' handles cleanup
C#

Problem: PDF Boş Yükleniyor

JavaScript'e bağlı içerikler boş yükleniyorsa, render gecikmelerini yapılandırın:

var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.WaitFor.RenderDelay(2000);
// Or wait for element:
renderer.RenderingOptions.WaitFor.HtmlElementById("content-loaded");

Problem: CSS/Resimler Yüklenmiyor

Göreli yol çözümü için temel URL'yi yapılandırın:

renderer.RenderingOptions.BaseUrl = new Uri("https://yourdomain.com/assets/");

Taşınma Sonrası Kontrollistesi

Kod taşımasını tamamladıktan sonra, aşağıdakileri doğrulayın:

  • Mevcut tüm birim ve bütünleşik testleri çalıştırın
  • PDF çıktıları önceki sürümlerle görsel olarak karşılaştırın
  • Tüm PDF iş akışlarını bir sahne ortamında test edin
  • Lisanslamanın doğru çalıştığını doğrulayın (IronPdf.License.IsLicensed)
  • Performansı önceki uygulamayla karşılaştırarak test edin
  • EskiActivePDFkurulum dosyalarını ve DLL referanslarını kaldırın
  • CI/CD boru hattı bağımlılıklarını güncelleyin
  • Geliştirme ekibiniz için IronPDF desenlerini belgeleyin

Ek Kaynaklar


ActivePDF'den IronPDF'ye geçiş, PDF oluşturma altyapınızı daha temiz API'ler, daha iyi .NET entegrasyonu ve aktif uzun vadeli destek ile modernize eder. Geçişe yapılan yatırım, artırılmış kod sürdürülebilirliği, async yetenekleri ve PDF kütüphanenizin devam eden geliştirilmesi konusunda güvence sağlar.

Lütfen dikkate alın: ActivePDF ve Apryse, ilgili sahiplerinin tescilli markalarıdır. Bu site,ActivePDFveya Apryse ile ilişkili, onaylanmış veya destekli değildir. Tüm ürün adları, logolar ve markalar kendi sahiplerine aittir. Karşılaştırmalar, yalnızca bilgilendirme amaçlıdır ve yazı sırasında halka açık bilgilerle alakalı olarak yansıtılmaktadır.
Curtis Chau
Teknik Yazar

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

...
Daha Fazla Oku

İlgili Makaleler

Key in blue circle

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

Your trial license will be sent to your email address

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

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

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

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