Altbilgi içeriğine atla
ÜRüN KARşıLAşTıRMALARı

IronPDF ve Apitron PDF Kit Arasındaki Karşılaştırma

C# dilinde PDF dosyalariyla calismak geliştiriciler icin zorlayici olabilir. Bu dosyalar icin içerik oluştururken dikkate alinmasi gereken çok sayida faktor vardir ve farkli formatlardan PDF'e dönüştürulurken daha fazlasini dusunmek gerekir. Otomasyon simdi yazilim geliştirme sureclerinde kritik bir hale geldi. Bu zorluklar, PDF belgelerini okumaya, yazmaya, oluşturmaya ve değiştirmeye, ayrica niteliklerini duzenlemeye ve baska formatlardan dönüştürmeye yardimci olacak kitapliklarin geliştirilmesiyle ele alinmistir.

Bu blog yazisi .NET ve .NET Core icin iki PDF kutuphanesini karsilastirir:

  • IronPDF kutuphanesi
  • Apitron PDF Kit

IronPDF ve Apitron PDF Kit, .NET ve .NET Core icin PDF-manipulasyon fonksiyonlari saglayan kutuphanelerdir. Her ikisi de belge alanlari dönüştürma ve manipulasyon gorevleri icin kullanilabilir. Ayrica yer imleri oluşturulmasina da olanak tanir. Bir sonraki adim, hangi C# PDF .NET kutuphanesinin .NET projelerimiz icin en iyi olduguna karar vermektir. Bu karsilastirma makalesi, bu iki PDF kutuphanesi arasinda karar vermenize yardimci olacak.

Ilk olarak, iki kutuphanenin sunabilecegi seyleri araştıralim, sonra da karsilastirma kismina gecelim.

Apitron PDF Kit Kutuphanesi ve Özellikleri

Apitron PDF Kit, .NET bileseni olup, PDF dosyalarini çeşitli yollarla manipulasyon veya donusumuna olanak tanir. Gorseller, cizimler ve yazilar ekleyebilir, belgeleri imzalayabilir ve daha fazlasini yapabilirsiniz. Ayrica mevcut icerigi de duzenleyebilirsiniz. Apitron PDF Kit .NET bileseni, mobil, masaustu, web, Windows, ve Cloud uygulamalari oluşturmak icin birden fazla platformda kullanilabilir.

Bu PDF SDK'sini kullanarak:

  • Grafikler (yazi, gorseller, cizimler) cikartabilir, değiştirebilir ve ekleyebilirsiniz
  • PDF belgelerini bolerek veya birlestirerek
  • Sifre korumali PDF formlari doldurabilir veya oluşturabilirsiniz, FDF destegi
  • Opsiyonel içerik gruplari (OCG) ile çok katmanli PDF belgeleri oluşturabilirsiniz
  • Belgeden alanlar ekleyebilir veya cikartabilirsiniz
  • Soldan saga veya iki yonlu metin kullanarak sayfa icerigi oluşturun
  • Belgedeki kaynaklari inceleyin - tanimli fontlar, gumuslu dosyalar
  • PDF belgeleri uzerine dijital imza atabilir ve mevcut imzalari kontrol edebilirsiniz

IronPDF'in Ana Özellikleri

Gelistikciler, özellikle C# programcilari, IronPDF .NET kutuphanesini takdir edeceklerdir. Bu arac ile, kolaylikla bir .NET Core PDF işleme uygulamasi oluşturabilirsiniz.

IronPDF, HTML sayfalarini (kod veya URL formunda) PDF dosyalarina dönüştürmek icin .NET Chromium motorunu kullanir. HTML'den gezinme nesneleri konumlandirmak veya tasarlamak icin karmaşik API'leri kullanmaniza gerek yoktur. Standart web belgeleri IronPDF tarafindan desteklenir, HTML, ASPX, JS, CSS ve resimlerle birlikte.

IronPDF HTML5, CSS, JS ve resimleri kullanarak oluşturulabilir. Bir PDF'i kolayca duzenleyebilir, damgalayabilir ve baslik ve altbilgiler ekleyebilirsiniz. Ayrica PDF metnini okumayi ve grafikleri cikartmayi kolaylastirir.

IronPDF'ın dikkat ceken özellikleri arasında:

  • HTML4/5, CSS ve JavaScript kullanarak PDF belgeleri oluşturma
  • Kullanıcı adlari, proxy'ler, cerezler, HTTP basliklari ve form degiskenleri ile kullanıcı tanitim bilgilerini ozel ag giris kimlik bilgileri, kullanıc karsilar (HTML giris formlarinin ardında giris yapabilmek)
  • PDF form alanlarini okuma ve tamamlama
  • PDF'lerden metin ve grafileme cikartma
  • Yeni HTML icerigiyle PDF sayfalarını güncelleme
  • Metin tabanli veya HTML tabanli basliklar ve altbilgiler oluşturma
  • PDF belge icerigini birlestirmek ve ayirmak
  • ASP.NET webformlarını, baskiya uygun PDF'lere dönüştürme
  • Adobe Acrobat yazilimi olmadan PDF dosyalarını yazdirma

IronPDF, hemen hemen her C# ile uyumlu işletim sistemi ve framework'de mevcuttur, içeren:

  • .NET Core 2.1, 3.0, 3.1, .NET 6 & 5
  • Evrensel Uyum için .NET Standard 2.0 Uyumu
  • Azure, AWS, Docker, Linux, Windows

Makaleye geri kalanında şöyle devam edilir:

  1. IronPDF Kurulumu
  2. Apitron PDF Kit Kurulumu
  3. PDF Belgesi Oluşturma
  4. PDF'de Başlık ve Altbilgi Oluşturma
  5. PDF'yi Dijital Olarak İmzalama
  6. Fiyatlandırma ve Lisanslama

1. IronPDF Kurulumu

IronPDF kutuphanesini indirip kurmanin dort yöntemi vardir. Bunlar su sekildedir:

  1. NuGet Package Manager kullanma
  2. Developer Command Prompt
  3. NuGet Paketi dogrudan indirme
  4. IronPDF .DLL kutuphanesini indirme

1.1. NuGet Package Manager Kullanma

IronPDF'i kurmak icin, cozum gezgini icindeki projenize sag tiklayin. Bu, NuGet Package Manager'i acar.

A Comparison of IronPDF with Apitron PDF SDK .NET - Figure 1: Solution Explorer kullanarak NuGet Package Manager'a ulasma

Solution Explorer kullanarak NuGet Package Manager'a ulasma

Bir kez secildiginde, IronPDF paketini arayip kurun, asagidaki ekran görüntüsunde gösterildigi gibi.

A Comparison of IronPDF with Apitron PDF SDK .NET - Figure 2: NuGet Package Manager kullanarak IronPDF kutuphanesini kurma

NuGet Package Manager kullanarak IronPDF kutuphanesini kurma

1.2. Developer Command Prompt Kullanma

IronPDF'i Developer Command Prompt'u kullanarak da kurabilirsiniz.

  • Developer Command Prompt'u acin --- genellikle Visual Studio klasoru altinda bulunur
  • Asagidaki komutu yazin:
Install-Package IronPdf
  • Enter'a basin
  • Bu, paketi indirip kuracak
  • Projenizi yeniden yukleyin ve kullanmaya başlayin

1.3. NuGet Paketini Dogrudan Indirme

IronPDF, dogrudan IronPDF NuGet Paketi sitesine gidip paket indirilerek de kurulabilir. Adımlar şunlardır:

  • IronPDF NuGet Paketi adresine gidin
  • Paketi Indir'i secin
  • Indirilen pakete çift tıklayın
  • Paket kurulacak
  • Visual Studio projenizi yeniden yukleyin ve kullanmaya başlayin

IronPDF indirildi ve kullanıma hazır. Ancak, ondan önce, Apitron PDF kütüphanesini yüklemeliyiz.

2. Apitron PDF Kit Kurulumu

.NET Core uygulamaları için, NuGet Paket Yöneticisi kullanarak Apitron'u yükleyebiliriz veya doğrudan Apitron PDF Kit NuGet web sitesinden indirip kurabiliriz.

  • IronPDF'te yaptığımız gibi Visual Studio'da NuGet paketlerini açın.
  • Apitron.PDF.Kit için arama yapın.
  • Mevcut projenize yüklemek için yükle seçeneğine tıklayın.
A Comparison of IronPDF with Apitron PDF SDK .NET - Figure 3: Apitron PDF Kit Arama

Apitron PDF Kit Arama

Apitron'u yüklemek için NuGet Paket Yöneticisi Konsolu'nu da kullanabilirsiniz. IronPDF'te belirtilen 'Kullanıcı Geliştirici Komut İstemi' adımını takip edin ve aşağıdaki komutu yazın:

Install-Package Apitron.PDF.Kit

ENTER tuşuna basın. Apitron.PDF.Kit indirilecek ve kurulacaktır.

Aşağıdaki ad alanlarını ekleyin:

using Apitron.PDF.Kit;
using Apitron.PDF.Kit.FixedLayout.Resources;
using Apitron.PDF.Kit.FixedLayout.Resources.Fonts;
using Apitron.PDF.Kit.FlowLayout.Content;
using Apitron.PDF.Kit.Styles;
using Apitron.PDF.Kit.Styles.Appearance;
using Font = Apitron.PDF.Kit.Styles.Text.Font;
using Apitron.PDF.Kit;
using Apitron.PDF.Kit.FixedLayout.Resources;
using Apitron.PDF.Kit.FixedLayout.Resources.Fonts;
using Apitron.PDF.Kit.FlowLayout.Content;
using Apitron.PDF.Kit.Styles;
using Apitron.PDF.Kit.Styles.Appearance;
using Font = Apitron.PDF.Kit.Styles.Text.Font;
Imports Apitron.PDF.Kit
Imports Apitron.PDF.Kit.FixedLayout.Resources
Imports Apitron.PDF.Kit.FixedLayout.Resources.Fonts
Imports Apitron.PDF.Kit.FlowLayout.Content
Imports Apitron.PDF.Kit.Styles
Imports Apitron.PDF.Kit.Styles.Appearance
Imports Font = Apitron.PDF.Kit.Styles.Text.Font
$vbLabelText   $csharpLabel

Şimdi, IronPDF ve Apitron PDF arasındaki kıyaslamaya geçelim.

3. PDF Dokümanı Oluşturma

3.1. IronPDF Kullanarak

IronPDF, PDF oluşturmak için birden fazla yöntem sunar. İki önemli yöntemi inceleyelim.

Mevcut URL'den PDF

IronPDF herhangi bir URL'yi PDF'ye dönüştürmeyi kolaylaştırır. Aşağıdaki kod, bir URL'yi PDF'ye dönüştürmeye yardımcı olur.

var Renderer = new IronPdf.ChromePdfRenderer();
// Render a PDF from an existing URL
using var Pdf = Renderer.RenderUrlAsPdf("https://ironpdf.com/");
// Save the PDF to a file
Pdf.SaveAs("url.pdf");
var Renderer = new IronPdf.ChromePdfRenderer();
// Render a PDF from an existing URL
using var Pdf = Renderer.RenderUrlAsPdf("https://ironpdf.com/");
// Save the PDF to a file
Pdf.SaveAs("url.pdf");
Dim Renderer = New IronPdf.ChromePdfRenderer()
' Render a PDF from an existing URL
Dim Pdf = Renderer.RenderUrlAsPdf("https://ironpdf.com/")
' Save the PDF to a file
Pdf.SaveAs("url.pdf")
$vbLabelText   $csharpLabel

HTML Giriş Dizesinden PDF

Aşağıdaki kod, bir HTML dizesinden bir PDF dokümanı nasıl oluşturulacağını açıklar. Sadece HTML kullanabilirsiniz veya bunu CSS, resimler ve JavaScript ile birleştirebilirsiniz.

var Renderer = new IronPdf.ChromePdfRenderer();
// Render a PDF from a simple HTML string
using var PDF = Renderer.RenderHtmlAsPdf("<h1>Html with CSS and Images</h1>");
PDF.SaveAs("pixel-perfect.pdf");

// Load external HTML assets like images, CSS, and JavaScript
// Set the optional BasePath as the file location to load assets from
using var AdvancedPDF = Renderer.RenderHtmlAsPdf("<img src='logo.png'><h1>Sample Text</h1>", @"C:\site\assets\");
AdvancedPDF.SaveAs("html-with-assets.pdf");
var Renderer = new IronPdf.ChromePdfRenderer();
// Render a PDF from a simple HTML string
using var PDF = Renderer.RenderHtmlAsPdf("<h1>Html with CSS and Images</h1>");
PDF.SaveAs("pixel-perfect.pdf");

// Load external HTML assets like images, CSS, and JavaScript
// Set the optional BasePath as the file location to load assets from
using var AdvancedPDF = Renderer.RenderHtmlAsPdf("<img src='logo.png'><h1>Sample Text</h1>", @"C:\site\assets\");
AdvancedPDF.SaveAs("html-with-assets.pdf");
Dim Renderer = New IronPdf.ChromePdfRenderer()
' Render a PDF from a simple HTML string
Dim PDF = Renderer.RenderHtmlAsPdf("<h1>Html with CSS and Images</h1>")
PDF.SaveAs("pixel-perfect.pdf")

' Load external HTML assets like images, CSS, and JavaScript
' Set the optional BasePath as the file location to load assets from
Dim AdvancedPDF = Renderer.RenderHtmlAsPdf("<img src='logo.png'><h1>Sample Text</h1>", "C:\site\assets\")
AdvancedPDF.SaveAs("html-with-assets.pdf")
$vbLabelText   $csharpLabel

Çıktı aşağıdaki gibidir:

A Comparison of IronPDF with Apitron PDF SDK .NET - Figure 4: IronPDF URL ve HTML CSS Dizesinden PDF Oluşturma

IronPDF URL ve HTML CSS Dizesinden PDF Oluşturma

3.2. Apitron PDF Kit Kullanarak

Apitron PDF, bir URL veya HTML'yi PDF'ye dönüştürmeyi sağlamaz. PDF'yi HTML'ye dönüştürmeyi sağlar. Ancak, XML dosyalarını da PDF'ye dönüştürür. Kullanılan XML dosyası:

<?xml version="1.0" encoding="utf-8"?>
<FlowDocument xmlns="Apitron.PDF.Kit.FlowLayout.v1">
  <Resources>
    <Image resourceId="logo" fileName="../../images/logo.png" />
  </Resources>
  <Styles>
    <Style selector="flowdocument">
      <Color value="Black" />
    </Style>
    <Style selector="grid">
      <InnerBorder thickness="1" />
      <InnerBorderColor value="Black" />
    </Style>
  </Styles>
  <Elements>
    <Image>
      <Properties>
        <Class value="logo" />
        <ResourceId value="logo" />
      </Properties>
    </Image>
    <TextBlock>
      <Properties>
        <Class value="header" />
        <Text value="Sample Interview Questions for Candidates" />
      </Properties>
    </TextBlock>
    <Br />
    <TextBlock>
      <Properties>
        <Class value="headerNote" />
        <Text value="To help facilitate the interview process, the Human Resources Department has compiled a list of questions that might be used during the phone and/or on-campus interviews. Some of the questions deal with the same content, but are phrased differently while other questions may not pertain to a specific discipline; however all of the questions are unbiased and appropriate to ask. We hope you'll find this helpful." />
      </Properties>
    </TextBlock>
  </Elements>
  <Properties>
    <Margin value="30,20,30,20" />
  </Properties>
</FlowDocument>
<?xml version="1.0" encoding="utf-8"?>
<FlowDocument xmlns="Apitron.PDF.Kit.FlowLayout.v1">
  <Resources>
    <Image resourceId="logo" fileName="../../images/logo.png" />
  </Resources>
  <Styles>
    <Style selector="flowdocument">
      <Color value="Black" />
    </Style>
    <Style selector="grid">
      <InnerBorder thickness="1" />
      <InnerBorderColor value="Black" />
    </Style>
  </Styles>
  <Elements>
    <Image>
      <Properties>
        <Class value="logo" />
        <ResourceId value="logo" />
      </Properties>
    </Image>
    <TextBlock>
      <Properties>
        <Class value="header" />
        <Text value="Sample Interview Questions for Candidates" />
      </Properties>
    </TextBlock>
    <Br />
    <TextBlock>
      <Properties>
        <Class value="headerNote" />
        <Text value="To help facilitate the interview process, the Human Resources Department has compiled a list of questions that might be used during the phone and/or on-campus interviews. Some of the questions deal with the same content, but are phrased differently while other questions may not pertain to a specific discipline; however all of the questions are unbiased and appropriate to ask. We hope you'll find this helpful." />
      </Properties>
    </TextBlock>
  </Elements>
  <Properties>
    <Margin value="30,20,30,20" />
  </Properties>
</FlowDocument>
XML

Bu XML şablonunu PDF'ye dönüştürmenin kodu aşağıdaki gibidir:

// Use Apitron's FlowDocument to convert XML to PDF
using (Stream stream = File.OpenRead("C:\PLACE YOUR EXACT PATH HERE\template.xml"), 
               outputStream = File.Create("fromTemplate.pdf"))
{
    ResourceManager resourceManager = new ResourceManager();
    FlowDocument doc = FlowDocument.LoadFromXml(stream, resourceManager);

    doc.Write(outputStream, resourceManager);
}
// Use Apitron's FlowDocument to convert XML to PDF
using (Stream stream = File.OpenRead("C:\PLACE YOUR EXACT PATH HERE\template.xml"), 
               outputStream = File.Create("fromTemplate.pdf"))
{
    ResourceManager resourceManager = new ResourceManager();
    FlowDocument doc = FlowDocument.LoadFromXml(stream, resourceManager);

    doc.Write(outputStream, resourceManager);
}
' Use Apitron's FlowDocument to convert XML to PDF
Using stream As Stream = File.OpenRead("C:\PLACE YOUR EXACT PATH HERE\template.xml"),
      outputStream As Stream = File.Create("fromTemplate.pdf")

    Dim resourceManager As New ResourceManager()
    Dim doc As FlowDocument = FlowDocument.LoadFromXml(stream, resourceManager)

    doc.Write(outputStream, resourceManager)
End Using
$vbLabelText   $csharpLabel

Çıktı aşağıdaki gibidir:

A Comparison of IronPDF with Apitron PDF SDK .NET - Figure 5: Apitron PDF Dokümanı

Apitron PDF Dokümanı

IronPDF ve Apitron'un çıktısını karşılaştırırsak, IronPDF'in HTML işleme kullanarak etkileyici belgeler oluşturduğunu ve hatta görüntü boyutunu ölçeklendirmeden bile net bir şekilde görebiliriz. Öte yandan, Apitron benzer bir çıktı verir ama yalnızca XML dosyasında kayıtlı stiller varsa.

4. PDF Belgelerine Başlık ve Alt Bilgi Ekleme

4.1. IronPDF Kullanarak

IronPDF ile başlık ve alt bilgi eklemek basittir. IronPDF, sayfa numaraları ve sayfa kesimleri eklemenizi, kapak sayfası eklemenizi, kenar boşlukları vb. ayarlamanızı sağlar.

Başlık ve alt bilgi eklemenin kodu aşağıda:

var Renderer = new ChromePdfRenderer();

// Add a header
Renderer.RenderingOptions.FirstPageNumber = 1; // Use 2 if a cover page will be appended
Renderer.RenderingOptions.TextHeader.DrawDividerLine = true;
Renderer.RenderingOptions.TextHeader.CenterText = "This is the header text";
Renderer.RenderingOptions.TextHeader.Font = IronPdf.Font.FontTypes.Helvetica;
Renderer.RenderingOptions.TextHeader.FontSize = 12;
Renderer.RenderingOptions.MarginTop = 25; // Create 25mm space for header

// Add a footer too
Renderer.RenderingOptions.TextFooter.DrawDividerLine = true;
Renderer.RenderingOptions.TextFooter.Font = IronPdf.Font.FontTypes.Arial;
Renderer.RenderingOptions.TextFooter.FontSize = 12;
Renderer.RenderingOptions.TextFooter.LeftText = "{date} {time}";
Renderer.RenderingOptions.TextFooter.RightText = "{page} of {total-pages}";
Renderer.RenderingOptions.MarginTop = 25; // Create 25mm space for footer

using var AdvancedPDF = Renderer.RenderHtmlAsPdf("<img src='logo.png'><h1>This is header and footer generated pdf file</h1>", @"C:\site\assets\");
AdvancedPDF.SaveAs("html-with-assets.pdf");
var Renderer = new ChromePdfRenderer();

// Add a header
Renderer.RenderingOptions.FirstPageNumber = 1; // Use 2 if a cover page will be appended
Renderer.RenderingOptions.TextHeader.DrawDividerLine = true;
Renderer.RenderingOptions.TextHeader.CenterText = "This is the header text";
Renderer.RenderingOptions.TextHeader.Font = IronPdf.Font.FontTypes.Helvetica;
Renderer.RenderingOptions.TextHeader.FontSize = 12;
Renderer.RenderingOptions.MarginTop = 25; // Create 25mm space for header

// Add a footer too
Renderer.RenderingOptions.TextFooter.DrawDividerLine = true;
Renderer.RenderingOptions.TextFooter.Font = IronPdf.Font.FontTypes.Arial;
Renderer.RenderingOptions.TextFooter.FontSize = 12;
Renderer.RenderingOptions.TextFooter.LeftText = "{date} {time}";
Renderer.RenderingOptions.TextFooter.RightText = "{page} of {total-pages}";
Renderer.RenderingOptions.MarginTop = 25; // Create 25mm space for footer

using var AdvancedPDF = Renderer.RenderHtmlAsPdf("<img src='logo.png'><h1>This is header and footer generated pdf file</h1>", @"C:\site\assets\");
AdvancedPDF.SaveAs("html-with-assets.pdf");
Dim Renderer = New ChromePdfRenderer()

' Add a header
Renderer.RenderingOptions.FirstPageNumber = 1 ' Use 2 if a cover page will be appended
Renderer.RenderingOptions.TextHeader.DrawDividerLine = True
Renderer.RenderingOptions.TextHeader.CenterText = "This is the header text"
Renderer.RenderingOptions.TextHeader.Font = IronPdf.Font.FontTypes.Helvetica
Renderer.RenderingOptions.TextHeader.FontSize = 12
Renderer.RenderingOptions.MarginTop = 25 ' Create 25mm space for header

' Add a footer too
Renderer.RenderingOptions.TextFooter.DrawDividerLine = True
Renderer.RenderingOptions.TextFooter.Font = IronPdf.Font.FontTypes.Arial
Renderer.RenderingOptions.TextFooter.FontSize = 12
Renderer.RenderingOptions.TextFooter.LeftText = "{date} {time}"
Renderer.RenderingOptions.TextFooter.RightText = "{page} of {total-pages}"
Renderer.RenderingOptions.MarginTop = 25 ' Create 25mm space for footer

Dim AdvancedPDF = Renderer.RenderHtmlAsPdf("<img src='logo.png'><h1>This is header and footer generated pdf file</h1>", "C:\site\assets\")
AdvancedPDF.SaveAs("html-with-assets.pdf")
$vbLabelText   $csharpLabel

Çıktı aşağıdaki gibidir:

A Comparison of IronPDF with Apitron PDF SDK .NET - Figure 6: IronPDF Başlık ve Alt Bilgi

IronPDF Başlık ve Alt Bilgi

4.2. Apitron PDF Kit Kullanarak

Apitron PDF Kit, bir XML yapı formatındaki içeriği PDF'ye dönüştürerek PDF oluşturur. Apitron PDF Kit'te, başlık ve alt bilgiler PageHeader ve PageFooter özellikleri kullanılarak eklenebilir. Bunu yapmanın kodu aşağıdaki gibidir:

// Register document resources first
ResourceManager resourceManager = new ResourceManager();
resourceManager.RegisterResource(new Apitron.PDF.Kit.FixedLayout.Resources.XObjects.Image("logo", "../../data/logo.png"));

// Create the document
FlowDocument doc = new FlowDocument() { Margin = new Thickness(10) };

// Register styles
doc.StyleManager.RegisterStyle(".pageHeader", new Style() { Font = new Font(StandardFonts.TimesBold, 20) });
doc.StyleManager.RegisterStyle(".pageFooter", new Style() { Align = Align.Right });
doc.StyleManager.RegisterStyle("hr", new Style() { Height = 2, Margin = new Thickness(0, 5, 0, 5) });
doc.StyleManager.RegisterStyle(".content", new Style() { Align = Align.Left, Display = Display.InlineBlock });

// Fill the header section
doc.PageHeader.Class = "pageHeader";
doc.PageHeader.Add(new Image("logo") { Width = 100, Height = 50 });
doc.PageHeader.Add(new TextBlock("This document is intended for internal use only") { TextIndent = 20 });
doc.PageHeader.Add(new Hr());

// Fill the footer section
doc.PageFooter.Class = "pageFooter";
doc.PageFooter.Add(new Hr());
doc.PageFooter.Add(new TextBlock((ctx) => string.Format("Page {0} from&nbsp;", ctx.CurrentPage + 1)));
doc.PageFooter.Add(new PageCount(3) { Display = Display.Inline });

// Add pages
for (int i = 0; i < 2; ++i)
{
    doc.Add(new TextBlock("This is header and footer generation pdf file.") { Class = "content" });
    doc.Add(new PageBreak());
}

// Generate PDF
using (Stream stream = File.Create("out.pdf"))
{
    doc.Write(stream, resourceManager);
}

Process.Start("out.pdf");
// Register document resources first
ResourceManager resourceManager = new ResourceManager();
resourceManager.RegisterResource(new Apitron.PDF.Kit.FixedLayout.Resources.XObjects.Image("logo", "../../data/logo.png"));

// Create the document
FlowDocument doc = new FlowDocument() { Margin = new Thickness(10) };

// Register styles
doc.StyleManager.RegisterStyle(".pageHeader", new Style() { Font = new Font(StandardFonts.TimesBold, 20) });
doc.StyleManager.RegisterStyle(".pageFooter", new Style() { Align = Align.Right });
doc.StyleManager.RegisterStyle("hr", new Style() { Height = 2, Margin = new Thickness(0, 5, 0, 5) });
doc.StyleManager.RegisterStyle(".content", new Style() { Align = Align.Left, Display = Display.InlineBlock });

// Fill the header section
doc.PageHeader.Class = "pageHeader";
doc.PageHeader.Add(new Image("logo") { Width = 100, Height = 50 });
doc.PageHeader.Add(new TextBlock("This document is intended for internal use only") { TextIndent = 20 });
doc.PageHeader.Add(new Hr());

// Fill the footer section
doc.PageFooter.Class = "pageFooter";
doc.PageFooter.Add(new Hr());
doc.PageFooter.Add(new TextBlock((ctx) => string.Format("Page {0} from&nbsp;", ctx.CurrentPage + 1)));
doc.PageFooter.Add(new PageCount(3) { Display = Display.Inline });

// Add pages
for (int i = 0; i < 2; ++i)
{
    doc.Add(new TextBlock("This is header and footer generation pdf file.") { Class = "content" });
    doc.Add(new PageBreak());
}

// Generate PDF
using (Stream stream = File.Create("out.pdf"))
{
    doc.Write(stream, resourceManager);
}

Process.Start("out.pdf");
' Register document resources first
Dim resourceManager As New ResourceManager()
resourceManager.RegisterResource(New Apitron.PDF.Kit.FixedLayout.Resources.XObjects.Image("logo", "../../data/logo.png"))

' Create the document
Dim doc As New FlowDocument() With {.Margin = New Thickness(10)}

' Register styles
doc.StyleManager.RegisterStyle(".pageHeader", New Style() With {.Font = New Font(StandardFonts.TimesBold, 20)})
doc.StyleManager.RegisterStyle(".pageFooter", New Style() With {.Align = Align.Right})
doc.StyleManager.RegisterStyle("hr", New Style() With {
	.Height = 2,
	.Margin = New Thickness(0, 5, 0, 5)
})
doc.StyleManager.RegisterStyle(".content", New Style() With {
	.Align = Align.Left,
	.Display = Display.InlineBlock
})

' Fill the header section
doc.PageHeader.Class = "pageHeader"
doc.PageHeader.Add(New Image("logo") With {
	.Width = 100,
	.Height = 50
})
doc.PageHeader.Add(New TextBlock("This document is intended for internal use only") With {.TextIndent = 20})
doc.PageHeader.Add(New Hr())

' Fill the footer section
doc.PageFooter.Class = "pageFooter"
doc.PageFooter.Add(New Hr())
doc.PageFooter.Add(New TextBlock(Function(ctx) String.Format("Page {0} from&nbsp;", ctx.CurrentPage + 1)))
doc.PageFooter.Add(New PageCount(3) With {.Display = Display.Inline})

' Add pages
For i As Integer = 0 To 1
	doc.Add(New TextBlock("This is header and footer generation pdf file.") With {.Class = "content"})
	doc.Add(New PageBreak())
Next i

' Generate PDF
Using stream As Stream = File.Create("out.pdf")
	doc.Write(stream, resourceManager)
End Using

Process.Start("out.pdf")
$vbLabelText   $csharpLabel

Çıktı aşağıdaki gibidir:

A Comparison of IronPDF with Apitron PDF SDK .NET - Figure 7: Apitron Başlık ve Alt Bilgi

Apitron Başlık ve Alt Bilgi

5. PDF'yi Dijital Olarak İmzala

5.1. IronPDF Kullanarak

En önemli PDF işleme özelliklerinden biri, bir PDF dokümanını dijital olarak imzalama yeteneğidir. IronPDF bunu yapmak için gerekli tüm araçları sağlar.

using IronPdf;

// Cryptographically sign an existing PDF in 1 line of code!
new IronPdf.Signing.PdfSignature("Iron.p12", "123456").SignPdfFile("any.pdf");

/***** Advanced example for more control *****/

// 1. Create a PDF
var Renderer = new IronPdf.ChromePdfRenderer();
var doc = Renderer.RenderHtmlAsPdf("<h1>Testing 2048 bit digital security</h1>");

// 2. Create a Signature.
// You may create a .pfx or .p12 PDF signing certificate using Adobe Acrobat Reader.

var signature = new IronPdf.Signing.PdfSignature("Iron.pfx", "123456");

// 3. Handwritten signature graphic
signature.LoadSignatureImageFromFile("handwriting.png");

// 4. Sign the PDF with the PdfSignature. Multiple signing certificates may be used
doc.SignPdfWithDigitalSignature(signature);

// 5. The PDF is not signed until saved to file, stream or byte array.
doc.SaveAs("signed.pdf");
using IronPdf;

// Cryptographically sign an existing PDF in 1 line of code!
new IronPdf.Signing.PdfSignature("Iron.p12", "123456").SignPdfFile("any.pdf");

/***** Advanced example for more control *****/

// 1. Create a PDF
var Renderer = new IronPdf.ChromePdfRenderer();
var doc = Renderer.RenderHtmlAsPdf("<h1>Testing 2048 bit digital security</h1>");

// 2. Create a Signature.
// You may create a .pfx or .p12 PDF signing certificate using Adobe Acrobat Reader.

var signature = new IronPdf.Signing.PdfSignature("Iron.pfx", "123456");

// 3. Handwritten signature graphic
signature.LoadSignatureImageFromFile("handwriting.png");

// 4. Sign the PDF with the PdfSignature. Multiple signing certificates may be used
doc.SignPdfWithDigitalSignature(signature);

// 5. The PDF is not signed until saved to file, stream or byte array.
doc.SaveAs("signed.pdf");
Imports IronPdf

' Cryptographically sign an existing PDF in 1 line of code!
Call (New IronPdf.Signing.PdfSignature("Iron.p12", "123456")).SignPdfFile("any.pdf")

'''*** Advanced example for more control ****

' 1. Create a PDF
Dim Renderer = New IronPdf.ChromePdfRenderer()
Dim doc = Renderer.RenderHtmlAsPdf("<h1>Testing 2048 bit digital security</h1>")

' 2. Create a Signature.
' You may create a .pfx or .p12 PDF signing certificate using Adobe Acrobat Reader.

Dim signature = New IronPdf.Signing.PdfSignature("Iron.pfx", "123456")

' 3. Handwritten signature graphic
signature.LoadSignatureImageFromFile("handwriting.png")

' 4. Sign the PDF with the PdfSignature. Multiple signing certificates may be used
doc.SignPdfWithDigitalSignature(signature)

' 5. The PDF is not signed until saved to file, stream or byte array.
doc.SaveAs("signed.pdf")
$vbLabelText   $csharpLabel

5.2 Apitron PDF Kit Kullanarak

Apitron PDF Kit kullanarak bir PDF'ye imza damgalamak hem uzun hem de teknik bir süreçtir.

static void Main(string[] args)
{
    string fileName = "signedTwice.pdf";

    using (Stream stream = File.Create(fileName))
    {
        FlowDocument doc = new FlowDocument() { Margin = new Thickness(10) };
        doc.Add(new TextBlock("Signed using Apitron PDF Kit for .NET"));
        doc.Write(stream, new ResourceManager());
    }

    // Save
    Sign(fileName, "../../data/certs/JohnDoe.pfx", "password", "../../data/images/signatureImage.png", new Boundary(10, 750, 110, 800));
}

// Implementation of Sign Method
private static void Sign(string pathToDocument, string pathToCertificate, string password, string pathToSignatureImage, Boundary signatureViewLocation)
{
    // Open existing document and sign once
    using (Stream inputStream = new FileStream(pathToDocument, FileMode.Open, FileAccess.ReadWrite))
    {
        using (FixedDocument doc = new FixedDocument(inputStream))
        {
            string imageResourceId = Guid.NewGuid().ToString("N");
            string signatureFieldId = Guid.NewGuid().ToString("N");

            // Register signature image resource
            doc.ResourceManager.RegisterResource(new Image(imageResourceId, pathToSignatureImage));

            // Create first signature field and initialize it using a stored certificate
            SignatureField signatureField = new SignatureField(signatureFieldId);
            using (Stream signatureDataStream = File.OpenRead(pathToCertificate))
            {
                signatureField.Signature = Signature.Create(new Pkcs12Store(signatureDataStream, password));
            }

            // Add signature fields to the document
doc.AcroForm.Fields.Add(signatureField);

            // Create first signature view using the image resource
            SignatureFieldView signatureView = new SignatureFieldView(signatureField, signatureViewLocation);
            signatureView.ViewSettings.Graphic = Graphic.Image;
            signatureView.ViewSettings.GraphicResourceID = imageResourceId;
            signatureView.ViewSettings.Description = Description.None;

            // Add views to page annotations collection
doc.Pages[0].Annotations.Add(signatureView);

            // Save as incremental update
doc.Save();
        }
    }
}
static void Main(string[] args)
{
    string fileName = "signedTwice.pdf";

    using (Stream stream = File.Create(fileName))
    {
        FlowDocument doc = new FlowDocument() { Margin = new Thickness(10) };
        doc.Add(new TextBlock("Signed using Apitron PDF Kit for .NET"));
        doc.Write(stream, new ResourceManager());
    }

    // Save
    Sign(fileName, "../../data/certs/JohnDoe.pfx", "password", "../../data/images/signatureImage.png", new Boundary(10, 750, 110, 800));
}

// Implementation of Sign Method
private static void Sign(string pathToDocument, string pathToCertificate, string password, string pathToSignatureImage, Boundary signatureViewLocation)
{
    // Open existing document and sign once
    using (Stream inputStream = new FileStream(pathToDocument, FileMode.Open, FileAccess.ReadWrite))
    {
        using (FixedDocument doc = new FixedDocument(inputStream))
        {
            string imageResourceId = Guid.NewGuid().ToString("N");
            string signatureFieldId = Guid.NewGuid().ToString("N");

            // Register signature image resource
            doc.ResourceManager.RegisterResource(new Image(imageResourceId, pathToSignatureImage));

            // Create first signature field and initialize it using a stored certificate
            SignatureField signatureField = new SignatureField(signatureFieldId);
            using (Stream signatureDataStream = File.OpenRead(pathToCertificate))
            {
                signatureField.Signature = Signature.Create(new Pkcs12Store(signatureDataStream, password));
            }

            // Add signature fields to the document
doc.AcroForm.Fields.Add(signatureField);

            // Create first signature view using the image resource
            SignatureFieldView signatureView = new SignatureFieldView(signatureField, signatureViewLocation);
            signatureView.ViewSettings.Graphic = Graphic.Image;
            signatureView.ViewSettings.GraphicResourceID = imageResourceId;
            signatureView.ViewSettings.Description = Description.None;

            // Add views to page annotations collection
doc.Pages[0].Annotations.Add(signatureView);

            // Save as incremental update
doc.Save();
        }
    }
}
Imports System
Imports System.IO
Imports Apitron.PDF.Rasterizer
Imports Apitron.PDF.Kit.FixedLayout
Imports Apitron.PDF.Kit
Imports Apitron.PDF.Kit.Styles
Imports Apitron.PDF.Kit.Signatures
Imports Apitron.PDF.Kit.Interactive.Annotations

Module Module1
    Sub Main(args As String())
        Dim fileName As String = "signedTwice.pdf"

        Using stream As Stream = File.Create(fileName)
            Dim doc As New FlowDocument() With {.Margin = New Thickness(10)}
            doc.Add(New TextBlock("Signed using Apitron PDF Kit for .NET"))
            doc.Write(stream, New ResourceManager())
        End Using

        ' Save
        Sign(fileName, "../../data/certs/JohnDoe.pfx", "password", "../../data/images/signatureImage.png", New Boundary(10, 750, 110, 800))
    End Sub

    ' Implementation of Sign Method
    Private Sub Sign(pathToDocument As String, pathToCertificate As String, password As String, pathToSignatureImage As String, signatureViewLocation As Boundary)
        ' Open existing document and sign once
        Using inputStream As Stream = New FileStream(pathToDocument, FileMode.Open, FileAccess.ReadWrite)
            Using doc As New FixedDocument(inputStream)
                Dim imageResourceId As String = Guid.NewGuid().ToString("N")
                Dim signatureFieldId As String = Guid.NewGuid().ToString("N")

                ' Register signature image resource
                doc.ResourceManager.RegisterResource(New Image(imageResourceId, pathToSignatureImage))

                ' Create first signature field and initialize it using a stored certificate
                Dim signatureField As New SignatureField(signatureFieldId)
                Using signatureDataStream As Stream = File.OpenRead(pathToCertificate)
                    signatureField.Signature = Signature.Create(New Pkcs12Store(signatureDataStream, password))
                End Using

                ' Add signature fields to the document
                doc.AcroForm.Fields.Add(signatureField)

                ' Create first signature view using the image resource
                Dim signatureView As New SignatureFieldView(signatureField, signatureViewLocation)
                signatureView.ViewSettings.Graphic = Graphic.Image
                signatureView.ViewSettings.GraphicResourceID = imageResourceId
                signatureView.ViewSettings.Description = Description.None

                ' Add views to page annotations collection
                doc.Pages(0).Annotations.Add(signatureView)

                ' Save as incremental update
                doc.Save()
            End Using
        End Using
    End Sub
End Module
$vbLabelText   $csharpLabel

Kütüphaneler için çıktı hemen hemen aynıdır. IronPDF'in PDF içeriğini şekillendirmek için daha kolay ve daha kullanışlı olduğunu net bir şekilde görebilirsiniz. Çıktı PDF, üzerindeki sertifika ve imzayla imzalanmıştır.

IronPDF ile Portfolio Galerileri İçin Bootstrap 5 Kullanma

IronPDF'in Chrome V8 motoru, modern Bootstrap 5 bileşenlerini tamamen destekleyerek profesyonel portföy galerileriyle görsel olarak çarpıcı PDF belgeleri oluşturmanıza olanak tanır. Bu örnek, gitter düzenlerini, üzerlerine gelince açılan efektleri, gradyan kaplamaları ve kategori rozetlerini göstermektedir. Bu özellikleri, Apitron PDF SDK gibi geleneksel PDF kütüphaneleri ile uygulamak zor olurdu.

using IronPdf;

var renderer = new ChromePdfRenderer();

string portfolioGallery = @"
<!DOCTYPE html>
<html>
<head>
    <meta charset='utf-8'>
    <link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
    <style>
        .gallery-item {
            position: relative;
            overflow: hidden;
            border-radius: 10px;
            box-shadow: 0 4px 6px rgba(0,0,0,0.1);
        }
        .gallery-item img {
            width: 100%;
            height: 250px;
            object-fit: cover;
            transition: transform 0.3s;
        }
        .gallery-item:hover img {
            transform: scale(1.1);
        }
        .gallery-overlay {
            position: absolute;
            bottom: 0;
            left: 0;
            right: 0;
            background: linear-gradient(to top, rgba(0,0,0,0.8), transparent);
            padding: 20px;
            color: white;
        }
        .category-badge {
            position: absolute;
            top: 10px;
            right: 10px;
        }
        @media print {
            .gallery-item { page-break-inside: avoid; }
        }
    </style>
</head>
<body>
    <div class='container py-5'>
        <div class='text-center mb-5'>
            <h1 class='display-4'>Design Portfolio</h1>
            <p class='lead text-muted'>Showcase of PDF Document Designs</p>
        </div>

        <div class='row mb-4'>
            <div class='col-12'>
                <div class='btn-group' role='group'>
                    <button class='btn btn-primary'>All Projects</button>
                    <button class='btn btn-outline-primary'>Invoices</button>
                    <button class='btn btn-outline-primary'>Reports</button>
                    <button class='btn btn-outline-primary'>Forms</button>
                    <button class='btn btn-outline-primary'>Certificates</button>
                </div>
            </div>
        </div>

        <div class='row g-4'>
            <div class='col-md-4'>
                <div class='gallery-item'>
                    <span class='badge bg-primary category-badge'>Invoice</span>
                    <svg width='100%' height='250' style='background: linear-gradient(135deg, #667eea 0%, #764ba2 100%)'>
                        <text x='50%' y='50%' text-anchor='middle' fill='white' font-size='48' opacity='0.3'>📄</text>
                    </svg>
                    <div class='gallery-overlay'>
                        <h5 class='mb-1'>Professional Invoice Template</h5>
                        <small>Corporate billing with itemized details</small>
                    </div>
                </div>
            </div>

            <div class='col-md-4'>
                <div class='gallery-item'>
                    <span class='badge bg-success category-badge'>Report</span>
                    <svg width='100%' height='250' style='background: linear-gradient(135deg, #f093fb 0%, #f5576c 100%)'>
                        <text x='50%' y='50%' text-anchor='middle' fill='white' font-size='48' opacity='0.3'>📊</text>
                    </svg>
                    <div class='gallery-overlay'>
                        <h5 class='mb-1'>Analytics Dashboard Report</h5>
                        <small>Data visualization and metrics</small>
                    </div>
                </div>
            </div>

            <div class='col-md-4'>
                <div class='gallery-item'>
                    <span class='badge bg-warning category-badge'>Certificate</span>
                    <svg width='100%' height='250' style='background: linear-gradient(135deg, #4facfe 0%, #00f2fe 100%)'>
                        <text x='50%' y='50%' text-anchor='middle' fill='white' font-size='48' opacity='0.3'>🏆</text>
                    </svg>
                    <div class='gallery-overlay'>
                        <h5 class='mb-1'>Award Certificate</h5>
                        <small>Professional achievement recognition</small>
                    </div>
                </div>
            </div>

            <div class='col-md-4'>
                <div class='gallery-item'>
                    <span class='badge bg-info category-badge'>Form</span>
                    <svg width='100%' height='250' style='background: linear-gradient(135deg, #fa709a 0%, #fee140 100%)'>
                        <text x='50%' y='50%' text-anchor='middle' fill='white' font-size='48' opacity='0.3'>📝</text>
                    </svg>
                    <div class='gallery-overlay'>
                        <h5 class='mb-1'>Application Form</h5>
                        <small>Multi-page data collection</small>
                    </div>
                </div>
            </div>

            <div class='col-md-4'>
                <div class='gallery-item'>
                    <span class='badge bg-danger category-badge'>Invoice</span>
                    <svg width='100%' height='250' style='background: linear-gradient(135deg, #30cfd0 0%, #330867 100%)'>
                        <text x='50%' y='50%' text-anchor='middle' fill='white' font-size='48' opacity='0.3'>💰</text>
                    </svg>
                    <div class='gallery-overlay'>
                        <h5 class='mb-1'>Payment Receipt</h5>
                        <small>Transaction confirmation document</small>
                    </div>
                </div>
            </div>

            <div class='col-md-4'>
                <div class='gallery-item'>
                    <span class='badge bg-secondary category-badge'>Report</span>
                    <svg width='100%' height='250' style='background: linear-gradient(135deg, #a8edea 0%, #fed6e3 100%)'>
                        <text x='50%' y='50%' text-anchor='middle' fill='white' font-size='48' opacity='0.3'>📈</text>
                    </svg>
                    <div class='gallery-overlay'>
                        <h5 class='mb-1'>Financial Statement</h5>
                        <small>Quarterly performance overview</small>
                    </div>
                </div>
            </div>
        </div>

        <div class='text-center mt-5'>
            <p class='text-muted'>All templates rendered with IronPDF's Chromium engine</p>
            <div class='d-flex justify-content-center gap-2'>
                <span class='badge bg-primary'>Bootstrap 5</span>
                <span class='badge bg-success'>Responsive</span>
                <span class='badge bg-info'>Print-Ready</span>
            </div>
        </div>
    </div>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(portfolioGallery);
pdf.SaveAs("portfolio-gallery.pdf");
using IronPdf;

var renderer = new ChromePdfRenderer();

string portfolioGallery = @"
<!DOCTYPE html>
<html>
<head>
    <meta charset='utf-8'>
    <link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
    <style>
        .gallery-item {
            position: relative;
            overflow: hidden;
            border-radius: 10px;
            box-shadow: 0 4px 6px rgba(0,0,0,0.1);
        }
        .gallery-item img {
            width: 100%;
            height: 250px;
            object-fit: cover;
            transition: transform 0.3s;
        }
        .gallery-item:hover img {
            transform: scale(1.1);
        }
        .gallery-overlay {
            position: absolute;
            bottom: 0;
            left: 0;
            right: 0;
            background: linear-gradient(to top, rgba(0,0,0,0.8), transparent);
            padding: 20px;
            color: white;
        }
        .category-badge {
            position: absolute;
            top: 10px;
            right: 10px;
        }
        @media print {
            .gallery-item { page-break-inside: avoid; }
        }
    </style>
</head>
<body>
    <div class='container py-5'>
        <div class='text-center mb-5'>
            <h1 class='display-4'>Design Portfolio</h1>
            <p class='lead text-muted'>Showcase of PDF Document Designs</p>
        </div>

        <div class='row mb-4'>
            <div class='col-12'>
                <div class='btn-group' role='group'>
                    <button class='btn btn-primary'>All Projects</button>
                    <button class='btn btn-outline-primary'>Invoices</button>
                    <button class='btn btn-outline-primary'>Reports</button>
                    <button class='btn btn-outline-primary'>Forms</button>
                    <button class='btn btn-outline-primary'>Certificates</button>
                </div>
            </div>
        </div>

        <div class='row g-4'>
            <div class='col-md-4'>
                <div class='gallery-item'>
                    <span class='badge bg-primary category-badge'>Invoice</span>
                    <svg width='100%' height='250' style='background: linear-gradient(135deg, #667eea 0%, #764ba2 100%)'>
                        <text x='50%' y='50%' text-anchor='middle' fill='white' font-size='48' opacity='0.3'>📄</text>
                    </svg>
                    <div class='gallery-overlay'>
                        <h5 class='mb-1'>Professional Invoice Template</h5>
                        <small>Corporate billing with itemized details</small>
                    </div>
                </div>
            </div>

            <div class='col-md-4'>
                <div class='gallery-item'>
                    <span class='badge bg-success category-badge'>Report</span>
                    <svg width='100%' height='250' style='background: linear-gradient(135deg, #f093fb 0%, #f5576c 100%)'>
                        <text x='50%' y='50%' text-anchor='middle' fill='white' font-size='48' opacity='0.3'>📊</text>
                    </svg>
                    <div class='gallery-overlay'>
                        <h5 class='mb-1'>Analytics Dashboard Report</h5>
                        <small>Data visualization and metrics</small>
                    </div>
                </div>
            </div>

            <div class='col-md-4'>
                <div class='gallery-item'>
                    <span class='badge bg-warning category-badge'>Certificate</span>
                    <svg width='100%' height='250' style='background: linear-gradient(135deg, #4facfe 0%, #00f2fe 100%)'>
                        <text x='50%' y='50%' text-anchor='middle' fill='white' font-size='48' opacity='0.3'>🏆</text>
                    </svg>
                    <div class='gallery-overlay'>
                        <h5 class='mb-1'>Award Certificate</h5>
                        <small>Professional achievement recognition</small>
                    </div>
                </div>
            </div>

            <div class='col-md-4'>
                <div class='gallery-item'>
                    <span class='badge bg-info category-badge'>Form</span>
                    <svg width='100%' height='250' style='background: linear-gradient(135deg, #fa709a 0%, #fee140 100%)'>
                        <text x='50%' y='50%' text-anchor='middle' fill='white' font-size='48' opacity='0.3'>📝</text>
                    </svg>
                    <div class='gallery-overlay'>
                        <h5 class='mb-1'>Application Form</h5>
                        <small>Multi-page data collection</small>
                    </div>
                </div>
            </div>

            <div class='col-md-4'>
                <div class='gallery-item'>
                    <span class='badge bg-danger category-badge'>Invoice</span>
                    <svg width='100%' height='250' style='background: linear-gradient(135deg, #30cfd0 0%, #330867 100%)'>
                        <text x='50%' y='50%' text-anchor='middle' fill='white' font-size='48' opacity='0.3'>💰</text>
                    </svg>
                    <div class='gallery-overlay'>
                        <h5 class='mb-1'>Payment Receipt</h5>
                        <small>Transaction confirmation document</small>
                    </div>
                </div>
            </div>

            <div class='col-md-4'>
                <div class='gallery-item'>
                    <span class='badge bg-secondary category-badge'>Report</span>
                    <svg width='100%' height='250' style='background: linear-gradient(135deg, #a8edea 0%, #fed6e3 100%)'>
                        <text x='50%' y='50%' text-anchor='middle' fill='white' font-size='48' opacity='0.3'>📈</text>
                    </svg>
                    <div class='gallery-overlay'>
                        <h5 class='mb-1'>Financial Statement</h5>
                        <small>Quarterly performance overview</small>
                    </div>
                </div>
            </div>
        </div>

        <div class='text-center mt-5'>
            <p class='text-muted'>All templates rendered with IronPDF's Chromium engine</p>
            <div class='d-flex justify-content-center gap-2'>
                <span class='badge bg-primary'>Bootstrap 5</span>
                <span class='badge bg-success'>Responsive</span>
                <span class='badge bg-info'>Print-Ready</span>
            </div>
        </div>
    </div>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(portfolioGallery);
pdf.SaveAs("portfolio-gallery.pdf");
Imports IronPdf

Dim renderer As New ChromePdfRenderer()

Dim portfolioGallery As String = "
<!DOCTYPE html>
<html>
<head>
    <meta charset='utf-8'>
    <link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
    <style>
        .gallery-item {
            position: relative;
            overflow: hidden;
            border-radius: 10px;
            box-shadow: 0 4px 6px rgba(0,0,0,0.1);
        }
        .gallery-item img {
            width: 100%;
            height: 250px;
            object-fit: cover;
            transition: transform 0.3s;
        }
        .gallery-item:hover img {
            transform: scale(1.1);
        }
        .gallery-overlay {
            position: absolute;
            bottom: 0;
            left: 0;
            right: 0;
            background: linear-gradient(to top, rgba(0,0,0,0.8), transparent);
            padding: 20px;
            color: white;
        }
        .category-badge {
            position: absolute;
            top: 10px;
            right: 10px;
        }
        @media print {
            .gallery-item { page-break-inside: avoid; }
        }
    </style>
</head>
<body>
    <div class='container py-5'>
        <div class='text-center mb-5'>
            <h1 class='display-4'>Design Portfolio</h1>
            <p class='lead text-muted'>Showcase of PDF Document Designs</p>
        </div>

        <div class='row mb-4'>
            <div class='col-12'>
                <div class='btn-group' role='group'>
                    <button class='btn btn-primary'>All Projects</button>
                    <button class='btn btn-outline-primary'>Invoices</button>
                    <button class='btn btn-outline-primary'>Reports</button>
                    <button class='btn btn-outline-primary'>Forms</button>
                    <button class='btn btn-outline-primary'>Certificates</button>
                </div>
            </div>
        </div>

        <div class='row g-4'>
            <div class='col-md-4'>
                <div class='gallery-item'>
                    <span class='badge bg-primary category-badge'>Invoice</span>
                    <svg width='100%' height='250' style='background: linear-gradient(135deg, #667eea 0%, #764ba2 100%)'>
                        <text x='50%' y='50%' text-anchor='middle' fill='white' font-size='48' opacity='0.3'>📄</text>
                    </svg>
                    <div class='gallery-overlay'>
                        <h5 class='mb-1'>Professional Invoice Template</h5>
                        <small>Corporate billing with itemized details</small>
                    </div>
                </div>
            </div>

            <div class='col-md-4'>
                <div class='gallery-item'>
                    <span class='badge bg-success category-badge'>Report</span>
                    <svg width='100%' height='250' style='background: linear-gradient(135deg, #f093fb 0%, #f5576c 100%)'>
                        <text x='50%' y='50%' text-anchor='middle' fill='white' font-size='48' opacity='0.3'>📊</text>
                    </svg>
                    <div class='gallery-overlay'>
                        <h5 class='mb-1'>Analytics Dashboard Report</h5>
                        <small>Data visualization and metrics</small>
                    </div>
                </div>
            </div>

            <div class='col-md-4'>
                <div class='gallery-item'>
                    <span class='badge bg-warning category-badge'>Certificate</span>
                    <svg width='100%' height='250' style='background: linear-gradient(135deg, #4facfe 0%, #00f2fe 100%)'>
                        <text x='50%' y='50%' text-anchor='middle' fill='white' font-size='48' opacity='0.3'>🏆</text>
                    </svg>
                    <div class='gallery-overlay'>
                        <h5 class='mb-1'>Award Certificate</h5>
                        <small>Professional achievement recognition</small>
                    </div>
                </div>
            </div>

            <div class='col-md-4'>
                <div class='gallery-item'>
                    <span class='badge bg-info category-badge'>Form</span>
                    <svg width='100%' height='250' style='background: linear-gradient(135deg, #fa709a 0%, #fee140 100%)'>
                        <text x='50%' y='50%' text-anchor='middle' fill='white' font-size='48' opacity='0.3'>📝</text>
                    </svg>
                    <div class='gallery-overlay'>
                        <h5 class='mb-1'>Application Form</h5>
                        <small>Multi-page data collection</small>
                    </div>
                </div>
            </div>

            <div class='col-md-4'>
                <div class='gallery-item'>
                    <span class='badge bg-danger category-badge'>Invoice</span>
                    <svg width='100%' height='250' style='background: linear-gradient(135deg, #30cfd0 0%, #330867 100%)'>
                        <text x='50%' y='50%' text-anchor='middle' fill='white' font-size='48' opacity='0.3'>💰</text>
                    </svg>
                    <div class='gallery-overlay'>
                        <h5 class='mb-1'>Payment Receipt</h5>
                        <small>Transaction confirmation document</small>
                    </div>
                </div>
            </div>

            <div class='col-md-4'>
                <div class='gallery-item'>
                    <span class='badge bg-secondary category-badge'>Report</span>
                    <svg width='100%' height='250' style='background: linear-gradient(135deg, #a8edea 0%, #fed6e3 100%)'>
                        <text x='50%' y='50%' text-anchor='middle' fill='white' font-size='48' opacity='0.3'>📈</text>
                    </svg>
                    <div class='gallery-overlay'>
                        <h5 class='mb-1'>Financial Statement</h5>
                        <small>Quarterly performance overview</small>
                    </div>
                </div>
            </div>
        </div>

        <div class='text-center mt-5'>
            <p class='text-muted'>All templates rendered with IronPDF's Chromium engine</p>
            <div class='d-flex justify-content-center gap-2'>
                <span class='badge bg-primary'>Bootstrap 5</span>
                <span class='badge bg-success'>Responsive</span>
                <span class='badge bg-info'>Print-Ready</span>
            </div>
        </div>
    </div>
</body>
</html>"

Dim pdf = renderer.RenderHtmlAsPdf(portfolioGallery)
pdf.SaveAs("portfolio-gallery.pdf")
$vbLabelText   $csharpLabel

Bu kod, duyarlı grid düzeni, görsel kategori rozetleri, gradyan kaplamaları ve üzerlerine gelince açılan efektlerle profesyonel bir PDF portföyü oluşturur. Chrome işleme motoru, tüm Bootstrap stillerini, CSS Grid düzenlerini ve özel CSS özelliklerini korur - geleneksel PDF kütüphanelerinin çoğaltmakta zorlandığı yetenekler.

Apitron PDF SDK'ya Karşı Temel Avantajlar:

  • Dönüştürme olmadan yerel Bootstrap 5 desteği
  • CSS Grid ve Flexbox düzenleri mükemmel şekilde oluşturulur
  • Gradyan arka planlar ve modern CSS efektleri
  • Daha basit kod ve daha yüksek kaliteli çıktı

Bootstrap PDF oluşturma konusunda kapsamlı bir kılavuz için, HTML to PDF Bootstrap Guide makalesine bakın.

6. Fiyatlandırma ve Lisanslar

IronPDF Fiyatlandırma ve Lisanslama

IronPDF, geliştirme için ücretsiz kullanılan ve ticari kullanım için lisanslanabilen bir C# kütüphanesidir. Tekil geliştiriciler, ajanslar, çok uluslu kuruluşlar, SaaS ve OEM yeniden dağıtım için proje lisansları mevcuttur. Tüm lisanslar, 30 günlük para iade garantisi, bir yıl destek ve güncellemeler, geliştirme/deneme/üretim geçerliliği ve süresiz lisans (tek seferlik satın alma) sağlar.

Lite paketi, $799 ücretle, yinelenen masraflar olmadan sunulmaktadır. IronPDF ürün lisansı sayfasında en iyi lisansı seçmek için daha fazla bilgi ve yardım sunulmaktadır.

A Comparison of IronPDF with Apitron PDF SDK .NET - Figure 8: IronPDF Lisanslama

IronPDF Lisanslama

Apitron PDF Kit Fiyatlandırma ve Lisanslama

Şu anda kullanımda olan iki lisanslama şeması vardır - Modern ve Eski. Zaten bir lisansınız varsa, lisansınızın sona ermesine kadar eski lisans şeması sizin için aktif kalır. Daha sonra, geçiş için müşteri desteği ile iletişime geçmelisiniz. Modern lisanslama şeması yalnızca yeni bir müşteriyseniz sizin için geçerlidir.

Modern şemanın altında üç lisanslama kademesi vardır:

  • Değerlendirme - tam işlevsel bir ürünü kullanmak için üç aylık değerlendirme süresi. Sadece NuGet'ten paketi indirip geliştirmeye başlayın.
  • Topluluk - ticari olmayan projelerinizde ücret ödemeden tam işlevli ürünleri kullanabilirsiniz. Onay gereklidir.
  • Ticari - yukarıda tanımlanmayan her kullanım durumu. Fiyatlandırma kullanım paternine bağlıdır.

Sonuç

IronPDF kütüphanesi, HTML, JS, CSS, JPG, PNG, GIF ve SVG gibi belge türlerinden pikselleri mükemmel bir şekilde PDF'ler oluşturur. Krom motoru, HTML dosyalarını veya URL'lerini işler ve mükemmel PDF'ler elde edilmesine yardımcı olur.

Apitron, %100 PDF spesifikasyon uyumlu olacak şekilde uygulanan Sabit düzen API'sini kullanarak PDF oluşturmanıza olanak tanır. HTML ve CSS'ye benzer şekilde stil odaklı bir içerik üretim yöntemi olarak, bu sabit düzen API'si, dakikalar içinde çarpıcı raporlar, faturalar, kataloglar ve daha fazlasını oluşturma yeteneği sağlar. Ayrıca XML şablonlarının oluşturulmasını destekler.

Apitron PDF için lisans fiyatları web sitelerinde mevcut değildir. Destekle iletişime geçmeniz ve kullanımınıza bağlı olarak bir teklif almanız gerekmektedir. Öte yandan, IronPDF web sitesinde çok net bir lisanslama paketi sunmaktadır. Bu, IronPDF'i rakiplerinden ayırır ve kullanıcıların ihtiyaçlarına göre akıllıca seçim yapmalarını sağlar.

IronPDF ile PDF dosyaları ile çalışmak, Apitron PDF'den daha kolaydır. IronPDF, zorlu PDF işlerinde daha az kod satırı yazmaya olanak tanır. IronPDF, birden fazla dosya türünden PDF üretmek için birden fazla yöntem sunar, oysa Apitron yalnızca XML belgelerini PDF belgelerine dönüştürebilir. Apitron'a kıyasla IronPDF'de herhangi bir teknik seçenek eklemeden mükemmel bir çıktı elde edilir.

Tüm Iron Software müşterileri, şirketin beş ürününün tamamını iki tanesinin fiyatına satın alma seçeneğine sahiptir. IronPDF'in ücretsiz, 30 günlük deneme sürümünü deneyin ve tam işlevselliğini test edin. IronSoftware.com'da Iron Software ürünlerinin tam paketini satın alın.

{Apitron PDF Kit, ilgili sahibi tarafından tescilli bir markadır. Bu site, Apitron PDF Kit ile bağlantılı, onaylı veya sponsorlu değildir. Tüm ürün adları, logolar ve markalar kendi sahiplerinin mülkiyetindedir. Karşılaştırmalar yalnızca bilgilendirme amaçlıdır ve yazım sırasında kamuya açık bilgileri yansıtır.)}]

Sıkça Sorulan Sorular

C# ile HTML'yi PDF'e nasıl dönüştürebilirsiniz?

HTML dizgilerini PDF'lere dönüştürmek için IronPDF'nin RenderHtmlAsPdf yöntemini kullanabilirsiniz. Ayrıca RenderHtmlFileAsPdf kullanarak HTML dosyalarının PDF'lere dönüştürülmesini de sağlayabilirsiniz.

IronPDF PDF oluşturma için hangi özellikleri sunar?

IronPDF, HTML, CSS ve JavaScript'den PDF oluşturmayi, URL'leri yüklemeyi, metin ve grafik çıkarmayi, PDF'leri birlestirmeyi ve daha fazlasini destekler. .NET Core, Azure, AWS, Docker, Linux ve Windows ile uyumludur.

C#'da PDF'i dijital olarak nasıl imzalayabilirsiniz?

IronPDF ile PDF'leri bir PDF imza sertifikasi kullanarak dijital olarak imzalayabilirsiniz, bu da bazi kod satirlariyla entegre edilebilir.

IronPDF için yükleme seçenekleri nelerdir?

IronPDF, NuGet Paket Yönetici, Geliştirici Komut İstemi veya NuGet paketi veya IronPDF .DLL kütüphanesini doğrudan indirerek yüklenebilir.

IronPDF için ücretsiz bir versiyon mevcut mu?

Evet, IronPDF ücretsiz bir geliştirme versiyonu ve ticari lisanslar sunar. 30 günlük para iade garantisi de dahil olmak uzere detayli fiyat bilgileri web sitelerinde mevcuttur.

Apitron PDF Kit HTML’den PDF'e dönüşümu nasıl ele alıyor?

Apitron PDF Kit direk HTML'den PDF’e dönüşümu desteklemez ancak XML dosyalarını PDF'e cevirir.

Apitron PDF Kit'in onde gelen özellikleri nelerdir?

Apitron PDF Kit, resimler, cizimler, metinler ekleme, belgeleri imzalama ve PDF'leri birlestirme veya bolme gibi kapsamli PDF manipüle etme olanaklari saglar. Ancak, doğrudan HTML'den PDF'e dönüşüm desteklemez.

C#'da bir PDF'e başlik ve alt başlik nasıl eklenir?

IronPDF, AddTextHeader ve AddTextFooter gibi metodlar kullanarak PDF'lere kolayca başlik ve alt başlik eklemenizi saglar.

Apitron PDF Kit için hangi lisanslama seçenekleri mevcut?

Apitron PDF Kit, ticari olmayan projeler için ucluk bir değerlendirme donemi ve bir topluluk lisansı sunar. Ticari kullanım için direkt olarak fiyat teklifi almak amacıyla iletişim kurmanız gerekir.

.NET gelisimi için hangi PDF kütüphanesi daha kullanisli?

IronPDF genellikle .NET gelisimi için daha kullanisli, daha basit bir API sunuyor ve Apitron PDF Kit'e kiyasla daha az kod satırı gerektiriyor.

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