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

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:

  1. Java Çalışma Zamanı Gerekliliği: Tüm sunucularda JRE/JDK kurulumu gerektirir.

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

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

  4. İş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.

  5. Ayrı Lisans Yönetimi: Lisans uygulama yerine sunucu örneğine bağlıdır. Java hizmet örneğine bağlı sunucu başına lisanslama.

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

  1. .NET Ortamı: .NET Framework 4.6.2+ veya .NET Core 3.1+ / .NET 5/6/7/8/9+
  2. NuGet Erişimi: NuGet paketlerini yükleyebilme
  3. IronPDF Lisansı: Lisans anahtarınızı ironpdf.com adresinden edinin

NuGet Paket Değişiklikleri

# 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
SHELL

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Metin Çıkarma

string text = pdf.ExtractAllText();
string text = pdf.ExtractAllText();
Dim text As String = pdf.ExtractAllText()
$vbLabelText   $csharpLabel

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

Ö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.dll derleme referansını .csproj dosyanızdan kaldırın -PDFreactorWeb Hizmetini (Java/Jetty) devre dışı bırakın
  • IronPdf NuGet 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
  • PDFreactor sınıfını ChromePdfRenderer ile değiştirin
  • Configuration nesnelerini RenderingOptions özelliklerine dönüştürün
  • config.Document = html öğesini renderer.RenderHtmlAsPdf(html) ile değiştirin
  • config.Document = url öğesini renderer.RenderUrlAsPdf(url) ile değiştirin
  • File.WriteAllBytes(path, result.Document) öğesini pdf.SaveAs(path) ile değiştirin
  • CSS @page kurallarını TextFooter nesnelerine 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

Lütfen dikkate alınPDFReactor, ilgili sahibinin tescilli ticari markasıdır. Bu site, RealObjects ile ilişkili değildir, onaylanmamış veya sponsorlu 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ı...

Daha Fazla Oku

Iron Destek Ekibi

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