PDFreactor'dan IronPDF'e C# ile Nasıl Geçilir
PDFreactor'den IronPDF'e geçmek, Java bağımlılıklarını ve sunucu altyapısını ortadan kaldırırken, yerel .NET kütüphanesi aracılığıyla eşdeğer HTML-PDF dönüşüm yetenekleri sağlar. Bu kılavuz, Java tabanlı sunucu mimarinizi, .NET uygulamalarına sorunsuz bir şekilde entegre edilen işlem içi bir kütüphaneyle değiştiren eksiksiz, adım adım bir geçiş yolu sunar.
Neden PDFreactor'den IronPDF'e Geçmek Gerekiyor
PDFreactor'ü Anlamak
PDFreactor, çeşitli platformlarda entegre olan güçlü bir HTML-PDF dönüştürme sunucusudur. Ticari bir çözüm olarak, PDFreactor, HTML ve CSS içeriğini yüksek kaliteli PDF belgelerine dönüştürmek için kendi teknolojisinden faydalanır. Dikkate değer nitelikleri arasında, PDFreactor, karmaşık düzenleri işlemek için güçlü bir aday yaparak geniş bir CSS özellikleri yelpazesini destekler.
Ancak, PDFreactor'un Java'ya bağımlılığı, yerel olmayan doğasının dağıtım sürecini ve entegrasyonunu zorlaştırabileceği .NET ortamlarında belli zorluklar sunar. Java bağımlılığı, genellikle ek entegrasyon çalışması gerektiren .NET uygulamalarında ek yük oluşturur.
Java Bağımlılığı Sorunu
PDFreactor'un mimarisi, .NET ortamlarda bazı zorluklar oluşturur:
-
Java Çalışma Zamanı Gerekliliği: Tüm sunucularda JRE/JDK kurulumu gerektirir.
-
Sunucu Mimarisi: Ekstra altyapı gerektiren ayrı bir hizmet olarak çalışır. Sunucu tabanlı bir çözüm olarak,PDFreactorher dönüşüm 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 kurulumu zorlaştırabilir ve bakım maliyetlerini artırabilir. CI/CD boru hatlarında iki çalışma zamanı (Java + .NET) yönetilmelidir.
-
İşlem Arası İletişim: REST API veya socket iletişimi gecikmeyi artırır. Her PDF dönüşümü sunucuya HTTP gidiş-dönüş yolculuğu gerektirir.
-
Ayrı Lisans Yönetimi: Lisans uygulama yerine sunucu örneğine bağlıdır. Java hizmet örneğine bağlı sunucu başına lisanslama.
- Kaynak İzolasyonu: Ayrı işlem belleği ve CPU yönetimi. Ek sunucu izleme, ölçeklendirme ve bakım gerektirir.
PDFreactor vs IronPDF Karşılaştırması
| Özellik/Aspekt | PDFreactor | IronPDF |
|---|---|---|
| Yerel .NET Kütüphanesi | Hayır (Java tabanlı) | Evet |
| Çalışma Ortamı | Java (harici sunucu) | Yerel .NET (iç işlem) |
| Mimari | REST API hizmeti | NuGet kütüphanesi |
| Dağıtım | Java + sunucu yapılandırması | Tek bir NuGet paketi |
| Bağımlılıklar | JRE + HTTP istemcisi | Kendi içinde tamamlanmış |
| Gecikme | Ağ turu | Doğrudan yöntem çağrıları |
| Çapraz Platform Yeteneği | Evet (Java-bağımlı) | Evet (Paketlenmiş Chromium) |
| CSS Desteği | CSS3,CSS Paged Mediaiçin gelişmiş destek | Kapsamlı HTML5/CSS3 desteği |
| Dağıtım Karmaşıklığı | Java nedeniyle daha karmaşık | Basit, .NET ile doğrudan entegrasyon |
| PDF Manipülasyon Özellikleri | Temel (Sadece Üretim) | Geniş, birleştirme, bölme, düzenleme ve açıklama dahil |
PDFreactor'e kıyasla IronPDF, .NET projelerine harici bağımlılıklar olmadan sorunsuz bir şekilde entegre edilmek üzere özel olarak tasarlanmış yerel bir .NET kütüphanesi olarak kendini sunar. IronPDF, HTML'yi PDF'ye dönüştürmek için sadece birkaç satır kodla yerleşik Chromium işleme motorunu kullanır.
Modern .NET sürümlerini benimseyen ekipler için,IronPDF kapsamlı PDF yaşam döngüsü yönetimi sunarken Java sunucu karmaşıklığını ortadan kaldıran yerel .NET çözümü sağlar.
Başlamadan Önce
Ön Koşullar
- .NET Ortamı: .NET Framework 4.6.2+ veya .NET Core 3.1+ / .NET 5/6/7/8/9+
- NuGet Erişimi: NuGet paketlerini yükleyebilme
- IronPDF Lisansı: Lisans anahtarınızı ironpdf.com adresinden edinin
NuGet Paket Değişiklikleri
# PDFreactor is NOT distributed via NuGet. The .NET wrapper ships as
# PDFreactor.dll inside <PDFreactor-install>/clients/netstandard2/bin/
# (or netframework40/bin for older .NET Framework projects).
# Remove the assembly reference from your .csproj.
# Stop PDFreactor Web Service (Java/Jetty, default port 9423)
# Windows: net stop PDFreactor
# Linux: sudo systemctl stop pdfreactor
# Install IronPDF
dotnet add package IronPdf
# PDFreactor is NOT distributed via NuGet. The .NET wrapper ships as
# PDFreactor.dll inside <PDFreactor-install>/clients/netstandard2/bin/
# (or netframework40/bin for older .NET Framework projects).
# Remove the assembly reference from your .csproj.
# Stop PDFreactor Web Service (Java/Jetty, default port 9423)
# Windows: net stop PDFreactor
# Linux: sudo systemctl stop pdfreactor
# Install IronPDF
dotnet add package IronPdf
Lisans Yapılandırması
PDFreactor (sunucu tabanlı):
// License configured on thePDFreactorWeb Service via config file or command line.
// The .NET client (RealObjects.PDFreactor.Webservice.Client) connects to that licensed service.
var pdfReactor = new PDFreactor("http://pdfreactor-server:9423/service/rest");
// License configured on thePDFreactorWeb Service via config file or command line.
// The .NET client (RealObjects.PDFreactor.Webservice.Client) connects to that licensed service.
var pdfReactor = new PDFreactor("http://pdfreactor-server:9423/service/rest");
' License configured on thePDFreactorWeb Service via config file or command line.
' The .NET client (RealObjects.PDFreactor.Webservice.Client) connects to that licensed service.
Dim pdfReactor = New PDFreactor("http://pdfreactor-server:9423/service/rest")
IronPDF (uygulama düzeyi):
// 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"
PDFreactor Kullanımını Belirleme
# Find PDFreactor usage
grep -r "PDFreactor\|RealObjects\|Configuration.*Document" --include="*.cs" .
# Find CSS Paged Media rules to convert
grep -r "@page\|counter(page)\|counter(pages)" --include="*.cs" --include="*.css" .
# Find PDFreactor usage
grep -r "PDFreactor\|RealObjects\|Configuration.*Document" --include="*.cs" .
# Find CSS Paged Media rules to convert
grep -r "@page\|counter(page)\|counter(pages)" --include="*.cs" --include="*.css" .
Tam API Referansı
Ad Alanı Değişiklikleri
// Before:PDFreactor(Web Service client)
using RealObjects.PDFreactor.Webservice.Client;
using System.IO;
// After: IronPDF
using IronPdf;
using IronPdf.Rendering;
// Before:PDFreactor(Web Service client)
using RealObjects.PDFreactor.Webservice.Client;
using System.IO;
// After: IronPDF
using IronPdf;
using IronPdf.Rendering;
Imports RealObjects.PDFreactor.Webservice.Client
Imports System.IO
' After: IronPDF
Imports IronPdf
Imports IronPdf.Rendering
Çekirdek Sınıf Eşlemeleri
| PDFreactor | IronPDF |
|---|---|
PDFreactor |
ChromePdfRenderer |
Configuration |
ChromePdfRenderOptions |
Result |
PdfDocument |
config.Document = html |
renderer.RenderHtmlAsPdf(html) |
result.Document (byte[]) |
pdf.BinaryData |
Konfigürasyon Özellikleri Eşlemeleri
| PDFreactorKonfigü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.UserStyleSheets = new List<Resource>{...} |
CSS'i HTML'e göm |
config.Title |
pdf.MetaData.Title |
config.Encryption |
pdf.SecuritySettings |
PDFreactor'de Mevcut Olmayan Yeni Özellikler
| IronPDF Özelliği | Açıklama |
|---|---|
PdfDocument.Merge() |
Birden fazla PDF'yi birleştirme |
pdf.ApplyWatermark() |
Filigran ekleme |
pdf.ExtractAllText() |
Metin çıkarma |
pdf.Form |
Form doldurma |
pdf.Sign() |
Dijital imzalar |
Kod Göç Örnekleri
Örnek 1: HTML Metin Dizesi'ni PDF'e Dönüşüm
Öncesi (PDFreactor):
//PDFreactor.NET wrapper is a Web Service client (no NuGet package).
// Reference PDFreactor.dll from <PDFreactor-install>/clients/netstandard2/bin/
// and run thePDFreactorWeb Service (Java/Jetty) locally or remotely.
using RealObjects.PDFreactor.Webservice.Client;
using System.IO;
class Program
{
static void Main()
{
PDFreactor pdfReactor = 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);
}
}
//PDFreactor.NET wrapper is a Web Service client (no NuGet package).
// Reference PDFreactor.dll from <PDFreactor-install>/clients/netstandard2/bin/
// and run thePDFreactorWeb Service (Java/Jetty) locally or remotely.
using RealObjects.PDFreactor.Webservice.Client;
using System.IO;
class Program
{
static void Main()
{
PDFreactor pdfReactor = 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.Webservice.Client
Imports System.IO
Class Program
Shared 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 Class
Sonrası (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, (Java sunucusuna bağlanan) bir PDFreactor örneği oluşturmayı, ayarları ve HTML içeriğini tutmak için ayrı bir Configuration nesnesini oluşturmayı, bir Result nesnesi döndüren Convert() çağrısını ve son olarak result.Document baytlarını dosyaya yazmak için File.WriteAllBytes() kullanmayı gerektirir.
IronPDF, bir ChromePdfRenderer oluşturmayı, HTML dizgisiyle doğrudan RenderHtmlAsPdf() çağrısını ve döndürülen PdfDocument üzerinde yerleşik SaveAs() yöntemini kullanmayı basitleştirir. Sunucu bağlantısı, yapılandırma nesnesi ve manuel bayt işleme gerektirmez. Kapsamlı örnekler için HTML'den PDF'e dönüşüm belgelerine bakın.
Örnek 2: URL'den PDF'ye Dönüştürme
Öncesi (PDFreactor):
//PDFreactor.NET wrapper is a Web Service client (no NuGet package).
// Reference PDFreactor.dll from <PDFreactor-install>/clients/netstandard2/bin/
// and run thePDFreactorWeb Service (Java/Jetty) locally or remotely.
using RealObjects.PDFreactor.Webservice.Client;
using System.IO;
class Program
{
static void Main()
{
PDFreactor pdfReactor = new PDFreactor();
Configuration config = new Configuration();
config.Document = "https://www.example.com";
Result result = pdfReactor.Convert(config);
File.WriteAllBytes("webpage.pdf", result.Document);
}
}
//PDFreactor.NET wrapper is a Web Service client (no NuGet package).
// Reference PDFreactor.dll from <PDFreactor-install>/clients/netstandard2/bin/
// and run thePDFreactorWeb Service (Java/Jetty) locally or remotely.
using RealObjects.PDFreactor.Webservice.Client;
using System.IO;
class Program
{
static void Main()
{
PDFreactor pdfReactor = 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.Webservice.Client
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
Sonrası (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, türü otomatik olarak belirterek hem HTML dizgileri hem de URL'ler için aynı config.Document özelliğini kullanır. IronPDF, HTML dizgileri için RenderHtmlAsPdf() ve URL'ler için RenderUrlAsPdf() gibi açık yöntemler sağlar. Bu açık yaklaşım, kod netliğini ve IntelliSense desteğini geliştirir. Daha fazla bilgiyi kılavuzlarımızda öğrenin.
Örnek 3: Sayfa Numaraları ile Başlıklar ve Alt Bilgiler
Öncesi (PDFreactor):
//PDFreactor.NET wrapper is a Web Service client (no NuGet package).
// Reference PDFreactor.dll from <PDFreactor-install>/clients/netstandard2/bin/
// and run thePDFreactorWeb Service (Java/Jetty) locally or remotely.
using RealObjects.PDFreactor.Webservice.Client;
using System.IO;
class Program
{
static void Main()
{
PDFreactor pdfReactor = 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.UserStyleSheets = new System.Collections.Generic.List<Resource>
{
new Resource { Content = "@page { @top-center { content: 'Header Text'; } @bottom-center { content: 'Page ' counter(page); } }" }
};
Result result = pdfReactor.Convert(config);
File.WriteAllBytes("document.pdf", result.Document);
}
}
//PDFreactor.NET wrapper is a Web Service client (no NuGet package).
// Reference PDFreactor.dll from <PDFreactor-install>/clients/netstandard2/bin/
// and run thePDFreactorWeb Service (Java/Jetty) locally or remotely.
using RealObjects.PDFreactor.Webservice.Client;
using System.IO;
class Program
{
static void Main()
{
PDFreactor pdfReactor = 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.UserStyleSheets = new System.Collections.Generic.List<Resource>
{
new Resource { Content = "@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.Webservice.Client
Imports System.IO
Class Program
Shared 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.UserStyleSheets = New System.Collections.Generic.List(Of Resource) From {
New Resource With {.Content = "@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 Class
Sonrası (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 önemli sözdizimi farkını gösterir. PDFreactor, @page kuralları, @bottom-center bölgeleri ve counter(page) ile UserStyleSheets listesindeki Resource öğeleri aracılığıyla enjekte edilen sayfa numaraları içinCSS Paged Mediasöz dizimini kullanır.
IronPDF, TextHeaderFooter nesnelerinin RenderingOptions.TextHeader ve RenderingOptions.TextFooter atanarak kullanıldığı yerel .NET API'sini kullanır. Sayfa numaraları CSS counter(page) yerine {page} yer tutucusunu kullanır.
Kritik Taşıma Notları
Sunucu Gerekli Değil
IronPDF, işlem içi çalışır—yapılandırılacak Java sunucusu yok:
// PDFreactor: Requires the Web Service running on a reachable host
var pdfReactor = new PDFreactor("http://localhost:9423/service/rest");
// IronPDF: No server URL needed
var renderer = new ChromePdfRenderer();
// PDFreactor: Requires the Web Service running on a reachable host
var pdfReactor = new PDFreactor("http://localhost:9423/service/rest");
// IronPDF: No server URL needed
var renderer = new ChromePdfRenderer();
' PDFreactor: Requires the Web Service running on a reachable host
Dim pdfReactor = New PDFreactor("http://localhost:9423/service/rest")
' IronPDF: No server URL needed
Dim renderer = New ChromePdfRenderer()
CSS Paged Media'dan IronPDF API'sine
CSS @page kurallarını RenderingOptions ile değiştirin:
//PDFreactorCSS: @page { @bottom-center { content: 'Page ' counter(page); } }
//IronPDF equivalent:
renderer.RenderingOptions.TextFooter = new TextHeaderFooter
{
CenterText = "Page {page}"
};
//PDFreactorCSS: @page { @bottom-center { content: 'Page ' counter(page); } }
//IronPDF equivalent:
renderer.RenderingOptions.TextFooter = new TextHeaderFooter
{
CenterText = "Page {page}"
};
'PDFreactorCSS: @page { @bottom-center { content: 'Page ' counter(page); } }
'IronPDF equivalent:
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ç Yönetimi 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 dizeler kullanır;IronPDF milimetre 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çiş yaptıktan sonra, PDFreactor'un sağlayamadığı yetenekleri elde edersiniz:
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 Koruma
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 Karşılaştırması Özeti
| Özellik | PDFreactor | IronPDF |
|---|---|---|
| HTML'den PDF'ye | ✓ | ✓ |
| URL'yi PDF'ye çevir | ✓ | ✓ |
| Başlıklar/Altbilgiler | CSS Paged Media | Yerel API |
| Sayfa Ayarları | ✓ | ✓ |
| JavaScript Desteği | ✓ | ✓ |
| Yerel .NET | ✗ | ✓ |
| İşlem İçi | ✗ | ✓ |
| PDF'leri birleştir | ✗ | ✓ |
| PDF Ayırma | ✗ | ✓ |
| Filigranlar | ✗ | ✓ |
| Metin Çıkarma | ✗ | ✓ |
| Form Doldurma | ✗ | ✓ |
| Dijital İmzalar | ✗ | ✓ |
Geçiş Kontrol Listesi
Öncesi-Geçiş
- Kod tabanındaki tümPDFreactorkullanımlarını dökün
- Kullanılan tümCSS Paged Mediakurallarını belgeler
- Tüm yapılandırma ayarlarını (kenar boşlukları, sayfa boyutu, JavaScript) not edin -IronPDF lisans anahtarı saklama planı yapın (ortam değişkenleri önerilir)
- İlk önce IronPDF deneme lisansı ile test edin
Paket Değişiklikleri
- Doğrudan
PDFreactor.dllderleme referansını.csprojdosyanızdan kaldırın -PDFreactorWeb Hizmetini (Java/Jetty) devre dışı bırakın IronPdfNuGet paketini yükleyin:dotnet add package IronPdf
Kod Değişiklikleri
- İsim alanı ithalatlarını güncelleyin (
using RealObjects.PDFreactor.Webservice.Client;→using IronPdf;) - Başlık/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öğesinirenderer.RenderHtmlAsPdf(html)ile değiştirinconfig.Document = urlöğesinirenderer.RenderUrlAsPdf(url)ile değiştirinFile.WriteAllBytes(path, result.Document)öğesinipdf.SaveAs(path)ile değiştirin- CSS
@pagekurallarınıTextFooternesnelerine dönüştürün - Sayfa numarası yer tutucularını güncelleyin (
counter(page)→{page}) - Kenar boşluk birimlerini dizelerden milimetrelere dönüştürün
Altyapı Geçişi
- Java çalışma zamanı gerekliliğini kaldırın -PDFreactorsunucusunu devre dışı bırakın
- Docker/dağıtım yapılandırmalarını güncelleyin
- CI/CD yapılarını güncelleyin
Geçiş Sonrası
- PDF çıktısının kalitesinin beklentilere uyduğunu test edin
- Başlık/altbilgi render'ını doğrulayın.
- JavaScript çalışmasını doğrulayın, eğer kullanılmışsa
- Yeni yetenekler ekleyin (birleştirme, filigranlar, güvenlik) gerektiğinde

