ActivePDF'den IronPDF'e Geçiş: (.NET Kılavuzu)
ActivePDF, .NET geliştiricileri için güvenilir bir PDF araç seti olmuştur. Ancak, Foxit bunu satın aldığından beri, birçok geliştirme ekibi platformun geleceği, lisanslama koşulları ve sürekli gelişimi hakkında belirsizlik yaşıyor. Bu kılavuz, ActivePDF'den IronPDF'ye—.NET Framework 4.6.2'den .NET 9'a ve ötesine kadar destekleyen modern ve aktif olarak bakımı yapılan bir .NET PDF kütüphanesine ayrıntılı, adım adım bir geçiş yolu sunar.
Neden ActivePDF'den Ayrılmayı Düşünmelisiniz?
ActivePDF'nin Foxit tarafından satın alınması, .NET uygulamalarında PDF oluşturma ve düzenleme çözümleri geliştiren geliştiriciler için çeşitli zorluklar getirdi.
Ürün Geleceğinde Belirsizlik
ActivePDF'nin Foxit'in sahipliğine geçişi, araç setinin uzun vadeli gelişim yolu hakkında sorular doğuruyor. ActivePDF'e güvenen geliştiriciler, kütüphanenin güncel kalmayarak, desteğin azalması ve doğal gelişimin duraklaması gibi risklerle karşı karşıyadır. 2025 ve 2026'ya uzanan projeleri planlayan ekipler için bu belirsizlik önemli teknik risk oluşturuyor.
Lisanslama Zorlukları
Satın alma, dağıtımları zorlaştırabilecek lisans belirsizliklerini beraberinde getirdi. ActivePDF'nin geleneksel makineye bağlanmış lisanslama modeli, uygulamaların altyapı üzerinde dinamik olarak ölçeklendiği modern bulut ve konteyner ortamlarında sıkıntı yaratıyor.
Kalıtım Mimarisi Desenleri
ActivePDF'nin mimarisi, durumsal araç seti desenleri üzerine odaklanmış daha eski bir tasarım felsefesini yansıtır. Bu CloseOutputFile iş akışı, modern C# konvansiyonlarıyla uyuşmayan açık dosya tutucu yönetimi gerektirir ve dikkatli olunmazsa kaynak yönetimi sorunları yaratabilir.
Kurulum ve Yapılandırma Aşırı Yükü
Günümüzün NuGet tabanlı paket yönetiminden farklı olarak,ActivePDFgenellikle araç seti oluşturulduğunda manuel DLL referansları ve açık yol yapılandırması gerektirir—bu, katılım sürtüşmesini artırır ve CI/CD hatlarını karmaşıklaştırır.
ActivePDF vs. IronPDF: Temel Farklılıklar
Taşıma işlemine başlamadan önce,ActivePDFveIronPDFarasındaki temel farklılıkların anlaşılması, gerek materyal değişiklikler için beklentileri belirlemeye yardımcı olur.
| Bağlam | ActivePDF | IronPDF |
|---|---|---|
| Şirket Durumu | Foxit tarafından satın alındı (belirsiz gelecek) | Bağımsız, net geliştirme yol haritası |
| Kurulum | Manuel DLL referansları | Basit NuGet paket |
| API Deseni | Durumlu (CloseOutputFile) |
Akıcı, fonksiyonel API |
| Lisans Modeli | Makineye kilitli | Kod temelli anahtar |
| .NET Desteği | Eski .NET Framework odağı | Framework 4.6.2'den .NET 9+'a |
| Hata İşleme | Tamsayı dönüş kodları | Modern istisna tabanlı |
| Async Destegi | Mevcut değil | Tam async/await desteği |
Önceden Taşıma Hazırlığı
Kod Tabanınızı Denetleyin
Taşınmaya başlamadan önce,ActivePDFkullanımlarını çözümünüz genelinde belirleyin. Çözüm dizininde şu komutları çalıştırın:
grep -r "using ActivePDF" --include="*.cs" .
grep -r "using APToolkitNET" --include="*.cs" .
grep -r "APToolkitNET" --include="*.csproj" .
grep -r "using ActivePDF" --include="*.cs" .
grep -r "using APToolkitNET" --include="*.cs" .
grep -r "APToolkitNET" --include="*.csproj" .
Radikal Değişiklikleri Belgeleyin
Temel API farklılıklarını anlamak, taşıma stratejinizi planlamaya yardımcı olur:
| Kategori | ActivePDFDavranışı | IronPDF Davranışı | Göç İşlemi |
|---|---|---|---|
| Nesne Modeli | Tek Toolkit nesnesi |
ChromePdfRenderer + PdfDocument |
Ayrı endişeler |
| Dosya Operasyonları | CloseOutputFile() |
Doğrudan SaveAs() |
Aç/kapat çağrılarını kaldırın |
| Sayfa Oluşturma | NewPage() yöntemi |
HTML'den otomatik | Sayfa oluşturma çağrılarını kaldırın |
| Dönüş Değerleri | Tamsayı hata kodları | İstisnalar | Try/catch uygulayın |
| Sayfa Boyutu Birimleri | Noktalar (612x792 = Mektup) | Enums veya milimetre | Ölçümleri güncelleyin |
Önkoşullar
Ortamınızın bu gereksinimlere uygun olduğunu doğrulayın:
- .NET Framework 4.6.2+ veya .NET Core 3.1 / .NET 5-9
- Visual Studio 2019+ veya JetBrains Rider
- NuGet Paket Yöneticisi erişimi -IronPDFlisans anahtarı (ücretsiz deneme ironpdf.com adresinde mevcuttur)
Adım Adım Geçiş Süreci
Adım 1: NuGet Paketlerini Güncelleyin
ActivePDF paketini kaldırın ve IronPDF'yi yükleyin:
# RemoveActivePDFpackage
dotnet remove package APToolkitNET
# Install IronPDF
dotnet add package IronPdf
# RemoveActivePDFpackage
dotnet remove package APToolkitNET
# Install IronPDF
dotnet add package IronPdf
Alternatif olarak, Visual Studio Paket Yöneticisi Konsolu üzerinden:
Uninstall-Package APToolkitNET
Install-Package IronPdf
Manuel DLL referansları olan projeler için, .csproj dosyanızdan referansı kaldırın:
<Reference Include="APToolkitNET">
<HintPath>path\to\APToolkitNET.dll</HintPath>
</Reference>
<Reference Include="APToolkitNET">
<HintPath>path\to\APToolkitNET.dll</HintPath>
</Reference>
Adım 2: Lisans Anahtarını Yapılandırın
Uygulama başlangıcında, herhangi bir PDF işlemi öncesindeIronPDFlisans anahtarını ekleyin:
// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Verify license status
bool isLicensed = IronPdf.License.IsLicensed;
// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Verify license status
bool isLicensed = IronPdf.License.IsLicensed;
' Add at application startup (Program.vb or Startup.vb)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
' Verify license status
Dim isLicensed As Boolean = IronPdf.License.IsLicensed
Adım 3: Ad Alanı Referanslarını Güncelleyin
Çözümünüz içinde genel bir bul ve değiştir işlemi yapın:
| Bul | Şununla Değiştir |
|---|---|
using ActivePDF.Toolkit; |
using IronPdf; |
using APToolkitNET; |
using IronPdf; |
using APToolkitNET.PDFObjects; |
using IronPdf; |
using APToolkitNET.Common; |
using IronPdf; |
Tam API Geçiş Referansı
Belge Oluşturma Yöntemleri
| ActivePDF Yöntemi | IronPDF Eşdeğeri |
|---|---|
new Toolkit() |
new ChromePdfRenderer() |
toolkit.OpenOutputFile(path) |
Eşdeğer gerekmez |
toolkit.CloseOutputFile() |
Eşdeğer gerekmez |
toolkit.AddHTML(html) |
renderer.RenderHtmlAsPdf(html) |
toolkit.AddURL(url) |
renderer.RenderUrlAsPdf(url) |
toolkit.SaveAs(path) |
pdf.SaveAs(path) |
Dosya İşlemleri
| ActivePDF Yöntemi | IronPDF Eşdeğeri |
|---|---|
toolkit.OpenInputFile(path) |
PdfDocument.FromFile(path) |
toolkit.AddPDF(path) |
PdfDocument.Merge() |
toolkit.GetPageCount() |
pdf.PageCount |
toolkit.GetText() |
pdf.ExtractAllText() |
Sayfa Yapılandırmasi
| ActivePDF Yöntemi | IronPDF 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 Metotları
| ActivePDF Yöntemi | IronPDF Eşdeğeri |
|---|---|
toolkit.Encrypt(password) |
pdf.SecuritySettings.OwnerPassword |
toolkit.SetUserPassword(pwd) |
pdf.SecuritySettings.UserPassword |
toolkit.SetPermissions(flags) |
pdf.SecuritySettings.AllowUserXxx |
toolkit.AddWatermark(text) |
pdf.ApplyWatermark(html) |
Kod Geçiş Örnekleri
HTML'den PDF'ye Dönüşüm
HTML dizelerini PDF belgelerine dönüştürmek, en yaygın PDF oluşturma senaryolarından birini temsil eder. İşte kodun geçiş sırasında nasıl dönüştüğü.
ActivePDF Uygulaması:
// NuGet: Install-Package APToolkitNET
using ActivePDF.Toolkit;
using System;
class Program
{
static void Main()
{
Toolkit toolkit = new Toolkit();
string htmlContent = "<html><body><h1>Hello World</h1></body></html>";
if (toolkit.OpenOutputFile("output.pdf") == 0)
{
toolkit.AddHTML(htmlContent);
toolkit.CloseOutputFile();
Console.WriteLine("PDF created successfully");
}
}
}
// NuGet: Install-Package APToolkitNET
using ActivePDF.Toolkit;
using System;
class Program
{
static void Main()
{
Toolkit toolkit = new Toolkit();
string htmlContent = "<html><body><h1>Hello World</h1></body></html>";
if (toolkit.OpenOutputFile("output.pdf") == 0)
{
toolkit.AddHTML(htmlContent);
toolkit.CloseOutputFile();
Console.WriteLine("PDF created successfully");
}
}
}
Imports ActivePDF.Toolkit
Imports System
Class Program
Shared Sub Main()
Dim toolkit As New Toolkit()
Dim htmlContent As String = "<html><body><h1>Hello World</h1></body></html>"
If toolkit.OpenOutputFile("output.pdf") = 0 Then
toolkit.AddHTML(htmlContent)
toolkit.CloseOutputFile()
Console.WriteLine("PDF created successfully")
End If
End Sub
End Class
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");
}
}
// 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");
}
}
Imports IronPdf
Imports System
Module Program
Sub Main()
Dim renderer As New ChromePdfRenderer()
Dim htmlContent As String = "<html><body><h1>Hello World</h1></body></html>"
Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
pdf.SaveAs("output.pdf")
Console.WriteLine("PDF created successfully")
End Sub
End Module
IronPDF yaklaşımı, açıkça dosya tutacağı yönetimini ortadan kaldırırken, daha temiz ve daha okunabilir bir kod sağlar. Gelişmiş HTML'den PDF'ye senaryolar için, IronPDF'nin ChromePdfRenderer piksel mükemmelliğinde CSS ve JavaScript desteği için Chromium tabanlı bir işleme motoru kullanır.
URL'den PDF'ye Dönüşüm
Web sayfalarını PDF belgeleri olarak yakalamak, benzer bir modernizasyon modelini takip eder.
ActivePDF Uygulaması:
using ActivePDF.Toolkit;
using System;
class Program
{
static void Main()
{
Toolkit toolkit = new Toolkit();
string url = "https://www.example.com";
if (toolkit.OpenOutputFile("webpage.pdf") == 0)
{
toolkit.AddURL(url);
toolkit.CloseOutputFile();
Console.WriteLine("PDF from URL created successfully");
}
}
}
using ActivePDF.Toolkit;
using System;
class Program
{
static void Main()
{
Toolkit toolkit = new Toolkit();
string url = "https://www.example.com";
if (toolkit.OpenOutputFile("webpage.pdf") == 0)
{
toolkit.AddURL(url);
toolkit.CloseOutputFile();
Console.WriteLine("PDF from URL created successfully");
}
}
}
Imports ActivePDF.Toolkit
Imports System
Class Program
Shared Sub Main()
Dim toolkit As New Toolkit()
Dim url As String = "https://www.example.com"
If toolkit.OpenOutputFile("webpage.pdf") = 0 Then
toolkit.AddURL(url)
toolkit.CloseOutputFile()
Console.WriteLine("PDF from URL created successfully")
End If
End Sub
End Class
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");
}
}
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");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim url As String = "https://www.example.com"
Dim pdf = renderer.RenderUrlAsPdf(url)
pdf.SaveAs("webpage.pdf")
Console.WriteLine("PDF from URL created successfully")
End Sub
End Class
Birden Fazla PDF'yi Birleştirme
Birden fazla PDF belgesini tek bir dosyada birleştirmek, IronPDF'nin belge manipülasyonuna yönelik işlevsel yaklaşımını gösterir.
ActivePDF Uygulaması:
using ActivePDF.Toolkit;
using System;
class Program
{
static void Main()
{
Toolkit toolkit = new Toolkit();
if (toolkit.OpenOutputFile("merged.pdf") == 0)
{
toolkit.AddPDF("document1.pdf");
toolkit.AddPDF("document2.pdf");
toolkit.CloseOutputFile();
Console.WriteLine("PDFs merged successfully");
}
}
}
using ActivePDF.Toolkit;
using System;
class Program
{
static void Main()
{
Toolkit toolkit = new Toolkit();
if (toolkit.OpenOutputFile("merged.pdf") == 0)
{
toolkit.AddPDF("document1.pdf");
toolkit.AddPDF("document2.pdf");
toolkit.CloseOutputFile();
Console.WriteLine("PDFs merged successfully");
}
}
}
Imports ActivePDF.Toolkit
Imports System
Class Program
Shared Sub Main()
Dim toolkit As New Toolkit()
If toolkit.OpenOutputFile("merged.pdf") = 0 Then
toolkit.AddPDF("document1.pdf")
toolkit.AddPDF("document2.pdf")
toolkit.CloseOutputFile()
Console.WriteLine("PDFs merged successfully")
End If
End Sub
End Class
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");
}
}
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");
}
}
Imports IronPdf
Imports System
Imports System.Collections.Generic
Module Program
Sub Main()
Dim pdf1 = PdfDocument.FromFile("document1.pdf")
Dim pdf2 = PdfDocument.FromFile("document2.pdf")
Dim merged = PdfDocument.Merge(pdf1, pdf2)
merged.SaveAs("merged.pdf")
Console.WriteLine("PDFs merged successfully")
End Sub
End Module
Seçici sayfa çıkarma dahil olmak üzere daha gelişmiş birleştirme senaryoları için, PDF birleştirme belgelendirmesine bakın.
Başlıklar ve Alt Bilgiler Eklemek
ActivePDF Uygulaması:
using ActivePDF.Toolkit;
public void CreatePdfWithHeaderFooter(string html, string outputPath)
{
Toolkit toolkit = new Toolkit();
if (toolkit.OpenOutputFile(outputPath) == 0)
{
toolkit.SetHeader("My Document", 12, "Arial");
toolkit.SetFooter("Page %p of %P", 10, "Arial");
toolkit.AddHTML(html);
toolkit.CloseOutputFile();
}
}
using ActivePDF.Toolkit;
public void CreatePdfWithHeaderFooter(string html, string outputPath)
{
Toolkit toolkit = new Toolkit();
if (toolkit.OpenOutputFile(outputPath) == 0)
{
toolkit.SetHeader("My Document", 12, "Arial");
toolkit.SetFooter("Page %p of %P", 10, "Arial");
toolkit.AddHTML(html);
toolkit.CloseOutputFile();
}
}
Imports ActivePDF.Toolkit
Public Sub CreatePdfWithHeaderFooter(html As String, outputPath As String)
Dim toolkit As New Toolkit()
If toolkit.OpenOutputFile(outputPath) = 0 Then
toolkit.SetHeader("My Document", 12, "Arial")
toolkit.SetFooter("Page %p of %P", 10, "Arial")
toolkit.AddHTML(html)
toolkit.CloseOutputFile()
End If
End Sub
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);
}
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);
}
Imports IronPdf
Public Sub CreatePdfWithHeaderFooter(html As String, outputPath As String)
Dim renderer = New ChromePdfRenderer()
renderer.RenderingOptions.TextHeader = New TextHeaderFooter With {
.CenterText = "My Document",
.FontSize = 12,
.FontFamily = "Arial"
}
renderer.RenderingOptions.TextFooter = New TextHeaderFooter With {
.CenterText = "Page {page} of {total-pages}",
.FontSize = 10,
.FontFamily = "Arial"
}
Using pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs(outputPath)
End Using
End Sub
IronPDF, tam tasarım esnekliği sağlayarak hem metin tabanlı hem de HTML başlıkları ve altbilgileri destekler.
Şifre Koruması ve Güvenlik
ActivePDF Uygulaması:
using ActivePDF.Toolkit;
public void ProtectPdf(string inputPath, string outputPath, string password)
{
Toolkit toolkit = new Toolkit();
if (toolkit.OpenInputFile(inputPath) == 0)
{
toolkit.Encrypt(password);
toolkit.SetUserPassword(password);
toolkit.SetPermissions(4); // Print only
toolkit.SaveAs(outputPath);
toolkit.CloseInputFile();
}
}
using ActivePDF.Toolkit;
public void ProtectPdf(string inputPath, string outputPath, string password)
{
Toolkit toolkit = new Toolkit();
if (toolkit.OpenInputFile(inputPath) == 0)
{
toolkit.Encrypt(password);
toolkit.SetUserPassword(password);
toolkit.SetPermissions(4); // Print only
toolkit.SaveAs(outputPath);
toolkit.CloseInputFile();
}
}
Imports ActivePDF.Toolkit
Public Sub ProtectPdf(inputPath As String, outputPath As String, password As String)
Dim toolkit As New Toolkit()
If toolkit.OpenInputFile(inputPath) = 0 Then
toolkit.Encrypt(password)
toolkit.SetUserPassword(password)
toolkit.SetPermissions(4) ' Print only
toolkit.SaveAs(outputPath)
toolkit.CloseInputFile()
End If
End Sub
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);
}
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);
}
Imports IronPdf
Public Sub ProtectPdf(inputPath As String, outputPath As String, password As String)
Using 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)
End Using
End Sub
IronPDF'nin güvenlik ayarları API'si, belge izinleri üzerinde tam kontrol sağlar ve tam türdeki numaralandırmalar yerine tamsayı bayrakları kullanır.
Metin Çıkarma
ActivePDF Uygulaması:
using ActivePDF.Toolkit;
public string ExtractText(string pdfPath)
{
Toolkit toolkit = new Toolkit();
string text = "";
if (toolkit.OpenInputFile(pdfPath) == 0)
{
int pageCount = toolkit.GetPageCount();
for (int i = 1; i <= pageCount; i++)
{
text += toolkit.GetTextFromPage(i) + "\n";
}
toolkit.CloseInputFile();
}
return text;
}
using ActivePDF.Toolkit;
public string ExtractText(string pdfPath)
{
Toolkit toolkit = new Toolkit();
string text = "";
if (toolkit.OpenInputFile(pdfPath) == 0)
{
int pageCount = toolkit.GetPageCount();
for (int i = 1; i <= pageCount; i++)
{
text += toolkit.GetTextFromPage(i) + "\n";
}
toolkit.CloseInputFile();
}
return text;
}
Imports ActivePDF.Toolkit
Public Function ExtractText(pdfPath As String) As String
Dim toolkit As New Toolkit()
Dim text As String = ""
If toolkit.OpenInputFile(pdfPath) = 0 Then
Dim pageCount As Integer = toolkit.GetPageCount()
For i As Integer = 1 To pageCount
text &= toolkit.GetTextFromPage(i) & vbCrLf
Next
toolkit.CloseInputFile()
End If
Return text
End Function
IronPDF Uygulaması:
using IronPdf;
public string ExtractText(string pdfPath)
{
using var pdf = PdfDocument.FromFile(pdfPath);
return pdf.ExtractAllText();
}
using IronPdf;
public string ExtractText(string pdfPath)
{
using var pdf = PdfDocument.FromFile(pdfPath);
return pdf.ExtractAllText();
}
Imports IronPdf
Public Function ExtractText(pdfPath As String) As String
Using pdf = PdfDocument.FromFile(pdfPath)
Return pdf.ExtractAllText()
End Using
End Function
IronPDF uygulaması, birden fazla satırdan metin çıkarmayı tek bir yöntem çağrısına indirir.
Filigran Ekleme
ActivePDF Uygulaması:
using ActivePDF.Toolkit;
public void AddWatermark(string inputPath, string outputPath, string watermarkText)
{
Toolkit toolkit = new Toolkit();
if (toolkit.OpenInputFile(inputPath) == 0)
{
int pageCount = toolkit.GetPageCount();
for (int i = 1; i <= pageCount; i++)
{
toolkit.SetPage(i);
toolkit.AddWatermark(watermarkText, 45, 0.5f);
}
toolkit.SaveAs(outputPath);
toolkit.CloseInputFile();
}
}
using ActivePDF.Toolkit;
public void AddWatermark(string inputPath, string outputPath, string watermarkText)
{
Toolkit toolkit = new Toolkit();
if (toolkit.OpenInputFile(inputPath) == 0)
{
int pageCount = toolkit.GetPageCount();
for (int i = 1; i <= pageCount; i++)
{
toolkit.SetPage(i);
toolkit.AddWatermark(watermarkText, 45, 0.5f);
}
toolkit.SaveAs(outputPath);
toolkit.CloseInputFile();
}
}
Imports ActivePDF.Toolkit
Public Sub AddWatermark(inputPath As String, outputPath As String, watermarkText As String)
Dim toolkit As New Toolkit()
If toolkit.OpenInputFile(inputPath) = 0 Then
Dim pageCount As Integer = toolkit.GetPageCount()
For i As Integer = 1 To pageCount
toolkit.SetPage(i)
toolkit.AddWatermark(watermarkText, 45, 0.5F)
Next
toolkit.SaveAs(outputPath)
toolkit.CloseInputFile()
End If
End Sub
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);
}
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);
}
Imports IronPdf
Public Sub AddWatermark(inputPath As String, outputPath As String, watermarkText As String)
Using pdf = PdfDocument.FromFile(inputPath)
pdf.ApplyWatermark(
$"<h1 style='color:lightgray;font-size:72px;'>{watermarkText}</h1>",
rotation:=45,
opacity:=50)
pdf.SaveAs(outputPath)
End Using
End Sub
IronPDF'nin HTML tabanlı işaretleme özelliği, sayfa bazında yineleme olmadan tam tasarım kontrolü için CSS stilini etkinleştirir.
ASP.NET Core Entegrasyonu
Modern web uygulamaları, IronPDF'nin daha temiz entegrasyon modellerinden önemli ölçüde faydalanır.
ActivePDF Deseni:
[HttpPost]
public IActionResult GeneratePdf([FromBody] ReportRequest request)
{
Toolkit toolkit = new Toolkit();
if (toolkit.OpenOutputFile("temp.pdf") == 0)
{
toolkit.AddHTML(request.Html);
toolkit.CloseOutputFile();
byte[] bytes = System.IO.File.ReadAllBytes("temp.pdf");
return File(bytes, "application/pdf", "report.pdf");
}
return BadRequest("PDF generation failed");
}
[HttpPost]
public IActionResult GeneratePdf([FromBody] ReportRequest request)
{
Toolkit toolkit = new Toolkit();
if (toolkit.OpenOutputFile("temp.pdf") == 0)
{
toolkit.AddHTML(request.Html);
toolkit.CloseOutputFile();
byte[] bytes = System.IO.File.ReadAllBytes("temp.pdf");
return File(bytes, "application/pdf", "report.pdf");
}
return BadRequest("PDF generation failed");
}
<HttpPost>
Public Function GeneratePdf(<FromBody> request As ReportRequest) As IActionResult
Dim toolkit As New Toolkit()
If toolkit.OpenOutputFile("temp.pdf") = 0 Then
toolkit.AddHTML(request.Html)
toolkit.CloseOutputFile()
Dim bytes As Byte() = System.IO.File.ReadAllBytes("temp.pdf")
Return File(bytes, "application/pdf", "report.pdf")
End If
Return BadRequest("PDF generation failed")
End Function
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");
}
[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");
}
<HttpPost>
Public Function GeneratePdf(<FromBody> request As ReportRequest) As IActionResult
Dim renderer As New ChromePdfRenderer()
Using pdf = renderer.RenderHtmlAsPdf(request.Html)
Return File(pdf.BinaryData, "application/pdf", "report.pdf")
End Using
End Function
IronPDF, geçici dosyalara ihtiyaç duymadan, PDF ikili verilerini doğrudan bellekten döndürür.
Web Uygulamaları İçin Asenkron Destek
ActivePDF doğrudan asenkron destekten yoksundur. IronPDF, ölçeklenebilir web uygulamaları için gerekli olan tam asenkron/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;
}
using IronPdf;
public async Task<byte[]> GeneratePdfAsync(string html)
{
var renderer = new ChromePdfRenderer();
using var pdf = await renderer.RenderHtmlAsPdfAsync(html);
return pdf.BinaryData;
}
Imports IronPdf
Public Async Function GeneratePdfAsync(html As String) As Task(Of Byte())
Dim renderer As New ChromePdfRenderer()
Using pdf = Await renderer.RenderHtmlAsPdfAsync(html)
Return pdf.BinaryData
End Using
End Function
Bağımlılık Enjeksiyonu Yapılandırması
.NET 6+ uygulamaları için,IronPDFhizmetlerini DI konteynerinize 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;
}
}
// 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;
}
}
Imports Microsoft.Extensions.DependencyInjection
Imports System.Threading.Tasks
' Program.vb (.NET 6+)
builder.Services.AddSingleton(Of ChromePdfRenderer)()
' Service wrapper
Public Interface IPdfService
Function GeneratePdfAsync(html As String) As Task(Of Byte())
Function GeneratePdfFromUrlAsync(url As String) As Task(Of Byte())
End Interface
Public Class IronPdfService
Implements IPdfService
Private ReadOnly _renderer As ChromePdfRenderer
Public Sub New()
_renderer = New ChromePdfRenderer()
_renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
End Sub
Public Async Function GeneratePdfAsync(html As String) As Task(Of Byte()) Implements IPdfService.GeneratePdfAsync
Using pdf = Await _renderer.RenderHtmlAsPdfAsync(html)
Return pdf.BinaryData
End Using
End Function
Public Async Function GeneratePdfFromUrlAsync(url As String) As Task(Of Byte()) Implements IPdfService.GeneratePdfFromUrlAsync
Using pdf = Await _renderer.RenderUrlAsPdfAsync(url)
Return pdf.BinaryData
End Using
End Function
End Class
Hata Yönetimi Geçişi
ActivePDF, tabloya başvuran tamsayı dönüş kodları kullanır. IronPDF, modern istisna işlemeyi kullanır:
ActivePDF Hata Yönetimi:
Toolkit toolkit = new Toolkit();
int result = toolkit.OpenOutputFile(path);
if (result != 0)
{
// Error - need to look up error code
Console.WriteLine($"Error code: {result}");
}
Toolkit toolkit = new Toolkit();
int result = toolkit.OpenOutputFile(path);
if (result != 0)
{
// Error - need to look up error code
Console.WriteLine($"Error code: {result}");
}
Dim toolkit As New Toolkit()
Dim result As Integer = toolkit.OpenOutputFile(path)
If result <> 0 Then
' Error - need to look up error code
Console.WriteLine($"Error code: {result}")
End If
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}");
}
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}");
}
Imports IronPdf.Exceptions
Try
Dim renderer = New ChromePdfRenderer()
Using pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs(path)
End Using
Catch ex As IronPdfProductException
Console.WriteLine($"IronPDF Error: {ex.Message}")
Catch ex As Exception
Console.WriteLine($"General Error: {ex.Message}")
End Try
Performans Optimizasyon İpuçları
Render Instance'ı Yeniden Kullanın
Yeni bir ChromePdfRenderer oluşturmak başlangıç yükü getirir. Yığın 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");
}
var renderer = new ChromePdfRenderer();
foreach (var html in htmlList)
{
using var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs($"output_{i}.pdf");
}
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
For Each html In htmlList
Using pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs($"output_{i}.pdf")
End Using
Next
Web Uygulamalarında Asenkron Kullanımı
ASP.NET Core uygulamaları için, asenkron PDF oluşturma, verimliliği 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");
}
public async Task<IActionResult> GenerateReport()
{
var renderer = new ChromePdfRenderer();
using var pdf = await renderer.RenderHtmlAsPdfAsync(html);
return File(pdf.BinaryData, "application/pdf");
}
Imports System.Threading.Tasks
Imports Microsoft.AspNetCore.Mvc
Public Class ReportController
Inherits Controller
Public Async Function GenerateReport() As Task(Of IActionResult)
Dim renderer As New ChromePdfRenderer()
Using pdf = Await renderer.RenderHtmlAsPdfAsync(html)
Return File(pdf.BinaryData, "application/pdf")
End Using
End Function
End Class
Doğru Kaynak İmhası
Doğru temizlik sağlamak için her zaman using ifadelerini kullanın:
using var pdf = renderer.RenderHtmlAsPdf(html);
return pdf.BinaryData;
using var pdf = renderer.RenderHtmlAsPdf(html);
return pdf.BinaryData;
Resim Sıkıştırma
Çıktı dosyası boyutlarını resim sıkıştırma ile azaltın:
using var pdf = renderer.RenderHtmlAsPdf(html);
pdf.CompressImages(85); // 85% quality
pdf.SaveAs("compressed.pdf");
using var pdf = renderer.RenderHtmlAsPdf(html);
pdf.CompressImages(85); // 85% quality
pdf.SaveAs("compressed.pdf");
Genel Göç Sorunlarını Giderme
Sorun: Sayfa Boyutu Farklılıkları
ActivePDF, noktalar (612x792 = Letter) kullanırken,IronPDFnumaralandırma veya milimetre kullanır:
// ActivePDF: Points
toolkit.SetPageSize(612, 792);
// IronPDF: Use enum
renderer.RenderingOptions.PaperSize = PdfPaperSize.Letter;
// Or custom in mm:
renderer.RenderingOptions.SetCustomPaperSizeInMillimeters(215.9, 279.4);
// ActivePDF: Points
toolkit.SetPageSize(612, 792);
// IronPDF: Use enum
renderer.RenderingOptions.PaperSize = PdfPaperSize.Letter;
// Or custom in mm:
renderer.RenderingOptions.SetCustomPaperSizeInMillimeters(215.9, 279.4);
' ActivePDF: Points
toolkit.SetPageSize(612, 792)
' IronPDF: Use enum
renderer.RenderingOptions.PaperSize = PdfPaperSize.Letter
' Or custom in mm:
renderer.RenderingOptions.SetCustomPaperSizeInMillimeters(215.9, 279.4)
Sorun: CloseOutputFile Eşdeğeri Eksik
IronPDF, açıkça dosya tutacağı yönetimini gerektirmeyen modern bir paradigma kullanır:
// ActivePDF
toolkit.OpenOutputFile(path);
toolkit.AddHTML(html);
toolkit.CloseOutputFile(); // Required!
//IronPDF- no open/close needed
using var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs(path); // 'using' handles cleanup
// ActivePDF
toolkit.OpenOutputFile(path);
toolkit.AddHTML(html);
toolkit.CloseOutputFile(); // Required!
//IronPDF- no open/close needed
using var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs(path); // 'using' handles cleanup
' ActivePDF
toolkit.OpenOutputFile(path)
toolkit.AddHTML(html)
toolkit.CloseOutputFile() ' Required!
' IronPDF - no open/close needed
Using pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs(path) ' 'Using' handles cleanup
End Using
Sorun: PDF Boş Görünüyor
JavaScript'e dayalı içerik boş görünüyorsa, işleme gecikmelerini yapılandırın:
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.WaitFor.RenderDelay(2000);
// Or wait for element:
renderer.RenderingOptions.WaitFor.HtmlElementById("content-loaded");
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.WaitFor.RenderDelay(2000);
// Or wait for element:
renderer.RenderingOptions.WaitFor.HtmlElementById("content-loaded");
Dim renderer = New ChromePdfRenderer()
renderer.RenderingOptions.WaitFor.RenderDelay(2000)
' Or wait for element:
renderer.RenderingOptions.WaitFor.HtmlElementById("content-loaded")
Sorun: CSS/Resimler Yüklenmiyor
Bağıl yol çözümü için temel URL'yi yapılandırın:
renderer.RenderingOptions.BaseUrl = new Uri("https://yourdomain.com/assets/");
renderer.RenderingOptions.BaseUrl = new Uri("https://yourdomain.com/assets/");
renderer.RenderingOptions.BaseUrl = New Uri("https://yourdomain.com/assets/")
Göç Sonrası Kontrol Listesi
Kod göçünü tamamladıktan sonra, aşağıdakileri doğrulayın:
- Tüm mevcut birim ve entegrasyon testlerini ç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 aşama ortamında test edin
- Lisanslamanın doğru çalıştığını doğrulayın (
IronPdf.License.IsLicensed) - Performansı önceki uygulamayla karşılaştırın
- EskiActivePDFyükleme dosyalarını ve DLL referanslarını kaldırın
- CI/CD boru hattı bağımlılıklarını güncelleyin
- Geliştirme ekibiniz içinIronPDFmotiflerini belgeleyin
PDF Çözümünüzü Geleceğe Yönelik Hale Getirin
.NET 10 ufukta ve C# 14 yeni dil özelliklerini getirerek, aktif geliştirimi olan bir .NET PDF kitaplığı seçmek, uygulamalarınızın gelişen çalışma zamanı yetenekleriyle uyumlu kalmasını sağlar. IronPDF'nin en son .NET sürümlerini destekleme taahhüdü, projeleriniz 2025 ve 2026'ya uzandıkça geçiş yatırımlarınızdan kar sağlanması anlamına gelir.
Ek Kaynaklar
ActivePDF'den IronPDF'ye geçiş, daha temiz API'ler, daha iyi .NET entegrasyonu ve aktif uzun vadeli destek ile PDF oluşturma altyapınızı modernize eder. Geçişe yapılan yatırım, geliştirilmiş kod bakımı, asenkron yetenekler ve PDF kitaplığınızın sürekli geliştirilmesine olan güven ile kazanç sağlar.

