PDFreactor'dan IronPDF'e C# ile Nasıl Geçilir
PDFreactor'dan IronPDF'e geçiş, Java bağımlılıklarını ve sunucu altyapısını ortadan kaldırırken , yerel .NET kitaplığı aracılığıyla eşdeğer HTML'den PDF'ye dönüştürme yetenekleri sağlar. Bu kılavuz, Java tabanlı sunucu mimarinizi entegrasyon sorunsuz bir şekilde .NET uygulamalarına entegre eden bir yerel kitaplıkla değiştiren eksiksiz, adım adım bir geçiş yolu sunar.
PDFreactor'dan IronPDF'e Neden Geçmelisiniz
PDFreactor'u Anlama
PDFreactor, çeşitli platformlar arasında entegre olabilen güçlü bir HTML'den PDF'ye dönüştürme sunucusudur. PDFreactor, ticari bir çözüm olarak kendi özel teknolojisini kullanarak HTML ve CSS içeriğini yüksek kaliteli PDF belgelere dönüştürür. Dikkate değer özelliklerinden biri olarak, PDFreactor, karmaşık düzen renderlemesi için güçlü bir aday haline getiren geniş bir CSS özellikler yelpazesini destekler.
Ancak, PDFreactor'un Java'ya bağımlılığı, dağıtım ve entegrasyonu zorlaştırabildiği .NET ortamlarında belirli zorluklar sunar. Java bağımlılığı, genellikle ek entegrasyon çalışması gereken .NET uygulamalarında ek yük yaratır.
Java Bağımlılığı Problemi
PDFreactor'un mimarisi .NET ortamlarında birkaç zorluk yaratır:
-
Java Çalışma Zamanı Gerekli: Tüm sunucularda JRE/JDK yüklemesi gerektirir.
-
Sunucu Mimarisi: Ek altyapı gerektiren ayrı bir hizmet olarak çalışır. Sunucu tabanlı bir çözüm olarak,PDFreactorher dönüştürme için REST API çağrıları gerektirir.
-
Karmaşık Dağıtım: Ağırlıklı olarak .NET ekosisteminde Java bağımlılıklarını yönetmek, yapılandırmayı karmaşıklaştırabilir ve bakım maliyetlerini artırabilir. CI/CD boru hatlarında yönetilmesi gereken iki çalışma zamanı (Java + .NET)
-
Süreçler Arası İletişim: REST API veya soket iletişimi gecikme ekler. Her PDF dönüştürmesi, sunucuya HTTP gidiş-dönüşü gerektirir.
-
Ayrı Lisans Yönetimi: Lisans sunucu örneğine bağlıdır, uygulamaya değil. Sunucu başına lisanslama, Java hizmet örneğine bağlıdır.
- Kaynak İzolasyonu: Ayrı süreç hafıza ve CPU yönetimi. Ek sunucu izlenmesi, ölçeklenmesi ve bakımı gerektirir.
PDFreactor vsIronPDFKarşılaştırması
| Özellik/Aspekt | PDFreactor | IronPDF |
|---|---|---|
| Yerel .NET Kütüphanesi | Hayır (Java tabanlı) | Evet |
| Çalışma Zamanı | Java (harici sunucu) | Yerel .NET (süreç içi) |
| Mimari | REST API hizmeti | NuGet kütüphanesi |
| Dağıtım | Java + sunucu yapılandırmasi | Tekar NuGet paketi |
| Bagimliliklar | JRE + HTTP istemcisi | Kendisi yeterli |
| Gecikme | Ağ gidiş-dönüşü | Doğrudan yöntem çağrıları |
| Çapraz Platform Yeteneği | Evet (Java bağımlı) | Evet (Paketli Chromium) |
| CSS Desteği | CSS3, CSS Sayfalı Medya için gelişmiş destek | Kapsamlı HTML5/CSS3 desteği |
| Dağıtım Karmaşıklığı | Java nedeniyle daha karmaşık | Basit, doğrudan .NET ile entegre olur |
| PDF Manipülasyon Özellikleri | Temel (Sadece Oluşturma) | Kapsamlı, birleştirme, bölme, düzenleme ve açıklama dahil |
PDFreactor'un aksine,IronPDFkendini, Java gibi harici bağımlılıklara ihtiyaç duymadan .NET projelerine sorunsuz bir şekilde entegre olabilen yerel bir .NET kütüphanesi olarak sunar. IronPDF, birleştirilmiş bir Chromium renderleme motoru kullanarak, sadece birkaç satır kodla HTML'yi PDF'ye dönüştürmenizi sağlar.
2025 ve 2026 boyunca .NET 10 ve C# 14 uygulamayı planlayan ekipler için,IronPDFJava sunucu kompleksini ortadan kaldırırken kapsamlı PDF yaşam döngüsü yönetimi sunan bir yerel .NET çözümü sağlar.
Başlamadan Önce
Önkoşullar
- .NET Ortamı: .NET Framework 4.6.2+ veya .NET Core 3.1+ / .NET 5/6/7/8/9+
- NuGet Erişimi: NuGet paketlerini yükleme yeteneği
- IronPDF Lisansı: Lisans anahtarınızı ironpdf.com adresinden edinin
NuGet Paket Değişiklikleri
# RemovePDFreactorNuGet packages
dotnet remove package PDFreactor.NET
dotnet remove package PDFreactor.Native.Windows.x64
# StopPDFreactorserver service (if running locally)
# Windows: net stop PDFreactor
# Linux: sudo systemctl stop pdfreactor
# Install IronPDF
dotnet add package IronPdf
# RemovePDFreactorNuGet packages
dotnet remove package PDFreactor.NET
dotnet remove package PDFreactor.Native.Windows.x64
# StopPDFreactorserver service (if running locally)
# Windows: net stop PDFreactor
# Linux: sudo systemctl stop pdfreactor
# Install IronPDF
dotnet add package IronPdf
Lisans Yapılandırması
PDFreactor (sunucu bazlı):
// License configured on server via config file or command line
// Client connects to licensed server
var pdfReactor = new PDFreactor("http://pdfreactor-server:9423");
// License configured on server via config file or command line
// Client connects to licensed server
var pdfReactor = new PDFreactor("http://pdfreactor-server:9423");
' License configured on server via config file or command line
' Client connects to licensed server
Dim pdfReactor = New PDFreactor("http://pdfreactor-server:9423")
IronPDF (uygulama düzeyinde):
// One-time setup at application startup
IronPdf.License.LicenseKey = "YOUR-IRONPDF-LICENSE-KEY";
// One-time setup at application startup
IronPdf.License.LicenseKey = "YOUR-IRONPDF-LICENSE-KEY";
' One-time setup at application startup
IronPdf.License.LicenseKey = "YOUR-IRONPDF-LICENSE-KEY"
PDFreactorKullanımını Belirleme
# FindPDFreactorusage
grep -r "PDFreactor\|RealObjects\|Configuration.*Document" --include="*.cs" .
# FindCSS Sayfalı Medyarules to convert
grep -r "@page\|counter(page)\|counter(pages)" --include="*.cs" --include="*.css" .
# FindPDFreactorusage
grep -r "PDFreactor\|RealObjects\|Configuration.*Document" --include="*.cs" .
# FindCSS Sayfalı Medyarules to convert
grep -r "@page\|counter(page)\|counter(pages)" --include="*.cs" --include="*.css" .
API Referansının Tamamı
Namespace Değişiklikleri
// Before: PDFreactor
using RealObjects.PDFreactor;
using System.IO;
// After: IronPDF
using IronPdf;
using IronPdf.Rendering;
// Before: PDFreactor
using RealObjects.PDFreactor;
using System.IO;
// After: IronPDF
using IronPdf;
using IronPdf.Rendering;
Imports IronPdf
Imports IronPdf.Rendering
Imports System.IO
Temel Sınıf Eşlemeleri
| PDFreactor | IronPDF |
|---|---|
PDFreactor |
ChromePdfRenderer |
Configuration |
ChromePdfRenderOptions |
Result |
PdfDocument |
config.Document = html |
renderer.RenderHtmlAsPdf(html) |
result.Document (byte[]) |
pdf.BinaryData |
Yapılandırma Özellikleri Eşlemeleri
| PDFreactor Konfigürasyonu | IronPDF RenderingOptions |
|---|---|
config.Document = html |
renderer.RenderHtmlAsPdf(html) |
config.Document = url |
renderer.RenderUrlAsPdf(url) |
config.PageFormat = PageFormat.A4 |
RenderingOptions.PaperSize = PdfPaperSize.A4 |
config.PageOrientation |
RenderingOptions.PaperOrientation |
config.PageMargins |
RenderingOptions.MarginTop/Bottom/Left/Right |
config.EnableJavaScript = true |
RenderingOptions.EnableJavaScript = true |
config.AddUserStyleSheet(css) |
CSS'i HTML'ye Göm |
config.Title |
pdf.MetaData.Title |
config.Encryption |
pdf.SecuritySettings |
PDFreactor'da Bulunmayan Yeni Özellikler
| IronPDFÖzelliği | Tanım |
|---|---|
PdfDocument.Merge() |
Birden çok PDF'yi birleştirme |
pdf.ApplyWatermark() |
Filigran ekleme |
pdf.ExtractAllText() |
Metin çıkarmak |
pdf.Form |
Form doldurma |
pdf.Sign() |
Dijital imzalar |
Kod Geçiş Örnekleri
Örnek 1: HTML Dizesini PDF'ye Dönüştürme
Önce (PDFreactor):
// NuGet: Install-Package PDFreactor.Native.Windows.x64
using RealObjects.PDFreactor;
using System.IO;
class Program
{
static void Main()
{
PDFreactorpdfReactor = new PDFreactor();
string html = "<html><body><h1>Hello World</h1></body></html>";
Configuration config = new Configuration();
config.Document = html;
Result result = pdfReactor.Convert(config);
File.WriteAllBytes("output.pdf", result.Document);
}
}
// NuGet: Install-Package PDFreactor.Native.Windows.x64
using RealObjects.PDFreactor;
using System.IO;
class Program
{
static void Main()
{
PDFreactorpdfReactor = new PDFreactor();
string html = "<html><body><h1>Hello World</h1></body></html>";
Configuration config = new Configuration();
config.Document = html;
Result result = pdfReactor.Convert(config);
File.WriteAllBytes("output.pdf", result.Document);
}
}
Imports RealObjects.PDFreactor
Imports System.IO
Module Program
Sub Main()
Dim pdfReactor As New PDFreactor()
Dim html As String = "<html><body><h1>Hello World</h1></body></html>"
Dim config As New Configuration()
config.Document = html
Dim result As Result = pdfReactor.Convert(config)
File.WriteAllBytes("output.pdf", result.Document)
End Sub
End Module
Sonra (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string html = "<html><body><h1>Hello World</h1></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string html = "<html><body><h1>Hello World</h1></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim html As String = "<html><body><h1>Hello World</h1></body></html>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
End Sub
End Class
Temel fark, mimari desendir. PDFreactor, PDFreactor örneğini oluşturmayı (Java sunucusuna bağlanan), ayarları ve HTML içeriğini tutmak için ayrı bir Configuration nesnesini, Convert() çağrısını (bir Result nesnesi döndüren) ve sonunda result.Document baytlarını File.WriteAllBytes() kullanarak dosyaya yazmayı gerektirir.
IronPDF, bir ChromePdfRenderer oluşturmayı, HTML dizisini doğrudan RenderHtmlAsPdf() ile çağırmayı ve döndürülen PdfDocument üzerindeki yerleşik SaveAs() yöntemini kullanmayı basitleştirir. Sunucu bağlantısı yok, yapılandırma nesnesi yok, manuel bayt işleme yok. Kapsamlı örnekler için HTML'den PDF'e döndürme belgesine bakın.
Örnek 2: URL'den PDF'e Dönüştürme
Önce (PDFreactor):
// NuGet: Install-Package PDFreactor.Native.Windows.x64
using RealObjects.PDFreactor;
using System.IO;
class Program
{
static void Main()
{
PDFreactorpdfReactor = new PDFreactor();
Configuration config = new Configuration();
config.Document = "https://www.example.com";
Result result = pdfReactor.Convert(config);
File.WriteAllBytes("webpage.pdf", result.Document);
}
}
// NuGet: Install-Package PDFreactor.Native.Windows.x64
using RealObjects.PDFreactor;
using System.IO;
class Program
{
static void Main()
{
PDFreactorpdfReactor = new PDFreactor();
Configuration config = new Configuration();
config.Document = "https://www.example.com";
Result result = pdfReactor.Convert(config);
File.WriteAllBytes("webpage.pdf", result.Document);
}
}
Imports RealObjects.PDFreactor
Imports System.IO
Class Program
Shared Sub Main()
Dim pdfReactor As New PDFreactor()
Dim config As New Configuration()
config.Document = "https://www.example.com"
Dim result As Result = pdfReactor.Convert(config)
File.WriteAllBytes("webpage.pdf", result.Document)
End Sub
End Class
Sonra (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
pdf.SaveAs("webpage.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
pdf.SaveAs("webpage.pdf");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderUrlAsPdf("https://www.example.com")
pdf.SaveAs("webpage.pdf")
End Sub
End Class
PDFreactor hem HTML dizelerini hem de URL'leri otomatik olarak belirleyerek aynı config.Document özelliğini kullanır. IronPDF, HTML dizeleri için RenderHtmlAsPdf() ve URL'ler için RenderUrlAsPdf() açık yöntemler sunar. Bu açık yaklaşım, kodun netliğini ve IntelliSense desteğini artırır. Detayli bilgi icin eğitimlerimize bakin.
Örnek 3: Sayfa Numaralı Başlıklar ve Altbilgiler
Önce (PDFreactor):
// NuGet: Install-Package PDFreactor.Native.Windows.x64
using RealObjects.PDFreactor;
using System.IO;
class Program
{
static void Main()
{
PDFreactorpdfReactor = new PDFreactor();
string html = "<html><body><h1>Document with Headers</h1><p>Content here</p></body></html>";
Configuration config = new Configuration();
config.Document = html;
config.AddUserStyleSheet("@page { @top-center { content: 'Header Text'; } @bottom-center { content: 'Page ' counter(page); } }");
Result result = pdfReactor.Convert(config);
File.WriteAllBytes("document.pdf", result.Document);
}
}
// NuGet: Install-Package PDFreactor.Native.Windows.x64
using RealObjects.PDFreactor;
using System.IO;
class Program
{
static void Main()
{
PDFreactorpdfReactor = new PDFreactor();
string html = "<html><body><h1>Document with Headers</h1><p>Content here</p></body></html>";
Configuration config = new Configuration();
config.Document = html;
config.AddUserStyleSheet("@page { @top-center { content: 'Header Text'; } @bottom-center { content: 'Page ' counter(page); } }");
Result result = pdfReactor.Convert(config);
File.WriteAllBytes("document.pdf", result.Document);
}
}
Imports RealObjects.PDFreactor
Imports System.IO
Module Program
Sub Main()
Dim pdfReactor As New PDFreactor()
Dim html As String = "<html><body><h1>Document with Headers</h1><p>Content here</p></body></html>"
Dim config As New Configuration()
config.Document = html
config.AddUserStyleSheet("@page { @top-center { content: 'Header Text'; } @bottom-center { content: 'Page ' counter(page); } }")
Dim result As Result = pdfReactor.Convert(config)
File.WriteAllBytes("document.pdf", result.Document)
End Sub
End Module
Sonra (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
{
CenterText = "Header Text"
};
renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
{
CenterText = "Page {page}"
};
string html = "<html><body><h1>Document with Headers</h1><p>Content here</p></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("document.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
{
CenterText = "Header Text"
};
renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
{
CenterText = "Page {page}"
};
string html = "<html><body><h1>Document with Headers</h1><p>Content here</p></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("document.pdf");
}
}
Imports IronPdf
Imports IronPdf.Rendering
Imports System
Module Program
Sub Main()
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.TextHeader = New TextHeaderFooter() With {
.CenterText = "Header Text"
}
renderer.RenderingOptions.TextFooter = New TextHeaderFooter() With {
.CenterText = "Page {page}"
}
Dim html As String = "<html><body><h1>Document with Headers</h1><p>Content here</p></body></html>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("document.pdf")
End Sub
End Module
Bu örnek, en belirgin söz dizimi farkını gösterir. PDFreactor, @page kuralları, @bottom-center bölgeleri ve counter(page) yoluyla enjekte edilen sayfa numaraları içinCSS Sayfalı Medyasöz dizimini kullanır.
IronPDF, TextHeaderFooter nesnelerinin RenderingOptions.TextHeader ve RenderingOptions.TextFooter'ya atandığı yerel bir .NET API kullanır. Sayfa numaraları, CSS counter(page) yerine {page} yer tutucusunu kullanır. IronPDF'nin ayrıca üstbilgi/altbilgi sınıfları için IronPdf.Rendering ad alanını içe aktarmayı gerektirdiğini unutmayın.
Kritik Geçiş Notları
Sunucu Gerekmiyor
IronPDF süreci icinde çalışır—yapılandırmak icin Java sunucusu gerekmez:
// PDFreactor: Requires server connection
var pdfReactor = new PDFreactor("http://localhost:9423");
// IronPDF: No server URL needed
var renderer = new ChromePdfRenderer();
// PDFreactor: Requires server connection
var pdfReactor = new PDFreactor("http://localhost:9423");
// IronPDF: No server URL needed
var renderer = new ChromePdfRenderer();
' PDFreactor: Requires server connection
Dim pdfReactor = New PDFreactor("http://localhost:9423")
' IronPDF: No server URL needed
Dim renderer = New ChromePdfRenderer()
CSS Paged Media'danIronPDFAPI'ye
CSS @page kurallarını RenderingOptions ile değiştirin:
//PDFreactorCSS: @page { @bottom-center { content: 'Page ' counter(page); } }
//IronPDFequivalent:
renderer.RenderingOptions.TextFooter = new TextHeaderFooter
{
CenterText = "Page {page}"
};
//PDFreactorCSS: @page { @bottom-center { content: 'Page ' counter(page); } }
//IronPDFequivalent:
renderer.RenderingOptions.TextFooter = new TextHeaderFooter
{
CenterText = "Page {page}"
};
'PDFreactorCSS: @page { @bottom-center { content: 'Page ' counter(page); } }
'IronPDFequivalent:
renderer.RenderingOptions.TextFooter = New TextHeaderFooter With {
.CenterText = "Page {page}"
}
Sayfa Numarası Yer Tutucu Sözdizimi
//PDFreactorCSS: counter(page)
// IronPDF: {page}
//PDFreactorCSS: counter(pages)
// IronPDF: {total-pages}
//PDFreactorCSS: counter(page)
// IronPDF: {page}
//PDFreactorCSS: counter(pages)
// IronPDF: {total-pages}
'PDFreactorCSS: counter(page)
' IronPDF: {page}
'PDFreactorCSS: counter(pages)
' IronPDF: {total-pages}
Sonuç İşleme Değişikliği
Yapılandırma + Sonuç deseni doğrudan PdfDocument'e dönüşür:
// PDFreactor: Configuration → Convert → Result → bytes
Result result = pdfReactor.Convert(config);
byte[] bytes = result.Document;
File.WriteAllBytes("output.pdf", bytes);
// IronPDF: Direct PdfDocument with built-in methods
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
// Or: byte[] bytes = pdf.BinaryData;
// PDFreactor: Configuration → Convert → Result → bytes
Result result = pdfReactor.Convert(config);
byte[] bytes = result.Document;
File.WriteAllBytes("output.pdf", bytes);
// IronPDF: Direct PdfDocument with built-in methods
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
// Or: byte[] bytes = pdf.BinaryData;
' PDFreactor: Configuration → Convert → Result → bytes
Dim result As Result = pdfReactor.Convert(config)
Dim bytes As Byte() = result.Document
File.WriteAllBytes("output.pdf", bytes)
' IronPDF: Direct PdfDocument with built-in methods
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
' Or: Dim bytes As Byte() = pdf.BinaryData
Kenar Boşluk Birimleri Değişikliği
PDFreactor dizgeleri kullanır;IronPDFmilimetre kullanır:
// PDFreactor: config.PageMargins.Top = "1in"
// IronPDF: renderer.RenderingOptions.MarginTop = 25.4 // 1 inch in mm
// PDFreactor: config.PageMargins.Top = "1in"
// IronPDF: renderer.RenderingOptions.MarginTop = 25.4 // 1 inch in mm
' PDFreactor: config.PageMargins.Top = "1in"
' IronPDF: renderer.RenderingOptions.MarginTop = 25.4 ' 1 inch in mm
Geçiş Sonrası Yeni Özellikler
IronPDF'e geçtikten sonra, PDFreactor'un sağlayamayacağı yetenekler kazanırsınız:
PDF Birleştirme
var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
Dim pdf1 = PdfDocument.FromFile("document1.pdf")
Dim pdf2 = PdfDocument.FromFile("document2.pdf")
Dim merged = PdfDocument.Merge(pdf1, pdf2)
merged.SaveAs("merged.pdf")
Filigranlar
pdf.ApplyWatermark("<h2 style='color:red;'>CONFIDENTIAL</h2>");
pdf.ApplyWatermark("<h2 style='color:red;'>CONFIDENTIAL</h2>");
pdf.ApplyWatermark("<h2 style='color:red;'>CONFIDENTIAL</h2>")
Metin Çıkarma
string text = pdf.ExtractAllText();
string text = pdf.ExtractAllText();
Dim text As String = pdf.ExtractAllText()
Şifre Koruması
pdf.SecuritySettings.UserPassword = "userpassword";
pdf.SecuritySettings.OwnerPassword = "ownerpassword";
pdf.SecuritySettings.UserPassword = "userpassword";
pdf.SecuritySettings.OwnerPassword = "ownerpassword";
pdf.SecuritySettings.UserPassword = "userpassword"
pdf.SecuritySettings.OwnerPassword = "ownerpassword"
Özellik Karsilastirma Ozeti
| Özellik | PDFreactor | IronPDF |
|---|---|---|
| HTML'den PDF'ye | ✓ | ✓ |
| URL'den PDF'ye | ✓ | ✓ |
| Üstbilgi/Altbilgi | CSS Sayfalı Medya | Yerel API |
| Sayfa Ayarları | ✓ | ✓ |
| JavaScript Support | ✓ | ✓ |
| Yerel .NET | ✗ | ✓ |
| İçe Süreç | ✗ | ✓ |
| PDF'leri birleştir | ✗ | ✓ |
| PDF'leri Böl | ✗ | ✓ |
| Filigranlar | ✗ | ✓ |
| Metin Çıkarma | ✗ | ✓ |
| Form Doldurma | ✗ | ✓ |
| Dijital İmzalar | ✗ | ✓ |
Goc Kontrol Listesi
Geçiş Öncesi
- Kod tabanındaki tümPDFreactorkullanımlarını envanterleyin
- Kullanılan tümCSS Sayfalı Medyakurallarını belgeleyin
- Tüm yapılandırma ayarlarını (kenar boşlukları, sayfa boyutu, JavaScript) not edin -IronPDFlisans anahtarı depolama planı yapın (çevre değişkenleri önerilir)
- ÖnceIronPDFdeneme lisansı ile test edin
Paket Değişiklikleri
PDFreactor.NETNuGet paketini kaldırınPDFreactor.Native.Windows.x64NuGet paketini kaldırınIronPdfNuGet paketini yükleyin:dotnet add package IronPdf
Kod Değişiklikleri
- Ad alanı içe aktarmalarını güncelleyin (
using RealObjects.PDFreactor;→using IronPdf;) - Üstbilgi/altbilgi sınıfları için
using IronPdf.Rendering;ekleyin PDFreactorsınıfınıChromePdfRendererile değiştirinConfigurationnesneleriniRenderingOptionsözelliklerine dönüştürünconfig.Document = html'irenderer.RenderHtmlAsPdf(html)ile değiştirinconfig.Document = url'irenderer.RenderUrlAsPdf(url)ile değiştirinFile.WriteAllBytes(path, result.Document)'ipdf.SaveAs(path)ile değiştirin- CSS
@pagekurallarınıTextFooternesnelerine dönüştürün - Sayfa numaraları yer tutucularını güncelleyin (
counter(page)→{page}) - Kenarlık birimlerini dizelerden milimetrelere dönüştürün
Altyapı Geçişi
- Java çalışma zamanı gereksinimini kaldırın -PDFreactorsunucusunu devre dışı bırakın
- Docker/dağıtım yapılandırmalarını güncelleyin
- CI/CD hatlarını güncelleyin
Geçişten Sonra
- PDF çıktı kalitesinin beklentilere uygun olduğunu test edin
- Başlık/alt bilgi görüntülemeyi doğrulayın
- Kullanılıyorsa JavaScript yürütmesini doğrulayın Gerektiğinde yeni yetenekler (birleştirme, filigranlar, güvenlik) ekleyin

