2025 Rehberi: En İyi C# PDF Kütüphaneleri (Ücretsiz İlk, Gerektiğinde Ücretli)
Çoğu kişi PDF (Taşınabilir Belge Formatı) hakkında düşündüğünde, bilgi dolu bir dosya düşünür. Ve haklılar, çünkü günümüzde PDFler, bilgi paylaşımı için en yaygın kullanılan dosya formatıdır ve bir standart haline gelmiştir. Ancak programcılar PDF'leri görüntülediklerinde yalnızca bilgileri görmezler; formatı, içerik türünü ve diğer teknik özelliklerini analiz ederler.
PDF dosyalarını programlı bir şekilde oluştururken, içeriğin 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 değil, resimler, grafikler, ses ve hatta videoları içerir. Ayrıca, PDF'leri programlı bir şekilde düzenlemek artık yaygın bir gerekliliktir.
AI çağında, PDF'ler üzerinde tam kontrole sahip olmak istiyoruz. Bazen herhangi bir politika nedeniyle metni karartmamız, hassas dosyaları güvence altına almak için PDF'leri korumamız, işleme için veri çıkarmamız veya dinamik raporlar oluşturmanız gerekir. Bu işlemler için birçok kullanım durumu vardır. Bunlar, PDF dosyalarını programlı bir şekilde işlerken geliştiricilerin karşılaştığı yaygın sorunlardır:
PDF belgesi için biçimlendirilmiş bir düzeni korurken, içerik olarak her tür medyayı ele almak
Özellikle metin sütunlar halinde olduğunda, metni doğru sırayla çıkarmak
Çok sayıda sayfaya sahip PDF belgelerini işlerken bellek kısıtlamaları
Form işlemleri geliştiricilerin karşılaştığı büyük bir sorundur
- PDF dosyalarını diğer uygun belge türlerine dönüştürme
Bu görevi kolaylaştırmak için PDF kütüphaneleri devreye girer. Bu makalede, C# PDF kütüphaneleri , IronPDF ve Aspose.PDF gibi, ve fiyatlandırma modellerini tartışacağız. Pratik kullanım durumlarına dalacağız ve bu kütüphanelerin PDF yaratımını ve manipulasyonunu programlı kolay ve üretime hazır hale getirdiğini anlayacağız.
1. IronPDF: C# PDF Kütüphanesi
IronPDF, .NET PDF kütüphanesi olup, geliştiricilerin PDF belgeleri oluşturmasına, düzenlemesine, PDF belgelerini diğer formatlara dönüştürmesine ve birçok PDF operasyonu yapmasına olanak tanır. Büyük PDF dosyalarını işlerken çok az bellek kullanır. Tamamen yerel makinenizde çalışır, bu nedenle sunucu düzeyinde işlemeye bağlı değilsiniz.
Bu kütüphane en son .NET Framework ile uyumludur ve .NET projeleriyle entegrasyonu çok sorunsuzdur. NuGet Paket Yöneticisi'nde aşağıdaki komutu çalıştırıp IronPDF'in projede kullanıma hazır olmasını sağlamanız yeterlidir:
PM> Install-Package IronPdfBaşka bir kütüphane yüklemenize gerek yoktur çünkü harici bağımlılıklardan tamamen bağımsızdır. Bu kütüphaneyi yüklediğinizde, otomatik olarak gerekli tüm bağımlılıkları bir kerede yükler.
IronPDF'in en önemli özelliği, HTML'yi piksel hassasiyetinde PDF'ye dönüştürme yeteneğidir. IronPDF, HTML içeriğinden PDF belgeleri oluşturmak için birden fazla yöntem sunar. Bir HTML dizesini, bir HTML dosyasını veya bir URL'yi doğrudan PDF'ye dönüştürebilirsiniz. CSS ve JavaScript'i de destekler, böylece oluşturulan PDF belgeleri orijinal HTML görüntüsünü doğru bir şekilde yansıtır.
Temel işlemlerin ötesinde, IronPDF PDF formlarını, her seviyede şifrelemeyi ve dijital imzalar eklemeyi destekler. PDF dosyalarından görüntü ve metin çıkarabilirsiniz. Ayrıca metin veya HTML başlıkları ve altbilgileri ekleyebilir, PDF'leri birleştirebilir ve bölebilir, birden fazla metin segmentini değiştirebilir ve metni bulup değiştirebilirsiniz. IronPDF, yalnızca HTML'den PDF oluşturmayı değil, aynı zamanda DOCX, RTF, MD ve görsel dosyalardan PDF'ye dönüşümü de destekler. Bu kütüphane, bellek yönetimi için çok hafif ve çok etkilidir (Temel işlemler için 10MB'dan daha az bellek gerektirir). IronPDF, kararlılık ve performansıyla ilgili dönüm noktalarını takip eder ve bunlara buradan ulaşabilirsiniz.
IronPDF birden fazla destek seviyesi sunar. Canlı sohbet, bilet oluşturma veya e-posta yoluyla mühendislerle iletişime geçebilirsiniz. Destek ekibi 24/7 mevcuttur. IronPDF ayrıca, anlamanız veya sormanız gereken hemen hemen tüm konuları kapsayan ayrıntılı eğitimler ve belgeler sunar.
IronPDF, birçok popüler şirket tarafından canlı ürünler için test edilmiş, optimize edilmiş ve güvenilen bir üretim aşamasına hazır kütüphanedir. Bu, PDF operasyonlarınızda projelerinizde kullanılabilecek en iyi PDF kütüphanelerinden biri yapar. IronPDF kütüphanesinin kod örneklerine bir göz atalım.
Örnek Kodlar
HTML'yi PDF'e Dönüştür
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")PDF'lerden metin ve görüntüleri çıkarma
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")
NextPDF Belgeleri 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")Form İş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")Yukarıdaki örneklerden de görebileceğiniz gibi, IronPDF kullanarak bir PDF dosyası üzerinde her türlü işlemi birkaç satırla gerçekleştirebilirsiniz. Çok basit ve anlaşılır. Yöntem adları anlaması ve uygulanması kolaydır.
Lisans
IronPDF'i geliştirme amacıyla ücretsiz kullanabilirsiniz ve ayrıca ücretsiz deneme sürümünü indirebilirsiniz. Ancak üretim için IronPDF için bir lisans satın almanız gerekecektir. IronPDF'in lisanslama modeli esnektir, iki tür lisans sunar:
Abonelik Lisansı
- Sürekli Lisans
Abonelik Lisansı size yıllık faturalandırılan 59 $/ay maliyetinde olup, 1 geliştirici, 1 proje ve yılda 15.000 API çağrısı içerir. Kotalarınızı aştıktan sonra ek API çağrıları başına 0,03 $ maliyetindedir.
Süresiz Lisans $1,999 ile başlar ve ihtiyaçlarınıza göre seçebileceğiniz birden fazla seçenek sunar. Bu lisansın en iyi kısmı, zamanında bir ödeme olmasıdır. IronPDF'i kullanmak için tekrar ödeme yapmanıza gerek yoktur.

2. Aspose.PDF for .NET
Aspose.PDF, Aspose tarafından geliştirilen ve yaygın olarak ticari olarak kullanılan, .NET kütüphane paketinin bir parçası olan bir C# PDF kütüphanesidir. Karmaşık raporlar, hassas belgeler oluşturmak, PDF belgelerini özelleştirmek ve daha birçok PDF ile ilgili görevler için kullanılır. C# için en yaygın kullanılan PDF kütüphanelerinden biridir. Ayrıca en son .NET Framework'ü destekler.
Aspose.PDF, yalnızca HTML içerikten değil, aynı zamanda XML dosyalarından veri çıkararak statik dosyalar yaratmak yerine gerçek verileri karşılamak için PDF belgeleri oluşturabilir. Bu özellik, karmaşık raporlar oluşturmak için çok yararlıdır. IronPDF'e benzer şekilde, PDF dosyalarına metin, resimler, grafikler ve birçok farklı türde içerik ekleyebilirsiniz. Aspose.PDF, dijital imza ekleme, notlar yönetimi, başlıklar ve altbilgiler ekleme ve PDF dosyalarından metin çıkarma gibi özellikler de sunar. PDF'den yapılandırılmış verileri çıkarabilirsiniz. Bu kütüphane, belirtilen özellikleri kullanarak PDF düzenlemeyi çok iyi gerçekleştirir.
Aspose.PDF kütüphanesinin bu avantajlarının yanı sıra birden fazla dezavantajları da vardır. Bu kütüphanenin en büyük dezavantajı, çok yüksek fiyatının (1679 $'dan başlıyor) olması ve fiyatlandırma modelinin anlaşılması çok karmaşıktır. IronPDF'den farklı olarak, her süreç için ayrı model satın almanız gerekiyor, örneğin geliştirme ve dağıtım. Ayrıca, bu kütüphane çok kaynak tüketicidir (400+ resim ile PDF oluştururken 2GB'ı aşarak). PDF işlemlerini ele almak için çok fazla bellek gerektirir ve gerçekten sinir bozucudur. Bu kütüphanenin iyi olduğuna şüphe yok, ancak çok dik bir öğrenme eğrisi vardır. Kodu anlaması kolay değildir ve anlamak için çok ayrıntılı bir öğrenme oturumu gerektirir.
Kod Örneği
Metin, Resimler ve Tablolar ile PDF belgeleri oluşturun
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 UsingAspose.PDF'in yeni PDF belgeleri oluşturmak için gereken kodun karmaşık olduğunu görebilirsiniz. Her koordinatı kodda manuel olarak ayarlamanız gerekiyor. Her PDF öğesi öğesini manuel olarak stilize etmeniz gerekiyor, bu da çok zaman alıcı ve verimli değildir. Ancak, PDF belgeleri üzerinde ayrıntılı kontrol sağlar.
Lisans
Aspose.PDF birçok lisanslama seçeneği sunar, ancak çoğu ödeme başına gider. Lisans fiyatı $1679'dan başlıyor. Bu, IronPDF lisans seçenekleriyle karşılaştırıldığında (başlangıç $1,999) çok pahalıdır.

3. iTextSuite for .NET
iTextSuite (genellikle iText7 & iTextSharp olarak bilinir), Apryse tarafından sunulan PDF geliştirme için bir SDK'dır. .NET uygulamalarında PDF işlemlerini gerçekleştirmek için tüm gerekli araçlara sahip kapsamlı bir suite'dir. Yukarıdaki kütüphanelere benzer şekilde, PDF belgelerini oluşturabilir, düzenleyebilir, karartabilir, şifreleyebilir ve birçok başka işlemi gerçekleştirebilirsiniz.
iTextSuite, basit faturalar oluşturulması veya finans modülleri ile ilgili raporların karmaşık düzenleri gibi her türlü PDF görevini çok iyi ele alır. Ayrıca, sistemi kullanmak için ağır değildir ve büyük belgelerle kusursuz çalışabilir. Belgeleri hızlı bir şekilde işler ve size kayda değer bir gecikme olmadan çıktı verir.
Tüm bu iyi özelliklerin yanı sıra, iTextSuite'in bazı dezavantajları da vardır ki bu kütüphaneyi düşünmeden önce bilmelisiniz. Bu kütüphanenin maliyeti, piyasada bulunan alternatiflere kıyasla oldukça yüksek olarak bildirilmektedir. Orijinal fiyatlandırması fiyatlandırma sayfasında mevcut değildir. Bir fiyat teklifi almak için müşteri desteği ile iletişime geçmelisiniz. Ayrıca AGPL lisansı sunar, ancak AGPL lisanslı iTextSuite'i kullanırken ürününüzü açık kaynak yapmanızı gerektirir. Aspose'a benzer şekilde, aynı zamanda dik bir öğrenme eğrisi vardır ve yeni başlayanlar için uygun değildir. Gelişmiş PDF manipülasyonu, PDF ve kütüphanenin yapısı hakkında ayrıntılı bir anlayış gerektirir.
Kod Örneği
Stil ve Renklerle PDF belgeleri 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 SubYukarıdaki örnekten iTextSuite için kodun karmaşıklığını anlayabilirsiniz. Büyük uygulamalar oluştururken geliştirme süresini ve karmaşıklığı artırır.
Lisans
iTextSuite iki lisans modeli sunar. Biri ticari, diğeri ise AGPL lisansıdır. iTextSuite'i AGPL lisansı altında üretimde ücretsiz kullanabilirsiniz, ancak ürününüzü de açık kaynak yapmanız gerekecektir. Ticari lisans ile ilgili olarak, lisans sayfasında fiyat belirtilmemiştir. Fiyat teklifi istemeniz veya müşteri desteği ile iletişime geçmeniz gerekecek.

4. PDFSharp
PDFSharp, geliştiricilerin PDF işlemlerini programlı olarak gerçekleştirmek zorunda kaldıklarında yüzleştikleri PDF problemleri için bir C# açık kaynak çözümüdür. En son .NET frameworklarını, .NET Core da dahil olmak üzere destekler. Geliştiricinin PDF'ler konusunda temel ihtiyaçlarını karşılayan hafif bir çözüm.
PDFSharp, en yaygın PDF işlemlerini kolaylıkla yönetebilir. Belgeler oluşturabilir, resim ekleyebilir, şekiller çizebilir ve metin fontlarını ve boyutlarını düzenleyebilirsiniz. PDFSharp size PDF üzerinde tam kontrol sağladığı için herhangi bir şeyi herhangi bir konuma yerleştirebilirsiniz.
Ancak, PDFSharp'ın bilmeniz gereken belirli sınırlamaları vardır. HTML'den PDF'ye dönüştürmeyi yerel 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. Birkaç büyük dosyayı işlemeye çalıştığında performansı etkilenir. Şifreleme ve form doldurma gibi karmaşık işlemleri gerçekleştiremezsiniz. Ve resmi destek kanalları yoktur. Bu kütüphane ile çalışırken herhangi bir sorunla karşılaşırsanız, sadece topluluğa ya da kendi problem çözme becerilerinize güvenirsiniz.
Kod Örneği
Çoklu Metin Stilleri ile 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")PDFSharp, hassas konumlandırma kontrolü ile temel PDF oluşturma için hafif ve ücretsiz bir çözüm arayan geliştiriciler için sağlam bir seçim olmaya devam etmektedir. Sadece sınırlamalarının etrafında çalışmaya veya daha gelişmiş gereksinimler için diğer araçlarla birlikte kullanmaya hazırlıklı olun.
Lisans
PDFSharp, MIT Lisansı altında dağıtılır ve tamamen ücretsizdir. Sadece orijinal telif hakkı bildirimini dahil etmeniz ve lisansı dağıtımınıza eklemeniz gereklidir.
5. PDFPig
PDFPig, .NET geliştiricileri için oluşturulmuş bir diğer açık kaynak kütüphanedir ve PDF dosyalarından içerik okumanıza ve çıkarmanıza olanak tanır. Bu kütüphane, PDF belgelerindeki bireysel harflerin konumunu ve boyutunu çıkarır. Resimleri alır, PDF açıklamalarını ve formlarını okur, köprüleri erişir ve gömülü belgeleri açığa çıkarır. Ayrıca belge meta verilerine erişebilir ve dahili PDF yapısını görüntüleyebilirsiniz.
Benzer .NET araçlarına kıyasla karşılaştırmalarda iyi performans gösterir ve belleği verimli kullanır. Ticari seçeneklere ücretsiz bir alternatif sunar. Düzenli güncellemeler alır ve aktif bir GitHub belgeleri bulundurur.
Kütüphane, bilmeniz gereken açık sınırlamalara sahiptir. HTML veya diğer formatları PDF'ye dönüştürmez. PDF sayfalarından görüntü oluşturamaz, ancak docnet veya PDFtoImage gibi ayrı araçlar bu boşluğu doldurabilir. PDF formları yalnızca okunabilir; form değerlerini değiştiremez veya ekleyemezsiniz. Tablo çikarması için, Tabula Sharp veya Camelot Sharp gibi dış araçlara ihtiyaçınız var. Belgeleri oluştururken köprüleri ekleyemez veya düzenleyemezsiniz. IronPDF gibi daha kapsamlı kütüphanelerle karşılaştırıldığında, PDFPig daha az özellik ve daha az kapsamlı bir dokümantasyon sunar.
Kod Örneği
Temel Metin Çıkarma
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 ModuleLisans
PDFPig, Apache 2.0 Lisansı altında dağıtılır, bu yalnızca orijinal telif hakkı bildirimini ve lisans metnini dağıtımlarınızda dahil etmeniz gerektiği anlamına gelir. Bu gereksinimin ötesinde, bu kütüphaneyi herhangi bir şekilde kullanmakta tamamen özgürsünüz.
Sonuç
Özetlemek gerekirse, 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çları için ücretsizdir ve bir ücretsiz deneme içerir. Fiyatlandırma çok uygun, sadece $1,999'dan başlıyor. Kapsamlı özellik seti, mükemmel destek, ve üretim seviyesinde kararlılığı sayesinde, IronPDF paranın karşılığını en iyi şekilde verir.
Aspose.PDF, lisanslamanın $1679'dan başladığı ve alternatiflerinden önemli ölçüde daha pahalı olduğu bir kullanım kadar öde modeli izler. Granüler kontrol sunsa da, dik öğrenme eğrisi ve yüksek maliyetler her bütçeye uygun olmayabilir.
iTextSuite, web sitesinde şeffaf fiyatlandırma yayınlamaz. Bir teklif için destek ekibiyle iletişime geçmelisiniz, bu da fiyatlandırmanın duruma göre değiştiği anlamına gelir. Ürününüzün tamamını açık kaynak yapmanızı gerektiren bir AGPL lisansı sağlarlar.
PDFSharp ve PDFPig sırasıyla MIT ve Apache 2.0 lisansı altında tamamen ücretsizdir. Ancak, işlevsellikleri ticari seçeneklerle kıyaslandığında sınırlıdır. PDFSharp HTML'den PDF'ye dönüştürme özelliğine sahip değil ve büyük dosyalarla mücadele ederken, PDFPig temel olarak sadece okuma özelliğine sahip bir kütüphanedir.
Doğru bir PDF kütüphanesi seçmek, belirli ihtiyaçlarınıza ve bütçenize bağlıdır. Temel işlemler ve teknik uzmanlık gereksinimi olan açık kaynak seçenekleri iyi çalışır. Ancak, geniş özellikler içeren uygulamalar için kapsamlı özellikler, güvenilir destek ve kapsamlı dokümantasyon gerektiren uygulamalar için, IronPDF en maliyet etkili ve özellik bakımından eksiksiz çözüm olarak öne çıkar.
