IRON SUITE KULLANıMı

2025 Kılavuzu: En İyi C# PDF Kütüphaneleri (Önce Ücretsiz, Gerekli Olduğunda Ücretli)

Çoğu insan PDF (Taşınabilir Belge Formatı) hakkında düşündüğünde, bilgi dolu bir dosya düşünür. Ve doğru düşünüyorlar, çünkü bugünlerde PDF'ler bilgi paylaşımı için en yaygın kullanılan dosya formatıdır ve bir standart haline gelmiştir. Ancak programcılar PDF'lere baktığında sadece bilgi görmez; onlar formatı, içerik türünü ve diğer teknik yönlerini analiz ederler.

PDF dosyalarını programatik olarak oluştururken içerik yapısını korumak en önemli görevdir. Ve bu, göründüğü kadar basit bir görev değildir, çünkü içerik dediğimizde sadece metin anlamına gelmez, resimler, grafikler, sesler, hatta videoları da içerir. Ayrıca PDF'leri programatik olarak düzenlemek şimdi yaygın bir gerekliliktir.

Yapay zeka çağında, PDF'ler üzerinde tam kontrol sahibi olmak istiyoruz. Bazen herhangi bir politika nedeniyle metni düzenlememiz, hassas dosyaları korumak için PDF'leri güvence altına almamız, işlem için verileri çıkarmamız veya dinamik olarak raporlar oluşturmamız gerekir. Bu işlemler için çok sayıda kullanım durumu vardır. Bunlar, geliştiricilerin PDF dosyalarını programatik olarak işlerken karşılaştıkları yaygın sorunlardır:

  1. Bir PDF belgesi için, içerik olarak tüm medya türleri ile başa çıkarken biçimli bir düzeni nasıl korursunuz

  2. Metni doğru sırada çıkarmak, özellikle sütunlarda metin varsa

  3. Çok sayıda sayfaya sahip PDF belgelerini işlerken bellek kısıtlamaları

  4. Form işleme geliştiriciler tarafından karşılaşılan önemli bir sorundur

  5. PDF dosyalarının diğer uygun belge türlerine dönüştürülmesi

Bu görevi kolaylaştırmak için PDF kütüphaneleri devreye girer. Bu makalede, birden fazla C# PDF kütüphanesini tartışacağız, IronPDF ve Aspose.PDF gibi, ve fiyatlandırma modellerini. Pratik kullanım durumlarına dalacağız ve bu kütüphanelerin PDF oluşturma ve düzenlemeyi programatik olarak nasıl kolaylaştırıp, üretime hazır hale getirdiklerini birkaç adımda anlayacağız.

1. IronPDF: C# PDF Kütüphanesi

IronPDF, geliştiricilerin PDF belgeleri oluşturmak, düzenlemek, PDF belgelerini başka bir formata dönüştürmek ve birçok başka PDF işlemi gerçekleştirmek için kullanabileceği kapsamlı bir .NET PDF kütüphanesidir. Bu kütüphane, büyük PDF dosyaları işlerken çok az bellek kullanır. Tamamen yerel makineniz üzerinde çalışır, bu nedenle onunla çalışmak için sunucu düzeyinde bir işleme bağımlı değilsiniz.

Bu kütüphane, en son .NET Framework ile de uyumludur ve .NET projeleri ile entegrasyonu çok sorunsuzdur. NuGet Paket Yöneticisinde aşağıdaki komutu çalıştırmanız yeterlidir ve IronPDF projede kullanıma hazır hale gelecektir:

Install-Package IronPdf

Başka bir kütüphane kurmanız gerekmez, çünkü harici bağımlılıklardan tamamen bağımsızdır. Bu kütüphaneyi kurduğunuzda, gerekli tüm bağımlılıkları otomatik olarak bir kerede yükler.

IronPDF'nin en önemli özelliği, HTML'yi piksel mükemmel doğrulukla PDF'ye dönüştürebilmesidir. IronPDF, HTML içeriğinden PDF belgeleri oluşturmada birden fazla yöntem sunar. Bir HTML dizesini, HTML dosyasını veya bir URL'yi doğrudan PDF'ye dönüştürebilirsiniz. CSS ve JavaScript'i de destekler, bu da üretilen PDF belgelerinin orijinal HTML sunumunu doğru şekilde yansıtmasını sağlar.

Temel işlemlerin ötesinde, IronPDF PDF formlarını, her seviyede şifrelemeyi ve dijital imzalar eklemeyi destekler. PDF dosyalarındaki resimleri ve metinleri çıkarabilirsiniz. Ayrıca metin veya HTML başlıkları ve altbilgileri ekleyebilir, PDF'leri birleştirip bölebilir, çoklu metin segmentlerini değiştirebilir ve metni bulup değiştirebilirsiniz. IronPDF sadece HTML'den PDF oluşturmayı desteklemekle kalmaz, ayrıca DOCX, RTF, MD ve resim dosyalarından PDF'ye dönüşümü de destekler. Bu kütüphane çok hafiftir ve bellek yönetimi için çok etkilidir (Temel işlemler için 10MB'dan az bellek gerektirir). IronPDF, istikrar ve performans ile ilgili kilometre taşlarını izler; buradan erişebilirsiniz.

IronPDF, birden fazla destek düzeyi sunar. Mühendislerle canlı sohbet, bilet oluşturma veya e-posta yoluyla iletişime geçebilirsiniz. Destek ekibi 7/24 ulaşılabilir. IronPDF ayrıca anlamanız veya hakkında sorularınız olabilecek konuları kapsayan ayrıntılı eğitimler ve belgeler sunar.

IronPDF, birçok popüler şirket tarafından canlı ürünleri için test edilmiş, optimize edilmiş ve güvenilen üretime hazır bir kütüphanedir. Bu, PDF işlemleri için projelerinizde kullanılabilecek en iyi PDF kütüphanelerinden biri haline getirir. IronPDF kütüphanesinin kod örneklerine bir göz atalım.

Kod Örnekleri

HTML'den PDF'ye Dönüştürme

using IronPdf;
var renderer = new ChromePdfRenderer();

// 1. HTML String to PDF
var pdf1 = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
pdf1.SaveAs("html-string.pdf");

// 2. HTML String with Assets (Images, CSS, JS)
var pdf2 = renderer.RenderHtmlAsPdf(
    "<img src='logo.png'><link rel='stylesheet' href='style.css'>",
    @"C:\assets\"
);
pdf2.SaveAs("html-with-assets.pdf");

// 3. HTML File to PDF
var pdf3 = renderer.RenderHtmlFileAsPdf("example.html");
pdf3.SaveAs("html-file.pdf");

// 4. URL to PDF
var pdf4 = renderer.RenderUrlAsPdf("https://ironpdf.com");
pdf4.SaveAs("url.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();

// 1. HTML String to PDF
var pdf1 = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
pdf1.SaveAs("html-string.pdf");

// 2. HTML String with Assets (Images, CSS, JS)
var pdf2 = renderer.RenderHtmlAsPdf(
    "<img src='logo.png'><link rel='stylesheet' href='style.css'>",
    @"C:\assets\"
);
pdf2.SaveAs("html-with-assets.pdf");

// 3. HTML File to PDF
var pdf3 = renderer.RenderHtmlFileAsPdf("example.html");
pdf3.SaveAs("html-file.pdf");

// 4. URL to PDF
var pdf4 = renderer.RenderUrlAsPdf("https://ironpdf.com");
pdf4.SaveAs("url.pdf");
Imports IronPdf

Dim renderer As New ChromePdfRenderer()

' 1. HTML String to PDF
Dim pdf1 = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>")
pdf1.SaveAs("html-string.pdf")

' 2. HTML String with Assets (Images, CSS, JS)
Dim pdf2 = renderer.RenderHtmlAsPdf("<img src='logo.png'><link rel='stylesheet' href='style.css'>", "C:\assets\")
pdf2.SaveAs("html-with-assets.pdf")

' 3. HTML File to PDF
Dim pdf3 = renderer.RenderHtmlFileAsPdf("example.html")
pdf3.SaveAs("html-file.pdf")

' 4. URL to PDF
Dim pdf4 = renderer.RenderUrlAsPdf("https://ironpdf.com")
pdf4.SaveAs("url.pdf")
$vbLabelText   $csharpLabel

PDF'lerden metin ve resim çıkarın

using IronPdf;
using IronSoftware.Drawing;
using System.Collections.Generic;

// Load PDF document
var pdf = PdfDocument.FromFile("sample.pdf");

// 1. Extract All Text
string allText = pdf.ExtractAllText();

// 2. Extract Text from Specific Page
string pageText = pdf.ExtractTextFromPage(0); 

// 3. Extract Text from Multiple Pages
for (int i = 0; i < pdf.PageCount; i++)
{
    string text = pdf.ExtractTextFromPage(i);
    Console.WriteLine($"Page {i + 1}: {text}");
}

// 4. Extract All Images
var allImages = pdf.ExtractAllImages();
foreach (var image in allImages)
{
    image.SaveAs($"image_{allImages.IndexOf(image)}.png");
}

// 5. Extract Images from Specific Page
List<AnyBitmap> pageImages = pdf.ExtractBitmapsFromPage(0);

// 6. Extract Raw Images (as byte arrays)
var rawImages = pdf.ExtractAllRawImages();
for (int i = 0; i < rawImages.Count; i++)
{
    System.IO.File.WriteAllBytes($"raw_image_{i}.png", rawImages[i]);
}

// 7. Extract Both Text & Images from Each Page
for (int i = 0; i < pdf.PageCount; i++)
{
    string text = pdf.ExtractTextFromPage(i);
    List<AnyBitmap> images = pdf.ExtractBitmapsFromPage(i);

    Console.WriteLine($"Page {i + 1}: {text}");
    Console.WriteLine($"Found {images.Count} images");
}
using IronPdf;
using IronSoftware.Drawing;
using System.Collections.Generic;

// Load PDF document
var pdf = PdfDocument.FromFile("sample.pdf");

// 1. Extract All Text
string allText = pdf.ExtractAllText();

// 2. Extract Text from Specific Page
string pageText = pdf.ExtractTextFromPage(0); 

// 3. Extract Text from Multiple Pages
for (int i = 0; i < pdf.PageCount; i++)
{
    string text = pdf.ExtractTextFromPage(i);
    Console.WriteLine($"Page {i + 1}: {text}");
}

// 4. Extract All Images
var allImages = pdf.ExtractAllImages();
foreach (var image in allImages)
{
    image.SaveAs($"image_{allImages.IndexOf(image)}.png");
}

// 5. Extract Images from Specific Page
List<AnyBitmap> pageImages = pdf.ExtractBitmapsFromPage(0);

// 6. Extract Raw Images (as byte arrays)
var rawImages = pdf.ExtractAllRawImages();
for (int i = 0; i < rawImages.Count; i++)
{
    System.IO.File.WriteAllBytes($"raw_image_{i}.png", rawImages[i]);
}

// 7. Extract Both Text & Images from Each Page
for (int i = 0; i < pdf.PageCount; i++)
{
    string text = pdf.ExtractTextFromPage(i);
    List<AnyBitmap> images = pdf.ExtractBitmapsFromPage(i);

    Console.WriteLine($"Page {i + 1}: {text}");
    Console.WriteLine($"Found {images.Count} images");
}
Imports IronPdf
Imports IronSoftware.Drawing
Imports System.Collections.Generic
Imports System.IO

' Load PDF document
Dim pdf = PdfDocument.FromFile("sample.pdf")

' 1. Extract All Text
Dim allText As String = pdf.ExtractAllText()

' 2. Extract Text from Specific Page
Dim pageText As String = pdf.ExtractTextFromPage(0)

' 3. Extract Text from Multiple Pages
For i As Integer = 0 To pdf.PageCount - 1
    Dim text As String = pdf.ExtractTextFromPage(i)
    Console.WriteLine($"Page {i + 1}: {text}")
Next

' 4. Extract All Images
Dim allImages = pdf.ExtractAllImages()
For Each image In allImages
    image.SaveAs($"image_{allImages.IndexOf(image)}.png")
Next

' 5. Extract Images from Specific Page
Dim pageImages As List(Of AnyBitmap) = pdf.ExtractBitmapsFromPage(0)

' 6. Extract Raw Images (as byte arrays)
Dim rawImages = pdf.ExtractAllRawImages()
For i As Integer = 0 To rawImages.Count - 1
    File.WriteAllBytes($"raw_image_{i}.png", rawImages(i))
Next

' 7. Extract Both Text & Images from Each Page
For i As Integer = 0 To pdf.PageCount - 1
    Dim text As String = pdf.ExtractTextFromPage(i)
    Dim images As List(Of AnyBitmap) = pdf.ExtractBitmapsFromPage(i)

    Console.WriteLine($"Page {i + 1}: {text}")
    Console.WriteLine($"Found {images.Count} images")
Next
$vbLabelText   $csharpLabel

PDF Belgelerini Düzenleme: Başlıklar ve Altbilgiler

using IronPdf;
using System;
var renderer = new ChromePdfRenderer();

// 1. Add Footer with Page Numbers
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
{
    HtmlFragment = "<center><i>{page} of {total-pages}</i></center>",
    MaxHeight = 15, // mm
    DrawDividerLine = true
};
renderer.RenderingOptions.MarginBottom = 25;

// 2. Add Header with Logo
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
    HtmlFragment = "<img src='logo.png'>",
    MaxHeight = 20, // mm
    BaseUrl = new Uri(@"C:\assets\images\").AbsoluteUri
};
renderer.RenderingOptions.MarginTop = 25;

// 3. Render HTML to PDF
var pdf = renderer.RenderHtmlAsPdf("<h1>Document Title</h1><p>Content...</p>");
pdf.SaveAs("output.pdf");
using IronPdf;
using System;
var renderer = new ChromePdfRenderer();

// 1. Add Footer with Page Numbers
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
{
    HtmlFragment = "<center><i>{page} of {total-pages}</i></center>",
    MaxHeight = 15, // mm
    DrawDividerLine = true
};
renderer.RenderingOptions.MarginBottom = 25;

// 2. Add Header with Logo
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
    HtmlFragment = "<img src='logo.png'>",
    MaxHeight = 20, // mm
    BaseUrl = new Uri(@"C:\assets\images\").AbsoluteUri
};
renderer.RenderingOptions.MarginTop = 25;

// 3. Render HTML to PDF
var pdf = renderer.RenderHtmlAsPdf("<h1>Document Title</h1><p>Content...</p>");
pdf.SaveAs("output.pdf");
Imports IronPdf
Imports System

Dim renderer As New ChromePdfRenderer()

' 1. Add Footer with Page Numbers
renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter() With {
    .HtmlFragment = "<center><i>{page} of {total-pages}</i></center>",
    .MaxHeight = 15, ' mm
    .DrawDividerLine = True
}
renderer.RenderingOptions.MarginBottom = 25

' 2. Add Header with Logo
renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter() With {
    .HtmlFragment = "<img src='logo.png'>",
    .MaxHeight = 20, ' mm
    .BaseUrl = New Uri("C:\assets\images\").AbsoluteUri
}
renderer.RenderingOptions.MarginTop = 25

' 3. Render HTML to PDF
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Document Title</h1><p>Content...</p>")
pdf.SaveAs("output.pdf")
$vbLabelText   $csharpLabel

Form işleme

using IronPdf;

// Load existing PDF with form fields
var pdf = PdfDocument.FromFile("EditableForm.pdf");

// Fill text fields
pdf.Form.FindFormField("firstname").Value = "John";
pdf.Form.FindFormField("lastname").Value = "Smith";
pdf.Form.FindFormField("email").Value = "john.smith@example.com";

// Fill radio button
pdf.Form.FindFormField("gender").Value = "Male";

// Fill dropdown/combobox
pdf.Form.FindFormField("country").Value = "USA";

// Fill checkbox ("Yes" to check, "No" to uncheck)
pdf.Form.FindFormField("subscribe").Value = "Yes";

// Fill textarea (use \r\n for line breaks)
pdf.Form.FindFormField("comments").Value = "This is a comment.\r\nSecond line here.";

// Save filled form
pdf.SaveAs("FilledForm.pdf");
using IronPdf;

// Load existing PDF with form fields
var pdf = PdfDocument.FromFile("EditableForm.pdf");

// Fill text fields
pdf.Form.FindFormField("firstname").Value = "John";
pdf.Form.FindFormField("lastname").Value = "Smith";
pdf.Form.FindFormField("email").Value = "john.smith@example.com";

// Fill radio button
pdf.Form.FindFormField("gender").Value = "Male";

// Fill dropdown/combobox
pdf.Form.FindFormField("country").Value = "USA";

// Fill checkbox ("Yes" to check, "No" to uncheck)
pdf.Form.FindFormField("subscribe").Value = "Yes";

// Fill textarea (use \r\n for line breaks)
pdf.Form.FindFormField("comments").Value = "This is a comment.\r\nSecond line here.";

// Save filled form
pdf.SaveAs("FilledForm.pdf");
Imports IronPdf

' Load existing PDF with form fields
Dim pdf = PdfDocument.FromFile("EditableForm.pdf")

' Fill text fields
pdf.Form.FindFormField("firstname").Value = "John"
pdf.Form.FindFormField("lastname").Value = "Smith"
pdf.Form.FindFormField("email").Value = "john.smith@example.com"

' Fill radio button
pdf.Form.FindFormField("gender").Value = "Male"

' Fill dropdown/combobox
pdf.Form.FindFormField("country").Value = "USA"

' Fill checkbox ("Yes" to check, "No" to uncheck)
pdf.Form.FindFormField("subscribe").Value = "Yes"

' Fill textarea (use vbCrLf for line breaks)
pdf.Form.FindFormField("comments").Value = "This is a comment." & vbCrLf & "Second line here."

' Save filled form
pdf.SaveAs("FilledForm.pdf")
$vbLabelText   $csharpLabel

Yukarıdaki örneklerden de görebileceğiniz gibi, sadece birkaç satırla IronPDF kullanarak bir PDF dosyası üzerinde her türlü işlemi gerçekleştirebilirsiniz. Çok basit ve anlaşılır. Yöntem adları anlamak ve uygulamak için kolaydır.

Lisans

IronPDF, geliştirme amaçları için ücretsizdir ve ücretsiz deneme de indirebilirsiniz. Ancak üretim için IronPDF için bir lisans satın almanız gerekecektir. IronPDF'nin lisanslama modeli esnektir, çünkü iki tür lisans sunmaktadır:

  1. Abonelik Lisansı

  2. Süresiz Lisans

Abonelik Lisansı, size yıllık olarak faturalandırılan 59$/ay maliyetinde olacaktır; bu, 1 geliştirici, 1 proje ve yıllık 15.000 API çağrısı içerir. Kotalar aşıldığında ek API çağrıları başına 0.03$ ücretlendirilir.

Süresiz Lisans $2,998'den başlar ve ihtiyacınıza göre seçebileceğiniz birden fazla seçeneğe sahiptir. Bu lisansın en iyi yanı, zamanla bir ödeme olmasıdır. IronPDF'yi kullanmak için tekrar ödeme yapmak zorunda değilsiniz.

Csharp Pdf Libraries Tool 1 related to Lisans

2. Aspose.PDF for .NET

Aspose.PDF de, Aspose tarafından geliştirilen ve ticari olarak yaygın kullanılan .NET kütüphane paketlerinin bir parçası olarak geliştirilen bir C# PDF kütüphanesidir. O, karmaşık raporlar, hassas belgeler oluşturma, PDF belgelerini özelleştirme gibi PDF ile ilgili görevler için yaygın olarak kullanılmaktadır. C# için en yaygın kullanılan PDF kütüphanelerinden biridir. Ayrıca en son .NET Framework'ü de destekler.

Aspose.PDF sadece HTML içeriğinden değil, aynı zamanda XML dosyalarından veri çıkararak gerçek verilerle doldurulan statik dosyalar yerine PDF belgeleri oluşturabilir. Bu özellik, karmaşık raporlar oluşturmak için çok kullanışlıdır. IronPDF benzer şekilde, PDF dosyalarına metin, resimler, grafikler ve birçok başka türde içerik ekleyebilirsiniz. Aspose.PDF ayrıca dijital imzaların gömülmesi, açıklamaların işlenmesi, başlık ve altbilgiler ve PDF dosyalarından metin çıkarma işlemleri sunar. PDF'den yapılandırılmış verileri çıkarabilirsiniz. Bu kütüphane, bahsedilen özellikleri kullanarak PDF düzenleme işlemlerini çok iyi yürütür.

Aspose.PDF kütüphanesinin bu artılarına ek olarak, birçok eksiği de bulunmaktadır. Bu kütüphanenin başlıca dezavantajı çok yüksek fiyatıdır ($1679'dan başlamaktadır) ve fiyatlandırma modeli oldukça karmaşık anlaşılmaktadır. IronPDF'den farklı olarak, geliştirme ve dağıtım gibi her işlem için modeli ayrı ayrı satın almanız gerekmektedir. Ayrıca bu kütüphane çok fazla kaynak tüketir (400'den fazla resim içeren PDF'ler oluştururken 2GB'ı aşmaktadır). PDF işlemlerini ele almak için çok fazla bellek gerektirir ve bu gerçekten sinir bozucudur. Bu kütüphanenin işini iyi yaptığı konusunda şüphe yok, ancak oldukça dik bir öğrenme eğrisi vardır. Kodu anlamak kolay değildir ve anlamak için çok detaylı bir öğrenme oturumu gerektirir.

Kod Örneği

Metin, Resimler ve Tablolar ile PDF Belgeleri Oluşturma

using Aspose.Pdf;
using Aspose.Pdf.Text;

using (var document = new Document())
{
    // Add page objects
    var page = document.Pages.Add();

    // Add image - requires Rectangle positioning (You can add tiff images as well)
    page.AddImage("logo.png", new Rectangle(20, 730, 120, 830));

    // Add text - requires manual positioning
    var header = new TextFragment("Company Report");
    header.TextState.Font = FontRepository.FindFont("Arial");
    header.TextState.FontSize = 24;
    header.HorizontalAlignment = HorizontalAlignment.Center;
    header.Position = new Position(130, 720);
    page.Paragraphs.Add(header);

    // Add table - extensive configuration required
    var table = new Table
    {
        ColumnWidths = "100 100 100",
        Border = new BorderInfo(BorderSide.Box, 1f, Color.Black),
        DefaultCellBorder = new BorderInfo(BorderSide.Box, 0.5f, Color.Gray),
        DefaultCellPadding = new MarginInfo(4.5, 4.5, 4.5, 4.5)
    };

    // Add header row
    var headerRow = table.Rows.Add();
    headerRow.Cells.Add("Name");
    headerRow.Cells.Add("Age");
    headerRow.Cells.Add("City");

    // Style each header cell individually
    foreach (Cell cell in headerRow.Cells)
    {
        cell.BackgroundColor = Color.LightGray;
        cell.DefaultCellTextState.FontSize = 12;
    }

    // Add data row
    var dataRow = table.Rows.Add();
    dataRow.Cells.Add("John Doe");
    dataRow.Cells.Add("30");
    dataRow.Cells.Add("New York");

    page.Paragraphs.Add(table);

    // Save document
    document.Save("Report.pdf");
}
using Aspose.Pdf;
using Aspose.Pdf.Text;

using (var document = new Document())
{
    // Add page objects
    var page = document.Pages.Add();

    // Add image - requires Rectangle positioning (You can add tiff images as well)
    page.AddImage("logo.png", new Rectangle(20, 730, 120, 830));

    // Add text - requires manual positioning
    var header = new TextFragment("Company Report");
    header.TextState.Font = FontRepository.FindFont("Arial");
    header.TextState.FontSize = 24;
    header.HorizontalAlignment = HorizontalAlignment.Center;
    header.Position = new Position(130, 720);
    page.Paragraphs.Add(header);

    // Add table - extensive configuration required
    var table = new Table
    {
        ColumnWidths = "100 100 100",
        Border = new BorderInfo(BorderSide.Box, 1f, Color.Black),
        DefaultCellBorder = new BorderInfo(BorderSide.Box, 0.5f, Color.Gray),
        DefaultCellPadding = new MarginInfo(4.5, 4.5, 4.5, 4.5)
    };

    // Add header row
    var headerRow = table.Rows.Add();
    headerRow.Cells.Add("Name");
    headerRow.Cells.Add("Age");
    headerRow.Cells.Add("City");

    // Style each header cell individually
    foreach (Cell cell in headerRow.Cells)
    {
        cell.BackgroundColor = Color.LightGray;
        cell.DefaultCellTextState.FontSize = 12;
    }

    // Add data row
    var dataRow = table.Rows.Add();
    dataRow.Cells.Add("John Doe");
    dataRow.Cells.Add("30");
    dataRow.Cells.Add("New York");

    page.Paragraphs.Add(table);

    // Save document
    document.Save("Report.pdf");
}
Imports Aspose.Pdf
Imports Aspose.Pdf.Text

Using document As New Document()
    ' Add page objects
    Dim page = document.Pages.Add()

    ' Add image - requires Rectangle positioning (You can add tiff images as well)
    page.AddImage("logo.png", New Rectangle(20, 730, 120, 830))

    ' Add text - requires manual positioning
    Dim header = New TextFragment("Company Report")
    header.TextState.Font = FontRepository.FindFont("Arial")
    header.TextState.FontSize = 24
    header.HorizontalAlignment = HorizontalAlignment.Center
    header.Position = New Position(130, 720)
    page.Paragraphs.Add(header)

    ' Add table - extensive configuration required
    Dim table = New Table With {
        .ColumnWidths = "100 100 100",
        .Border = New BorderInfo(BorderSide.Box, 1.0F, Color.Black),
        .DefaultCellBorder = New BorderInfo(BorderSide.Box, 0.5F, Color.Gray),
        .DefaultCellPadding = New MarginInfo(4.5, 4.5, 4.5, 4.5)
    }

    ' Add header row
    Dim headerRow = table.Rows.Add()
    headerRow.Cells.Add("Name")
    headerRow.Cells.Add("Age")
    headerRow.Cells.Add("City")

    ' Style each header cell individually
    For Each cell As Cell In headerRow.Cells
        cell.BackgroundColor = Color.LightGray
        cell.DefaultCellTextState.FontSize = 12
    Next

    ' Add data row
    Dim dataRow = table.Rows.Add()
    dataRow.Cells.Add("John Doe")
    dataRow.Cells.Add("30")
    dataRow.Cells.Add("New York")

    page.Paragraphs.Add(table)

    ' Save document
    document.Save("Report.pdf")
End Using
$vbLabelText   $csharpLabel

Aspose.PDF tarafından yeni PDF belgeleri oluşturmak için gereken kodun ne kadar karmaşık olduğunu görebilirsiniz. Kodun içinde her koordinatı manuel olarak ayarlamanız gerekir. Her PDF nesne elemanını manuel olarak stillendirmeniz gerekir, bu da çok zaman alıcı ve verimli değildir. Ancak, PDF belgelerine ayrıntılı kontrol sağlar.

Lisans

Aspose.PDF, birden çok lisans seçeneği sunar, ancak çoğu, kullanım başına ödeme şeklindedir. Lisans fiyatı $1679'dan başlıyor. IronPDF lisans seçenekleriyle karşılaştırıldığında (başlangıç $2,998'den) oldukça pahalıdır.

Csharp Pdf Libraries Tool 2 related to Lisans

3. iTextSuite for .NET

iTextSuite (genellikle iText & iText olarak bilinir), Apryse tarafından sunulan PDF geliştirme için SDK'dır. Bu, .NET uygulamalarında PDF işlemleri gerçekleştirmek için ihtiyaç duyduğumuz tüm gerekli araçlara sahip kapsamlı bir süittir. Yukarıdaki kütüphaneler gibi, PDF belgelerini oluşturabilir, düzenleyebilir, sansürleyebilir, şifreleyebilir ve birçok başka işlem gerçekleştirebilirsiniz.

iTextSuite, basit faturaların oluşturulmasından finans modülleriyle ilgili raporların karmaşık düzenlerine kadar tüm PDF işleri oluşturma ve düzenleme işlemlerini çok iyi bir şekilde yürütür. Sistemde kullanımı ağır değildir ve büyük belgelerle kusursuzca çalışabilir. Belgeleri hızlı bir şekilde işler ve size önemli bir gecikme olmaksızın çıktı verir.

Tüm bu iyi özelliklerin yanı sıra, iTextSuite'in dikkate alınmadan önce bilinmesi gereken bazı dezavantajları da vardır. Bu kütüphanenin maliyeti, piyasada bulunan alternatiflerle karşılaştırıldığında oldukça yüksek olarak bildirilmektedir. Orijinal fiyatlandırması fiyat sayfasında bulunmamaktadır. Fiyat teklifi almak için müşteri desteği ile iletişime geçmeniz gerekmektedir. AGPL lisansı da sunar, ancak AGPL lisanslı iTextSuite'i kullandığınızda ürünü açık kaynak yapmanız gerekmektedir. Aspose benzer şekilde, ayrıca dik bir öğrenme eğrisi vardır ve yeni başlayanlar için dostu değildir. İleri düzey PDF manipülasyonu, PDF ve kütüphanenin yapısı hakkında detaylı bir anlayış gerektirir.

Kod Örneği

Stil ve Renkler ile Bir PDF Belgesi Tablosu Oluşturma

using iText.Kernel.Colors;
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
using iText.Layout.Properties;

public void CreateStyledTable(string dest)
{
    using var writer = new PdfWriter(dest);
    using var pdf = new PdfDocument(writer);
    var document = new Document(pdf);

    // Create a 2-column table
    Table table = new Table(2, false);

    // Header cells with gray background
    Cell cell11 = new Cell(1, 1)
        .SetBackgroundColor(ColorConstants.GRAY)
        .SetTextAlignment(TextAlignment.CENTER)
        .Add(new Paragraph("State"));

    Cell cell12 = new Cell(1, 1)
        .SetBackgroundColor(ColorConstants.GRAY)
        .SetTextAlignment(TextAlignment.CENTER)
        .Add(new Paragraph("Capital"));

    // Data cells
    Cell cell21 = new Cell(1, 1)
        .SetTextAlignment(TextAlignment.CENTER)
        .Add(new Paragraph("New York"));

    Cell cell22 = new Cell(1, 1)
        .SetTextAlignment(TextAlignment.CENTER)
        .Add(new Paragraph("Albany"));

    Cell cell31 = new Cell(1, 1)
        .SetTextAlignment(TextAlignment.CENTER)
        .Add(new Paragraph("New Jersey"));

    Cell cell32 = new Cell(1, 1)
        .SetTextAlignment(TextAlignment.CENTER)
        .Add(new Paragraph("Trenton"));

    // Add all cells to table
    table.AddCell(cell11);
    table.AddCell(cell12);
    table.AddCell(cell21);
    table.AddCell(cell22);
    table.AddCell(cell31);
    table.AddCell(cell32);

    document.Add(table);
    document.Close();
}
using iText.Kernel.Colors;
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
using iText.Layout.Properties;

public void CreateStyledTable(string dest)
{
    using var writer = new PdfWriter(dest);
    using var pdf = new PdfDocument(writer);
    var document = new Document(pdf);

    // Create a 2-column table
    Table table = new Table(2, false);

    // Header cells with gray background
    Cell cell11 = new Cell(1, 1)
        .SetBackgroundColor(ColorConstants.GRAY)
        .SetTextAlignment(TextAlignment.CENTER)
        .Add(new Paragraph("State"));

    Cell cell12 = new Cell(1, 1)
        .SetBackgroundColor(ColorConstants.GRAY)
        .SetTextAlignment(TextAlignment.CENTER)
        .Add(new Paragraph("Capital"));

    // Data cells
    Cell cell21 = new Cell(1, 1)
        .SetTextAlignment(TextAlignment.CENTER)
        .Add(new Paragraph("New York"));

    Cell cell22 = new Cell(1, 1)
        .SetTextAlignment(TextAlignment.CENTER)
        .Add(new Paragraph("Albany"));

    Cell cell31 = new Cell(1, 1)
        .SetTextAlignment(TextAlignment.CENTER)
        .Add(new Paragraph("New Jersey"));

    Cell cell32 = new Cell(1, 1)
        .SetTextAlignment(TextAlignment.CENTER)
        .Add(new Paragraph("Trenton"));

    // Add all cells to table
    table.AddCell(cell11);
    table.AddCell(cell12);
    table.AddCell(cell21);
    table.AddCell(cell22);
    table.AddCell(cell31);
    table.AddCell(cell32);

    document.Add(table);
    document.Close();
}
Imports iText.Kernel.Colors
Imports iText.Kernel.Pdf
Imports iText.Layout
Imports iText.Layout.Element
Imports iText.Layout.Properties

Public Sub CreateStyledTable(dest As String)
    Using writer As New PdfWriter(dest)
        Using pdf As New PdfDocument(writer)
            Dim document As New Document(pdf)

            ' Create a 2-column table
            Dim table As New Table(2, False)

            ' Header cells with gray background
            Dim cell11 As New Cell(1, 1)
            cell11.SetBackgroundColor(ColorConstants.GRAY) _
                  .SetTextAlignment(TextAlignment.CENTER) _
                  .Add(New Paragraph("State"))

            Dim cell12 As New Cell(1, 1)
            cell12.SetBackgroundColor(ColorConstants.GRAY) _
                  .SetTextAlignment(TextAlignment.CENTER) _
                  .Add(New Paragraph("Capital"))

            ' Data cells
            Dim cell21 As New Cell(1, 1)
            cell21.SetTextAlignment(TextAlignment.CENTER) _
                  .Add(New Paragraph("New York"))

            Dim cell22 As New Cell(1, 1)
            cell22.SetTextAlignment(TextAlignment.CENTER) _
                  .Add(New Paragraph("Albany"))

            Dim cell31 As New Cell(1, 1)
            cell31.SetTextAlignment(TextAlignment.CENTER) _
                  .Add(New Paragraph("New Jersey"))

            Dim cell32 As New Cell(1, 1)
            cell32.SetTextAlignment(TextAlignment.CENTER) _
                  .Add(New Paragraph("Trenton"))

            ' Add all cells to table
            table.AddCell(cell11)
            table.AddCell(cell12)
            table.AddCell(cell21)
            table.AddCell(cell22)
            table.AddCell(cell31)
            table.AddCell(cell32)

            document.Add(table)
            document.Close()
        End Using
    End Using
End Sub
$vbLabelText   $csharpLabel

Yukarıdaki örnekten, iTextSuite için kodun karmaşıklığını anlayabilirsiniz. Büyük uygulamalar için geliştirmenin süresini ve karmaşıklığını artırır.

Lisans

iTextSuite iki lisans modeli sunar. Biri ticari, diğeri AGPL lisansıdır. AGPL lisansı altında iTextSuite'i üretimde ücretsiz olarak kullanabilirsiniz, ancak ürünü de açık kaynak yapmanız gerekecektir. Ticari lisansa gelince, lisans sayfasında herhangi bir fiyat belirtilmemiştir. Fiyat teklifi talep etmeniz veya müşteri desteği ile iletişime geçmeniz gerekecek.

Csharp Pdf Libraries Tool 3 related to Lisans

4. PDFSharp

PDFSharp, geliştiricilerin PDF işlemlerini programlı olarak yaparken karşılaştığı PDF sorunları için bir C# açık kaynak çözümüdür. En son .NET framework'lerini ve .NET Core'u da destekler. PDF'lerle ilgili geliştiricinin tüm temel ihtiyaçlarını karşılayan hafif bir çözümdür.

PDFSharp, en yaygın PDF işlemlerini kolaylıkla yönlendirebilir. Belgeler oluşturabilir, resimler ekleyebilir, şekiller çizebilir ve metin fontlarını ve boyutlarını düzenleyebilirsiniz. PDFSharp, PDF üzerinde tam denetim sağladığı için istediğiniz her şeyi istediğiniz konumda koyabilirsiniz.

Ancak, PDFSharp'ın bilmeniz gereken bazı sınırlamaları vardır. HTML'den PDF'ye dönüştürmeyi doğal olarak desteklemez ve bu, geliştiriciler için büyük bir dezavantajdır çünkü HTML, PDF'lerde stil ve konumlandırmayı çok kolay hale getirir. Çoklu büyük dosyaların işlenmesi gerektiğinde performansı etkilenir. Şifreleme ve form doldurma gibi karmaşık işlemleri gerçekleştiremezsiniz. Ve resmi destek kanallarına sahip değildir. Bu kütüphane ile çalışırken herhangi bir sorun yaşarsanız sadece topluluğa veya kendi problem çözme becerilerinize güvenirsiniz.

Kod Örneği

Çoklu Metin Stilleri ile Bir PDF Oluşturma

using PdfSharp.Pdf;
using PdfSharp.Drawing;

// Create document
PdfDocument document = new PdfDocument();
PdfPage page = document.AddPage();
XGraphics gfx = XGraphics.FromPdfPage(page);

// Example of different font styles
XFont regularFont = new XFont("Arial", 12, XFontStyleEx.Regular);
XFont boldFont = new XFont("Arial", 12, XFontStyleEx.Bold);
XFont italicFont = new XFont("Arial", 12, XFontStyleEx.Italic);
XFont boldItalicFont = new XFont("Arial", 12, XFontStyleEx.BoldItalic);

// Position for the first text
double y = 50;
double x = 50;
double lineHeight = 20;

// Draw text in different styles - REQUIRES manual positioning
gfx.DrawString("Regular text in Arial", regularFont, XBrushes.Black, x, y);
y += lineHeight;
gfx.DrawString("Bold text in Arial", boldFont, XBrushes.Black, x, y);
y += lineHeight;
gfx.DrawString("Italic text in Arial", italicFont, XBrushes.Black, x, y);
y += lineHeight;
gfx.DrawString("Bold and Italic text in Arial", boldItalicFont, XBrushes.Black, x, y);

// Save document
document.Save("FormattedText.pdf");
using PdfSharp.Pdf;
using PdfSharp.Drawing;

// Create document
PdfDocument document = new PdfDocument();
PdfPage page = document.AddPage();
XGraphics gfx = XGraphics.FromPdfPage(page);

// Example of different font styles
XFont regularFont = new XFont("Arial", 12, XFontStyleEx.Regular);
XFont boldFont = new XFont("Arial", 12, XFontStyleEx.Bold);
XFont italicFont = new XFont("Arial", 12, XFontStyleEx.Italic);
XFont boldItalicFont = new XFont("Arial", 12, XFontStyleEx.BoldItalic);

// Position for the first text
double y = 50;
double x = 50;
double lineHeight = 20;

// Draw text in different styles - REQUIRES manual positioning
gfx.DrawString("Regular text in Arial", regularFont, XBrushes.Black, x, y);
y += lineHeight;
gfx.DrawString("Bold text in Arial", boldFont, XBrushes.Black, x, y);
y += lineHeight;
gfx.DrawString("Italic text in Arial", italicFont, XBrushes.Black, x, y);
y += lineHeight;
gfx.DrawString("Bold and Italic text in Arial", boldItalicFont, XBrushes.Black, x, y);

// Save document
document.Save("FormattedText.pdf");
Imports PdfSharp.Pdf
Imports PdfSharp.Drawing

' Create document
Dim document As New PdfDocument()
Dim page As PdfPage = document.AddPage()
Dim gfx As XGraphics = XGraphics.FromPdfPage(page)

' Example of different font styles
Dim regularFont As New XFont("Arial", 12, XFontStyleEx.Regular)
Dim boldFont As New XFont("Arial", 12, XFontStyleEx.Bold)
Dim italicFont As New XFont("Arial", 12, XFontStyleEx.Italic)
Dim boldItalicFont As New XFont("Arial", 12, XFontStyleEx.BoldItalic)

' Position for the first text
Dim y As Double = 50
Dim x As Double = 50
Dim lineHeight As Double = 20

' Draw text in different styles - REQUIRES manual positioning
gfx.DrawString("Regular text in Arial", regularFont, XBrushes.Black, x, y)
y += lineHeight
gfx.DrawString("Bold text in Arial", boldFont, XBrushes.Black, x, y)
y += lineHeight
gfx.DrawString("Italic text in Arial", italicFont, XBrushes.Black, x, y)
y += lineHeight
gfx.DrawString("Bold and Italic text in Arial", boldItalicFont, XBrushes.Black, x, y)

' Save document
document.Save("FormattedText.pdf")
$vbLabelText   $csharpLabel

PDFSharp, geliştiriciler için hafif, ücretsiz bir çözüm olarak, temel PDF oluşturma ihtiyaçları için mükemmel bir seçim olmaya devam etmektedir. Ancak, sınırlamalarını aşmak için ya da ileri düzey gereksinimler için başka araçlarla birleştirilmesi gerekecektir.

Lisans

PDFSharp, MIT Lisansı altında dağıtılır ve tamamen ücretsizdir. Orijinal telif hakkı bildirimi ve lisansınızı dağıtımınıza eklemeniz yeterlidir.

5. PDFPig

PDFPig, .NET geliştiriciler için oluşturulmuş başka bir açık kaynak kütüphanesidir ve PDF dosyalarından içerik okumanıza ve çıkarmanıza olanak tanır. Bu kütüphane, PDF belgelerinden bireysel harflerin pozisyonunu ve boyutunu çıkartır. Görüntüleri alır, PDF açıklamalarını ve formlarını okur, köprüleri erişir ve gömülü belgeleri gösterir. Ayrıca belge metadatasını erişebilir ve iç PDF yapısını görebilirsiniz.

Benzer .NET araçlarına kıyasla benchmark'larda iyi performans gösterir ve belleği verimli kullanır. Ticari seçeneklere bir maliyet alternatifi sağlar. Düzenli güncellemeler alır ve aktif GitHub belgelerine sahiptir.

Kütüphane, bilmeniz gereken belirli sınırlamalara sahiptir. HTML veya diğer formatları PDF'ye dönüştürmez. PDF sayfalarından görseller oluşturamaz, ancak docnet veya PDFtoImage gibi ayrı araçlar bu boşluğu doldurabilir. PDF formları yalnızca okunabilir durumdadır; form değerlerini değiştiremez veya ekleyemezsiniz. Tablo çıkarımı için Tabula Sharp veya Camelot Sharp gibi harici araçlar gereklidir. Belgeler oluştururken köprüleri ekleyemez veya düzenleyemezsiniz. IronPDF gibi daha kapsamlı kütüphanelere kıyasla, PDFPig daha az özellik ve daha az kapsamlı belge sunar.

Kod Örneği

Temel Metin Çıkartma

using System;
using System.Collections.Generic;
using System.Linq;
using UglyToad.PdfPig;
using UglyToad.PdfPig.Content;

public static class Program
{
    public static void Main()
    {
        using (PdfDocument document = PdfDocument.Open(@"C:\path\to\file.pdf"))
        {
            foreach (Page page in document.GetPages())
            {
                // Extract all letters
                IReadOnlyList<Letter> letters = page.Letters;
                string text = string.Join(string.Empty, letters.Select(x => x.Value));

                // Extract words
                IEnumerable<Word> words = page.GetWords();

                // Extract images
                IEnumerable<IPdfImage> images = page.GetImages();
            }
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using UglyToad.PdfPig;
using UglyToad.PdfPig.Content;

public static class Program
{
    public static void Main()
    {
        using (PdfDocument document = PdfDocument.Open(@"C:\path\to\file.pdf"))
        {
            foreach (Page page in document.GetPages())
            {
                // Extract all letters
                IReadOnlyList<Letter> letters = page.Letters;
                string text = string.Join(string.Empty, letters.Select(x => x.Value));

                // Extract words
                IEnumerable<Word> words = page.GetWords();

                // Extract images
                IEnumerable<IPdfImage> images = page.GetImages();
            }
        }
    }
}
Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports UglyToad.PdfPig
Imports UglyToad.PdfPig.Content

Public Module Program
    Public Sub Main()
        Using document As PdfDocument = PdfDocument.Open("C:\path\to\file.pdf")
            For Each page As Page In document.GetPages()
                ' Extract all letters
                Dim letters As IReadOnlyList(Of Letter) = page.Letters
                Dim text As String = String.Join(String.Empty, letters.Select(Function(x) x.Value))

                ' Extract words
                Dim words As IEnumerable(Of Word) = page.GetWords()

                ' Extract images
                Dim images As IEnumerable(Of IPdfImage) = page.GetImages()
            Next
        End Using
    End Sub
End Module
$vbLabelText   $csharpLabel

Lisans

PDFPig, Apache 2.0 Lisansı altında dağıtılır ve yalnızca orijinal telif hakkı bildirimi ve lisansı dağıtımınıza eklemenizi gerektirir. Bu gereklilik dışında, bu kütüphaneyi herhangi bir şekilde tamamen özgürce kullanabilirsiniz.

Sonuç

Özetle, bu C# PDF kütüphanelerinin fiyatlandırma ve lisanslama modellerini karşılaştıralım.

IronPDF, bireyler ve şirketler için uygun esnek fiyatlandırma planları sunar. Geliştirme amaçlı ücretsizdir ve ücretsiz deneme içerir. Fiyatlandırma çok makul, sadece $2,998'den başlıyor. Kapsamlı özellik seti, mükemmel destek ve üretime hazır kararlılığı ile IronPDF, paranızın karşılığını en iyi şekilde sunar.

Aspose.PDF, lisanslamasının $1679'dan başlamasıyla birlikte kullanım başına ödeme modelini takip eder ve alternatiflerine göre önemli ölçüde daha pahalıdır. Detaylı kontrol sunmasına rağmen, dik öğrenme eğrisi ve yüksek maliyetler, her bütçeye uygun olmayabilir.

iTextSuite, web sitesinde şeffaf fiyatlandırma yayınlamaz. Fiyat teklifi almak için destek ekibiyle iletişime geçmelisiniz, bu da fiyatların duruma göre değişken olduğu anlamına gelir. AGPL lisansı için ücretsiz kullanım sunarlar, ancak bu, tüm ürününüzü açık kaynak yapmanızı gerektirir.

PDFSharp ve PDFPig, sırasıyla MIT ve Apache 2.0 lisansları altında tamamen ücretsizdir. Ancak, ticari seçeneklere kıyasla işlevsellikleri sınırlıdır. PDFSharp, HTML'den PDF'ye dönüştürme eksiklikleri ve büyük dosyalarla ilgili sıkıntılar yaşarken, PDFPig esasen sadece okunabilir bir kütüphanedir.

Doğru PDF kütüphanesini seçmek, belirli ihtiyaçlarınız ve bütçenize bağlıdır. Temel işlemler ve teknik uzmanlık gerektiğinde, açık kaynaklı seçenekler iyi çalışır. Ancak, kapsamlı özellikli uygulamalar için, ileri düzey özellikler, güvenilir destek ve kapsamlı belgeler gerektiren, IronPDF en maliyet etkin ve tam özellikli çözüm olarak göze çarpar.