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

iText'ten IronPDF'e C# ile Nasıl Geçilir

iText'ten IronPDF'e geçiş yapmak, .NET PDF iş akışınızı, Paragraph, Table ve Cell nesnelerinin manuel olarak oluşturulmasını gerektiren programatik bir API'den, tam CSS3 veJavaScriptdesteğiyle modern bir HTML-öncelikli yaklaşıma dönüştürür. Bu kılavuz, profesyonel .NET geliştiricileri için AGPL lisans sorunlarını ve ayrı pdfHTML eklenti ihtiyaçını ortadan kaldıran kapsamlı, adım adım bir geçiş yolu sunar.

Neden iText'ten IronPDF'e Geçilmeli

AGPL Lisans Tuzağı

iText, birçok geliştirici ekibinin geç fark ettiği, ticari uygulamalar için ciddi yasal ve ticari riskler sunar:

  1. AGPL Yayılmacı Lisans: Eğer bir web uygulamasında iText kullanırsanız, AGPL sizi TÜM uygulamanızı açık kaynak yapmaya zorlar—sadece PDF kodunuzu değil, tüm kod tabanınızı. Bu, çoğu ticari yazılım için kabul edilemez.

  2. Süresiz Lisans Yok: iText süresiz lisanslamayı kaldırarak, toplam sahip olma maliyetini artıran yıllık abonelik yenilemeleri zorlamaktadır.

  3. pdfHTML Eklentisi Maliyeti: HTML-PDF işlevselliği, temel lisansın üzerine ayrıca satılan pdfHTML eklentisini gerektirir.

  4. Karmaşık Lisans Denetimleri: Kurumsal dağıtımlar, projeleri geciktirebilecek ve yasal risk yaratabilecek lisans karmaşıklığı ve denetim riskiyle karşı karşıyadır.

  5. Sadece Programatik API: iText, düşük seviyeli PDF oluşturulmasını Paragraph, Table, Cell nesneleriyle manuel olarak gerektirir — karmaşık düzenler için zahmetli ve hataya açık.

  6. Sınırlı Modern Web Rendering: pdfHTML ile bile, karmaşık CSS veJavaScriptiçeriği önemli ek çaba gerektirir.

iText veIronPDFKarşılaştırması

Özellik iText 7 / iTextSharp IronPDF
Lisans AGPL (viral) veya pahalı abonelik Ticari, sürekli seçenek
HTML'den PDF'e Ayrı pdfHTML eklentisi Dahili Chromium renderer
CSS Desteği Temel CSS Tam CSS3, Flexbox, Grid
JavaScript None Tam icra
API Paradigması Programatik (Paragraf, Tablo, Hücre) Öncelikli HTML ve CSS
Öğrenme Eğrisi Zor (PDF koordinat sistemi) Web geliştirici dostu
Açık Kaynak Riski Web uygulamalarını açık kaynak yapmak zorunda Viral gereksinimler yok
Fiyatlandırma Modeli Sadece abonelik Sürekli veya abonelik

2025 ve 2026 yılları boyunca .NET 10 ve C# 14 benimsemeyi planlayan ekipler için, IronPDF, ekibinizin zaten sahip olduğu web geliştirme becerilerini kullanan HTML-öncelikli yaklaşımıyla gelecek-proof bir temel sağlar.


Göç Karmaşıklık Değerlendirmesi

Özelliklere Göre Tahmini Çaba

Özellik Göç Karmaşıklığı
HTML'den PDF'ye Çok Düşük
PDF'leri birleştir Low
Metin ve Görseller Low
Tablolar Medium
Üstbilgi/Altbilgi Medium
Güvenlik/Şifreleme Low

Paradigma Değişikliği

Bu iText geçişindeki temel değişiklik, programatik PDF oluşturmadan, HTML-öncelikli rendera doğru bir kaymadır:

iText: PdfWriter → PdfDocument → Document → Add(Paragraph) → Add(Table)
IronPDF: ChromePdfRenderer → RenderHtmlAsPdf(htmlString) → SaveAs()

Bu paradigma kayması özgürleştiricidir: iText'in nesne modelini öğrenmek yerine, web geliştiricilerin zaten sahip olduğu HTML ve CSS becerilerini kullanırsınız.


Başlamadan Önce

Önkoş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ükleme yeteneği
  3. IronPDF Lisansı: Lisans anahtarınızı ironpdf.com adresinden edinin

NuGet Paket Değişiklikleri

# Remove iText packages
dotnet remove package itext7
dotnet remove package itext7.pdfhtml
dotnet remove package itextsharp

# Install IronPDF
dotnet add package IronPdf
# Remove iText packages
dotnet remove package itext7
dotnet remove package itext7.pdfhtml
dotnet remove package itextsharp

# Install IronPDF
dotnet add package IronPdf
SHELL

Lisans Yapılandırması

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

iText Kullanımını Tanıyın

# Find all iText references
grep -r "using iText\|using iTextSharp" --include="*.cs" .
grep -r "PdfWriter\|PdfDocument\|Document\|Paragraph\|Table\|Cell" --include="*.cs" .
grep -r "HtmlConverter\|ConverterProperties" --include="*.cs" .
# Find all iText references
grep -r "using iText\|using iTextSharp" --include="*.cs" .
grep -r "PdfWriter\|PdfDocument\|Document\|Paragraph\|Table\|Cell" --include="*.cs" .
grep -r "HtmlConverter\|ConverterProperties" --include="*.cs" .
SHELL

API Referansının Tamamı

Sınıf Eslemeleri

iText 7 Sınıfı iTextSharp Sınıfı IronPDF Eşdeğeri
PdfWriter PdfWriter ChromePdfRenderer
PdfDocument Document PdfDocument
Document Document ChromePdfRenderer.RenderHtmlAsPdf()
Paragraph Paragraph HTML <p>, <h1>, vb.
Table PdfPTable HTML <table>
Cell PdfPCell HTML <td>, <th>
Image Image HTML <img>
PdfReader PdfReader PdfDocument.FromFile()
PdfMerger N/A PdfDocument.Merge()

Namespace Haritalandırmaları

iText 7 Ad Alanı IronPDF Eşdeğeri
iText.Kernel.Pdf IronPdf
iText.Layout IronPdf
iText.Layout.Element HTML öğelerini kullanın
iText.Html2Pdf IronPdf (dahili)
iText.IO.Image HTML <img>kullanın
iText.Kernel.Utils IronPdf

Kod Geçiş Örnekleri

Örnek 1: HTML'den PDF'e Dönüştürme

Önce (iText 7):

// NuGet: Install-Package itext7
using iText.Html2pdf;
using System.IO;

class Program
{
    static void Main()
    {
        string html = "<h1>Hello World</h1><p>This is a PDF from HTML.</p>";
        string outputPath = "output.pdf";

        using (FileStream fs = new FileStream(outputPath, FileMode.Create))
        {
            HtmlConverter.ConvertToPdf(html, fs);
        }
    }
}
// NuGet: Install-Package itext7
using iText.Html2pdf;
using System.IO;

class Program
{
    static void Main()
    {
        string html = "<h1>Hello World</h1><p>This is a PDF from HTML.</p>";
        string outputPath = "output.pdf";

        using (FileStream fs = new FileStream(outputPath, FileMode.Create))
        {
            HtmlConverter.ConvertToPdf(html, fs);
        }
    }
}
Imports iText.Html2pdf
Imports System.IO

Class Program
    Shared Sub Main()
        Dim html As String = "<h1>Hello World</h1><p>This is a PDF from HTML.</p>"
        Dim outputPath As String = "output.pdf"

        Using fs As FileStream = New FileStream(outputPath, FileMode.Create)
            HtmlConverter.ConvertToPdf(html, fs)
        End Using
    End Sub
End Class
$vbLabelText   $csharpLabel

Sonra (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        string html = "<h1>Hello World</h1><p>This is a PDF from HTML.</p>";

        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        string html = "<h1>Hello World</h1><p>This is a PDF from HTML.</p>";

        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");
    }
}
Imports IronPdf

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()
        Dim html As String = "<h1>Hello World</h1><p>This is a PDF from HTML.</p>"

        Dim pdf = renderer.RenderHtmlAsPdf(html)
        pdf.SaveAs("output.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

iText yaklaşımı, ayrı bir iText.Html2pdf paketi (pdfHTML eklentisi, ayrı satılır) gerektirir, bir FileStream oluşturur ve her şeyi düzgün şekilde atılması için using ifadeleriyle sarar. HtmlConverter.ConvertToPdf() yöntemi doğrudan akışa yazar.

IronPDF'in yaklaşımı daha temizdir: bir ChromePdfRenderer oluşturun, HTML stringinizle RenderHtmlAsPdf() çağrısını yapın ve sonuçtaki PdfDocument üzerinde SaveAs() çağrısını yapın. Ayrı paketler yoktur, akış yönetimi yoktur ve Chromium render motoru üstün CSS3 veJavaScriptdesteği sağlar. Daha fazla işleme seçeneği için HTML'den PDF'ye dokümantasyonuna bakın.

Örnek 2: Birden Çok PDF'yi Birleştirin

Önce (iText 7):

// NuGet: Install-Package itext7
using iText.Kernel.Pdf;
using iText.Kernel.Utils;
using System.IO;

class Program
{
    static void Main()
    {
        string outputPath = "merged.pdf";
        string[] inputFiles = { "document1.pdf", "document2.pdf", "document3.pdf" };

        using (PdfWriter writer = new PdfWriter(outputPath))
        using (PdfDocument pdfDoc = new PdfDocument(writer))
        {
            PdfMerger merger = new PdfMerger(pdfDoc);

            foreach (string file in inputFiles)
            {
                using (PdfDocument sourcePdf = new PdfDocument(new PdfReader(file)))
                {
                    merger.Merge(sourcePdf, 1, sourcePdf.GetNumberOfPages());
                }
            }
        }
    }
}
// NuGet: Install-Package itext7
using iText.Kernel.Pdf;
using iText.Kernel.Utils;
using System.IO;

class Program
{
    static void Main()
    {
        string outputPath = "merged.pdf";
        string[] inputFiles = { "document1.pdf", "document2.pdf", "document3.pdf" };

        using (PdfWriter writer = new PdfWriter(outputPath))
        using (PdfDocument pdfDoc = new PdfDocument(writer))
        {
            PdfMerger merger = new PdfMerger(pdfDoc);

            foreach (string file in inputFiles)
            {
                using (PdfDocument sourcePdf = new PdfDocument(new PdfReader(file)))
                {
                    merger.Merge(sourcePdf, 1, sourcePdf.GetNumberOfPages());
                }
            }
        }
    }
}
Imports iText.Kernel.Pdf
Imports iText.Kernel.Utils
Imports System.IO

Class Program
    Shared Sub Main()
        Dim outputPath As String = "merged.pdf"
        Dim inputFiles As String() = {"document1.pdf", "document2.pdf", "document3.pdf"}

        Using writer As New PdfWriter(outputPath)
            Using pdfDoc As New PdfDocument(writer)
                Dim merger As New PdfMerger(pdfDoc)

                For Each file As String In inputFiles
                    Using sourcePdf As New PdfDocument(New PdfReader(file))
                        merger.Merge(sourcePdf, 1, sourcePdf.GetNumberOfPages())
                    End Using
                Next
            End Using
        End Using
    End Sub
End Class
$vbLabelText   $csharpLabel

Sonra (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        var pdfDocuments = new List<PdfDocument>
        {
            PdfDocument.FromFile("document1.pdf"),
            PdfDocument.FromFile("document2.pdf"),
            PdfDocument.FromFile("document3.pdf")
        };

        var merged = PdfDocument.Merge(pdfDocuments);
        merged.SaveAs("merged.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        var pdfDocuments = new List<PdfDocument>
        {
            PdfDocument.FromFile("document1.pdf"),
            PdfDocument.FromFile("document2.pdf"),
            PdfDocument.FromFile("document3.pdf")
        };

        var merged = PdfDocument.Merge(pdfDocuments);
        merged.SaveAs("merged.pdf");
    }
}
Imports IronPdf
Imports System.Collections.Generic

Class Program
    Shared Sub Main()
        Dim pdfDocuments As New List(Of PdfDocument) From {
            PdfDocument.FromFile("document1.pdf"),
            PdfDocument.FromFile("document2.pdf"),
            PdfDocument.FromFile("document3.pdf")
        }

        Dim merged = PdfDocument.Merge(pdfDocuments)
        merged.SaveAs("merged.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

iText birleştirme işlemi önemli miktarda şablon gerektirir: çıktı için bir PdfWriter oluşturun, bunu bir PdfDocument ile sarın, bir PdfMerger oluşturun, sonra kaynak dosyalar arasında, her PdfDocument ve PdfReader için iç içe using ifadeleriyle döngü yapın. Ayrıca merger.Merge(sourcePdf, 1, sourcePdf.GetNumberOfPages()) ile sayfa aralıklarını belirtmeniz gerekir.

IronPDF bunu üç adıma indirir: PdfDocument.FromFile() ile belgeleri yükleyin, listeyle birlikte statik PdfDocument.Merge() yöntemini çağırın ve kaydedin. Tüm birleştirme işlemi okunaklı ve sürdürülebilir hale gelir. PDF'leri birleştirme ve bölme hakkında daha fazla bilgi edinin.

Örnek 3: Metin ve Görsellerle PDF Oluşturma

Önce (iText 7):

// NuGet: Install-Package itext7
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
using iText.IO.Image;

class Program
{
    static void Main()
    {
        string outputPath = "document.pdf";

        using (PdfWriter writer = new PdfWriter(outputPath))
        using (PdfDocument pdf = new PdfDocument(writer))
        using (Document document = new Document(pdf))
        {
            document.Add(new Paragraph("Sample PDF Document"));
            document.Add(new Paragraph("This document contains text and an image."));

            Image img = new Image(ImageDataFactory.Create("image.jpg"));
            img.SetWidth(200);
            document.Add(img);
        }
    }
}
// NuGet: Install-Package itext7
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
using iText.IO.Image;

class Program
{
    static void Main()
    {
        string outputPath = "document.pdf";

        using (PdfWriter writer = new PdfWriter(outputPath))
        using (PdfDocument pdf = new PdfDocument(writer))
        using (Document document = new Document(pdf))
        {
            document.Add(new Paragraph("Sample PDF Document"));
            document.Add(new Paragraph("This document contains text and an image."));

            Image img = new Image(ImageDataFactory.Create("image.jpg"));
            img.SetWidth(200);
            document.Add(img);
        }
    }
}
Imports iText.Kernel.Pdf
Imports iText.Layout
Imports iText.Layout.Element
Imports iText.IO.Image

Class Program
    Shared Sub Main()
        Dim outputPath As String = "document.pdf"

        Using writer As New PdfWriter(outputPath),
              pdf As New PdfDocument(writer),
              document As New Document(pdf)

            document.Add(New Paragraph("Sample PDF Document"))
            document.Add(New Paragraph("This document contains text and an image."))

            Dim img As New Image(ImageDataFactory.Create("image.jpg"))
            img.SetWidth(200)
            document.Add(img)
        End Using
    End Sub
End Class
$vbLabelText   $csharpLabel

Sonra (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        string html = @"
            <h1>Sample PDF Document</h1>
            <p>This document contains text and an image.</p>
            <img src='image.jpg' width='200' />";

        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("document.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        string html = @"
            <h1>Sample PDF Document</h1>
            <p>This document contains text and an image.</p>
            <img src='image.jpg' width='200' />";

        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("document.pdf");
    }
}
Imports IronPdf

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()

        Dim html As String = "
            <h1>Sample PDF Document</h1>
            <p>This document contains text and an image.</p>
            <img src='image.jpg' width='200' />"

        Dim pdf = renderer.RenderHtmlAsPdf(html)
        pdf.SaveAs("document.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

Bu örnek paradigma değişimini en açık şekilde göstermektedir. iText gerektirir:

  • Üçlü iç içe using ifadeleri (PdfWriter, PdfDocument, Document)
  • Her metin öğesi için new Paragraph() ile Paragraph nesneleri oluşturma
  • Görüntüleri yüklemek için ImageDataFactory.Create() kullanma
  • Bir Image nesnesi oluşturma ve SetWidth() ayrı olarak çağırma
  • Her öğe için document.Add() çağrısı yapma

IronPDF standart HTML kullanır: başlıklar için <h1>, paragraflar için <p> ve bir width özelliği ile resimler için <img>. Web geliştiricileri, mevcut becerilerini hemen kullanabilir ve tasarımcılar, zaten bildikleri CSS ile belgeleri stillendirebilir.


Kritik Geçiş Notları

Paradigma Kayması: Programatikten HTML-Öncelikli

Bu iText geçişindeki en önemli değişiklik kavramsaldır. iText belgeleri programatik olarak oluşturur:

// iText approach
document.Add(new Paragraph("Title")
    .SetTextAlignment(TextAlignment.CENTER)
    .SetFontSize(24)
    .SetBold());

var table = new Table(UnitValue.CreatePercentArray(3)).UseAllAvailableWidth();
table.AddHeaderCell(new Cell().Add(new Paragraph("ID")));
table.AddHeaderCell(new Cell().Add(new Paragraph("Name")));
// ... many more lines
// iText approach
document.Add(new Paragraph("Title")
    .SetTextAlignment(TextAlignment.CENTER)
    .SetFontSize(24)
    .SetBold());

var table = new Table(UnitValue.CreatePercentArray(3)).UseAllAvailableWidth();
table.AddHeaderCell(new Cell().Add(new Paragraph("ID")));
table.AddHeaderCell(new Cell().Add(new Paragraph("Name")));
// ... many more lines
' iText approach
document.Add(New Paragraph("Title") _
    .SetTextAlignment(TextAlignment.CENTER) _
    .SetFontSize(24) _
    .SetBold())

Dim table = New Table(UnitValue.CreatePercentArray(3)).UseAllAvailableWidth()
table.AddHeaderCell(New Cell().Add(New Paragraph("ID")))
table.AddHeaderCell(New Cell().Add(New Paragraph("Name")))
' ... many more lines
$vbLabelText   $csharpLabel

IronPDF HTML ve CSS kullanır:

//IronPDFapproach
string html = @"
    <style>
        h1 { text-align: center; font-size: 24px; font-weight: bold; }
        table { width: 100%; border-collapse: collapse; }
        th { background-color: #4CAF50; color: white; padding: 8px; }
    </style>
    <h1>Title</h1>
    <table>
        <tr><th>ID</th><th>Name</th></tr>
    </table>";

var pdf = renderer.RenderHtmlAsPdf(html);
//IronPDFapproach
string html = @"
    <style>
        h1 { text-align: center; font-size: 24px; font-weight: bold; }
        table { width: 100%; border-collapse: collapse; }
        th { background-color: #4CAF50; color: white; padding: 8px; }
    </style>
    <h1>Title</h1>
    <table>
        <tr><th>ID</th><th>Name</th></tr>
    </table>";

var pdf = renderer.RenderHtmlAsPdf(html);
'IronPDFapproach
Dim html As String = "
    <style>
        h1 { text-align: center; font-size: 24px; font-weight: bold; }
        table { width: 100%; border-collapse: collapse; }
        th { background-color: #4CAF50; color: white; padding: 8px; }
    </style>
    <h1>Title</h1>
    <table>
        <tr><th>ID</th><th>Name</th></tr>
    </table>"

Dim pdf = renderer.RenderHtmlAsPdf(html)
$vbLabelText   $csharpLabel

AGPL Lisansı Ortadan Kalktı

iText'in AGPL lisansı, tüm web uygulamanızı açık kaynak yapmanızı veya pahalı bir ticari lisans satın almanızı gerektirir. IronPDF'in ticari lisansı, viral lisans gereksinimleri olmadan özel yazılımda dağıtıma izin verir.

pdfHTML Eklentisi Gerekli Değil

iText, HTML-PDF dönüşümü için ayrı satılan pdfHTML eklentisini gerektirir. IronPDF, Chromium tabanlı tam HTML renderını temel paketine dahil eder.

Yöntem Değiştirme Desenleri

iText Pattern IronPDF Değiştirme
SetTextAlignment(TextAlignment.CENTER) CSS text-align: center
SetFontSize(24) CSS font-size: 24px
SetBold() CSS font-weight: bold
new Table(3) HTML <table>
AddHeaderCell(new Cell().Add(new Paragraph())) HTML <th>
AddCell(new Cell().Add(new Paragraph())) HTML <td>

Ariza Giderme

Sorun 1: PdfWriter/Document Deseni

Sorun: Kod, PdfWriterPdfDocumentDocument iç içe geçme düzenini kullanır.

Çözüm: ChromePdfRenderer ile değiştirin:

// Delete this iText pattern:
// using (var writer = new PdfWriter(outputPath))
// using (var pdfDoc = new PdfDocument(writer))
// using (var document = new Document(pdfDoc))

// Replace with:
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs(outputPath);
// Delete this iText pattern:
// using (var writer = new PdfWriter(outputPath))
// using (var pdfDoc = new PdfDocument(writer))
// using (var document = new Document(pdfDoc))

// Replace with:
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs(outputPath);
Imports IronPdf

Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs(outputPath)
$vbLabelText   $csharpLabel

Sorun 2: HtmlConverter Bulunamadi

Sorun: Kod, pdfHTML eklentisini gerektiren iText.Html2pdf.HtmlConverter kullanır.

Cozum: IronPDF'un yerlesik HTML işleme ozelligini kullanin:

// iText (requires pdfHTML add-on)
HtmlConverter.ConvertToPdf(html, fileStream);

//IronPDF(built-in)
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs(outputPath);
// iText (requires pdfHTML add-on)
HtmlConverter.ConvertToPdf(html, fileStream);

//IronPDF(built-in)
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs(outputPath);
' iText (requires pdfHTML add-on)
HtmlConverter.ConvertToPdf(html, fileStream)

' IronPDF(built-in)
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs(outputPath)
$vbLabelText   $csharpLabel

Sorun 3: PdfMerger Karmaşıklığı

Sorun: iText'in PdfMerger işlevi, iç içe okuyucular ve sayfa aralığı belirtimi gerektirir.

Cozum: IronPDF'un statik birlestirme metodunu kullanin:

// iText merger pattern (delete this)
// using (PdfDocument pdfDoc = new PdfDocument(writer))
// {
//     PdfMerger merger = new PdfMerger(pdfDoc);
//     foreach (string file in inputFiles)
//     {
//         using (PdfDocument sourcePdf = new PdfDocument(new PdfReader(file)))
//         {
//             merger.Merge(sourcePdf, 1, sourcePdf.GetNumberOfPages());
//         }
//     }
// }

//IronPDF(simple)
var merged = PdfDocument.Merge(pdfDocuments);
merged.SaveAs("merged.pdf");
// iText merger pattern (delete this)
// using (PdfDocument pdfDoc = new PdfDocument(writer))
// {
//     PdfMerger merger = new PdfMerger(pdfDoc);
//     foreach (string file in inputFiles)
//     {
//         using (PdfDocument sourcePdf = new PdfDocument(new PdfReader(file)))
//         {
//             merger.Merge(sourcePdf, 1, sourcePdf.GetNumberOfPages());
//         }
//     }
// }

//IronPDF(simple)
var merged = PdfDocument.Merge(pdfDocuments);
merged.SaveAs("merged.pdf");
Imports System.Collections.Generic

' iText merger pattern (delete this)
' Using pdfDoc As New PdfDocument(writer)
'     Dim merger As New PdfMerger(pdfDoc)
'     For Each file As String In inputFiles
'         Using sourcePdf As New PdfDocument(New PdfReader(file))
'             merger.Merge(sourcePdf, 1, sourcePdf.GetNumberOfPages())
'         End Using
'     Next
' End Using

' IronPDF(simple)
Dim merged = PdfDocument.Merge(pdfDocuments)
merged.SaveAs("merged.pdf")
$vbLabelText   $csharpLabel

Goc Kontrol Listesi

Geçiş Öncesi

  • Kod tabanındaki tüm iText API çağrılarını envanterleyin
  • Programatik PDF oluşturma desenlerini belirleyin (Paragraf, Tablo, Hucre)
  • HtmlConverter kullanımını belgeleyin (pdfHTML eklentisi)
  • AGPL uyumluluğu riskini değerlendirin -IronPDFlisans anahtarını edinin

Kod Göçü

  • iText NuGet paketlerini kaldırın: dotnet remove package itext7
  • IronPdf NuGet paketini yükleyin: dotnet add package IronPdf
  • Namespace ithalatlarını güncelleyin (using iText.*using IronPdf)
  • Document örüntüsünü ChromePdfRenderer ile değiştirin
  • Cell öğelerini HTML elementlerine dönüştürün
  • HtmlConverter.ConvertToPdf() yi RenderHtmlAsPdf() ile değiştirin
  • Birleştirme işlemlerini PdfDocument.Merge() olarak güncelleyin
  • Başlangıçta lisans anahtarı başlangıcı ekleyin

Test Etme

  • Tüm PDF oluşturma yollarını test edin
  • Görsel çıkışın beklentilerle eşleştiğini doğrulayın
  • Karmaşık HTML/CSS içerikle test edin
  • Performansı benchmark yapin

Geçişten Sonra

  • iText lisans dosyalarını ve referanslarını kaldırın
  • Belgeleri güncelleyin
  • iText aboneliğini iptal edin (uygulanabilir ise)
  • Eski iText kodunu arhive edin

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında lisans derecesine sahiptir (Carleton Üniversitesi) ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirme üzerine uzmanlaşmıştır. Kullanıcı dostu ve estetik açıdan hoş arayüzler tasarlamaya tutkuyla bağlı olan Curtis, modern çerç...

Daha Fazlasını Oku

Iron Destek Ekibi

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