C#'da Örnekteki iTextSharp ve IronPDF Kullanarak PDF'ye Baslik ve Altbilgi Ekleyin
Full Comparison
Looking for a detailed feature-by-feature breakdown? See how IronPDF stacks up against Itext on pricing, HTML support, and licensing.
C#'te PDF Belgelerine Başlık ve Altbilgi Ekleme
PDF belgelerine başlık ve altbilgi eklemek, profesyonel raporlar, faturalar ve iş belgeleri oluşturmak için gereklidir. Geliştiriciler, PdfPageEventHelper ve OnEndPage metodunu kullanarak iTextSharp çözümleri ararken, modern .NET kütüphanelerinin aynı sonuçları elde etmek için önemli ölçüde daha basit yaklaşımlar sunduğunu göreceklerdir.
Bu kılavuz, iText 7'nin geleneksel yaklaşımını IronPDF'nin özlü API'si ile karşılaştırarak, C# kullanarak PDF dosyalarına başlık ve altbilgi eklemeyi gösterir. Sonunda, yeni bir Document oluşturma işleminden nihai PDF dosyası oluşturulmasına kadar her iki uygulamayı da anlayacak ve projenizin gereksinimlerine en uygun yaklaşımı seçebileceksiniz.

Profesyonel Belgelerde PDF Başlık ve Altbilgiler Neden Önemlidir?
Başlıklar ve altbilgiler, profesyonel PDF belgelerinde kritik işlevler sağlar. Logo görüntüleri aracılığıyla tutarlı marka sunar, sayfa numaraları ile sayfa gezintisini etkinleştirir, önemli meta verileri (tarihler ve belge başlıkları gibi) gösterir ve zaman damgaları ve sürüm bilgileri ile belgenin otantikliğini sağlar.
Kurumsal ortamlarda, başlıklar ve altbilgiler genellikle yasal bir öneme sahiptir. Finansal raporlar, denetim izleme yolları için zaman damgaları gerektirir. Sözleşmeler, tamlığı sağlamak için sayfa numaralandırması gerektirir. İç belgelerde her sayfada gizlilik bildirimleri olması gerekebilir. Bu gereksinimleri programlı bir şekilde karşılamak, sayfa seviyesinde içerik enjeksiyonunu güvenilir bir şekilde yöneten bir PDF kütüphanesi gerektirir.
Başlık ve altbilgi eklemenin programlı olarak başlıca nedenleri şunlardır:
- Denetim uyumu -- her sayfadaki zaman damgaları ve sürüm numaraları düzenleyici gereksinimleri karşılar
- Marka tutarlılığı -- şirket logoları ve stil düzenleri tüm üretilen belgelerde birbiriyle uyumlu olarak uygulanır
- Gezinme -- sayfa numaraları ve bölüm başlıkları okuyucuların bilgiyi hızlı bir şekilde bulmalarını sağlar
- Otantiklik -- yazar adı, oluşturma tarihi ve belge kimliği belgenin bütünlüğü konusunda itirazları önler

C#'te Metin Başlığı ve Altbilgi Nasıl Eklersiniz?
IronPDF, .NET uygulamalarında PDF belgelerine başlık ve altbilgiler eklemek için en doğrudan yaklaşımı sağlar. ChromePdfRenderer sınıfını TextHeaderFooter veya HtmlHeaderFooter ile birleştirerek minimal kodla başlıklar ve alt bilgiler oluşturabilirsiniz; ayrı hücreler oluşturmanıza veya contentbyte nesnesini elle yönetmenize gerek yoktur.
Herhangi bir kod yazmadan önce, IronPDF'i projenize NuGet kullanarak ekleyin:
Install-Package IronPdf
dotnet add package IronPdf
Install-Package IronPdf
dotnet add package IronPdf
Kütüphane herhangi bir harici bağımlılık gerektirmez ve kurulumdan hemen sonra çalışır. Windows, Linux ve macOS'ta platforma özel yapılandırma gerektirmeden .NET 5, 6, 7, 8 ve 10'u hedefler.
Eski iTextSharp desenlerinde, geliştiriciler başlık ve alt bilgi mantığını elle enjekte etmek için private static void AddContent() gibi yardımcı yöntemler oluşturuyordu. IronPDF, tamamen bu tür şablon kodların gereğini ortadan kaldırır.
İşte bir PDF dosyasına hem metin başlığını hem de altbilgiyi ekleyen tam bir örnek:
using IronPdf;
// Initialize the PDF renderer
var renderer = new ChromePdfRenderer();
// Configure the text header
renderer.RenderingOptions.TextHeader = new TextHeaderFooter
{
CenterText = "Quarterly Sales Report",
DrawDividerLine = true,
FontSize = 14
};
// Configure the text footer with page number and date
renderer.RenderingOptions.TextFooter = new TextHeaderFooter
{
LeftText = "{date}",
RightText = "Page {page} of {total-pages}",
DrawDividerLine = true,
FontSize = 10
};
// Set margins to accommodate header and footer
renderer.RenderingOptions.MarginTop = 25;
renderer.RenderingOptions.MarginBottom = 25;
// Generate PDF from HTML content
var pdf = renderer.RenderHtmlAsPdf("<h1>Sales Data</h1><p>Content goes here...</p>");
pdf.SaveAs("report-with-headers.pdf");
using IronPdf;
// Initialize the PDF renderer
var renderer = new ChromePdfRenderer();
// Configure the text header
renderer.RenderingOptions.TextHeader = new TextHeaderFooter
{
CenterText = "Quarterly Sales Report",
DrawDividerLine = true,
FontSize = 14
};
// Configure the text footer with page number and date
renderer.RenderingOptions.TextFooter = new TextHeaderFooter
{
LeftText = "{date}",
RightText = "Page {page} of {total-pages}",
DrawDividerLine = true,
FontSize = 10
};
// Set margins to accommodate header and footer
renderer.RenderingOptions.MarginTop = 25;
renderer.RenderingOptions.MarginBottom = 25;
// Generate PDF from HTML content
var pdf = renderer.RenderHtmlAsPdf("<h1>Sales Data</h1><p>Content goes here...</p>");
pdf.SaveAs("report-with-headers.pdf");
Imports IronPdf
' Initialize the PDF renderer
Dim renderer = New ChromePdfRenderer()
' Configure the text header
renderer.RenderingOptions.TextHeader = New TextHeaderFooter With {
.CenterText = "Quarterly Sales Report",
.DrawDividerLine = True,
.FontSize = 14
}
' Configure the text footer with page number and date
renderer.RenderingOptions.TextFooter = New TextHeaderFooter With {
.LeftText = "{date}",
.RightText = "Page {page} of {total-pages}",
.DrawDividerLine = True,
.FontSize = 10
}
' Set margins to accommodate header and footer
renderer.RenderingOptions.MarginTop = 25
renderer.RenderingOptions.MarginBottom = 25
' Generate PDF from HTML content
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Sales Data</h1><p>Content goes here...</p>")
pdf.SaveAs("report-with-headers.pdf")
TextHeaderFooter sınıfı, başlık veya alt bilgi alanının sol tarafına, ortasına veya sağına metin yerleştirmek için özellikler sağlar. DrawDividerLine özelliği, başlık veya alt bilginin ana belge içeriğiyle arasında profesyonel bir ayırıcı çizgisi ekler. {page}, {total-pages} ve {date} gibi birleştirilebilir alanlar, PDF oluşturulurken otomatik olarak dinamik değerlerle doldurulur.
IronPDF, kenar boşluklarının hesaplamalarını otomatik olarak gerçekleştirir ve başlıklar ile altbilgilerin belge içeriğinizle çakışmamasını sağlar. TextHeaderFooter sınıfı, size dış bağımlılıklar olmadan tipografi üzerinde kontrol sağlayarak IronSoftware.Drawing.FontTypes'den yazı tipi türlerini destekler.
Çıktı

Tüm aktarımın, açık ve okunaklı özellik atamaları ile tek bir kod bloğuna nasıl sığdığını gözlemleyin. Ayrı bir sınıf dosyası oluşturmaya, piksel pozisyonlarını hesaplamaya veya tuval nesnelerini yönetmeye gerek yoktur. Kütüphane bu karmaşık konuları soyutlayarak, içerik yerine PDF oluşturmanın mekanizmalarına odaklanmanızı sağlar.
HTML-Styled Başlıklar ve Altbilgiler Nasıl Eklenir?
Daha sofistike tasarımlar için, IronPDF'nin HtmlHeaderFooter sınıfı tam HTML ve CSS stilinı etkinleştirir. Bu yaklaşım, başlıkların bir resim logosu, karmaşık düzenler veya marka özelinde stilleri içermesi gerektiğinde özellikle değerlidir -- PdfPCell nesnelerini manuel olarak oluşturmadan veya new Phrase yapıcılarını kullanmadan.
using IronPdf;
using System;
var renderer = new ChromePdfRenderer();
// Create an HTML header with logo and styling
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
HtmlFragment = @"
<div style='width: 100%; font-family: Arial, sans-serif;'>
<img src='logo.png' style='height: 30px; float: left;' />
<span style='float: right; font-size: 12px; color: #666;'>
Confidential Document
</span>
</div>",
MaxHeight = 25,
DrawDividerLine = true,
BaseUrl = new Uri(@"C:\assets\").AbsoluteUri
};
// Create an HTML footer with page numbering
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
HtmlFragment = @"
<div style='text-align: center; font-size: 10px; color: #999;'>
<span>Generated on {date} at {time}</span>
<br/>
<span>Page {page} of {total-pages}</span>
</div>",
MaxHeight = 20
};
renderer.RenderingOptions.MarginTop = 30;
renderer.RenderingOptions.MarginBottom = 25;
var pdf = renderer.RenderHtmlAsPdf("<h1>Project Proposal</h1><p>Document content...</p>");
pdf.SaveAs("styled-document.pdf");
using IronPdf;
using System;
var renderer = new ChromePdfRenderer();
// Create an HTML header with logo and styling
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
HtmlFragment = @"
<div style='width: 100%; font-family: Arial, sans-serif;'>
<img src='logo.png' style='height: 30px; float: left;' />
<span style='float: right; font-size: 12px; color: #666;'>
Confidential Document
</span>
</div>",
MaxHeight = 25,
DrawDividerLine = true,
BaseUrl = new Uri(@"C:\assets\").AbsoluteUri
};
// Create an HTML footer with page numbering
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
HtmlFragment = @"
<div style='text-align: center; font-size: 10px; color: #999;'>
<span>Generated on {date} at {time}</span>
<br/>
<span>Page {page} of {total-pages}</span>
</div>",
MaxHeight = 20
};
renderer.RenderingOptions.MarginTop = 30;
renderer.RenderingOptions.MarginBottom = 25;
var pdf = renderer.RenderHtmlAsPdf("<h1>Project Proposal</h1><p>Document content...</p>");
pdf.SaveAs("styled-document.pdf");
Imports IronPdf
Imports System
Dim renderer As New ChromePdfRenderer()
' Create an HTML header with logo and styling
renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter With {
.HtmlFragment = "
<div style='width: 100%; font-family: Arial, sans-serif;'>
<img src='logo.png' style='height: 30px; float: left;' />
<span style='float: right; font-size: 12px; color: #666;'>
Confidential Document
</span>
</div>",
.MaxHeight = 25,
.DrawDividerLine = True,
.BaseUrl = New Uri("C:\assets\").AbsoluteUri
}
' Create an HTML footer with page numbering
renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter With {
.HtmlFragment = "
<div style='text-align: center; font-size: 10px; color: #999;'>
<span>Generated on {date} at {time}</span>
<br/>
<span>Page {page} of {total-pages}</span>
</div>",
.MaxHeight = 20
}
renderer.RenderingOptions.MarginTop = 30
renderer.RenderingOptions.MarginBottom = 25
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Project Proposal</h1><p>Document content...</p>")
pdf.SaveAs("styled-document.pdf")
Bu örnek kod, HTML başlıklarının resimleri metinlerle birleştirebileceğini gösterir. BaseUrl özelliği, göreli resim URL'lerini çözmek için kök yolu belirler, böylece şirket logolarını veya diğer grafiklerini dahil etmek kolaylaşır. MaxHeight özelliği, başlığın belirtilen boyutları aşmamasını sağlar, tutarlı belge düzenlerini korur.
HTML başlıklarında ve alt bilgilerinde birleştirilebilir alanlar ({page}, {total-pages}, {url}, {date}, {time}, {html-title}, {pdf-title}) aynı şekilde çalışarak ek kod gerektirmeden dinamik içerik eklemesi sağlar. Çeşitli başlık stillerinin uygulanmasına ilişkin rehberlik için, Başlıklar ve Altbilgiler Nasıl Yapılır Kılavuzuna bakın.
HTML yaklaşımı, markalı belgeler oluştururken parlaklık gösterir. Pazarlama ekipleri, geliştiricilerin doğrudan entegre ettiği HTML şablonları sağlayabilir, onaylanmış tasarımlarının piksel mükemmelliğini garanti eder. font-family, color, background-color ve border gibi CSS özellikleri beklenildiği gibi çalışır ve diğer kütüphanelerde geniş kapsamlı düşük seviyede kod gerektirecek sofistike görsel işlemlere olanak tanır.

Mevcut PDF Belgelerine Başlık Ekleme Nasıl Yapılır?
Yaygın bir gereksinim, zaten var olan PDF dosyalarına başlık ve altbilgiler eklenmesini içerir -- ister yüklenmiş belgeler, birleştirilmiş dosyalar veya diğer sistemler tarafından üretilmiş PDF'ler olsun. IronPDF, bu senaryoya AddHtmlHeaders ve AddHtmlFooters yöntemleri ile yaklaşır.
using IronPdf;
// Load an existing PDF document
var pdf = PdfDocument.FromFile("customer-profile.pdf");
// Define the header to add
var header = new HtmlHeaderFooter
{
HtmlFragment = "<div style='text-align: center;'>REVISED COPY - {date}</div>",
MaxHeight = 20
};
// Define the footer to add
var footer = new HtmlHeaderFooter
{
HtmlFragment = "<div style='text-align: right;'>Page {page}</div>",
MaxHeight = 15
};
// Apply headers and footers to all pages
pdf.AddHtmlHeaders(header);
pdf.AddHtmlFooters(footer);
pdf.SaveAs("document-with-new-headers.pdf");
using IronPdf;
// Load an existing PDF document
var pdf = PdfDocument.FromFile("customer-profile.pdf");
// Define the header to add
var header = new HtmlHeaderFooter
{
HtmlFragment = "<div style='text-align: center;'>REVISED COPY - {date}</div>",
MaxHeight = 20
};
// Define the footer to add
var footer = new HtmlHeaderFooter
{
HtmlFragment = "<div style='text-align: right;'>Page {page}</div>",
MaxHeight = 15
};
// Apply headers and footers to all pages
pdf.AddHtmlHeaders(header);
pdf.AddHtmlFooters(footer);
pdf.SaveAs("document-with-new-headers.pdf");
Imports IronPdf
' Load an existing PDF document
Dim pdf = PdfDocument.FromFile("customer-profile.pdf")
' Define the header to add
Dim header As New HtmlHeaderFooter With {
.HtmlFragment = "<div style='text-align: center;'>REVISED COPY - {date}</div>",
.MaxHeight = 20
}
' Define the footer to add
Dim footer As New HtmlHeaderFooter With {
.HtmlFragment = "<div style='text-align: right;'>Page {page}</div>",
.MaxHeight = 15
}
' Apply headers and footers to all pages
pdf.AddHtmlHeaders(header)
pdf.AddHtmlFooters(footer)
pdf.SaveAs("document-with-new-headers.pdf")
PdfDocument sınıfı, yüklü veya işlenmiş bir PDF'yi temsil eder ve sonradan yapılan değişiklikler için yöntemler sunar. Render etme ve modifikasyon arasındaki bu ayrım, PDF belgelerinin birden fazla işlem aşamasından geçtiği iş akışlarını mümkün kılar. AddHtmlHeaders yöntemi, başlığı otomatik olarak her sayfaya uygular, ancak sayfa dizinleri koleksiyonu geçirerek belirli sayfaları hedefleyebilirsiniz.
Girdi

Çıktı

Bu özellik, taranmış belgeler, kullanıcı yüklemeleri veya üçüncü taraf API yanıtları gibi çeşitli kaynaklardan gelen PDF dosyalarını alan belge yönetim sistemlerinde çok değerli hale gelir. IronPDF, dağıtım veya arşivleme öncesinde markalama veya sayfa numaralandırmayı standart hale getirir.
Farklı Sayfalara Farklı Başlıklar Nasıl Eklenir?
Bazı belgeler ilk sayfanın farklı bir başlığa (veya hiç başlığa) sahip olmasını gerektirir, sonraki sayfalar ise standart format kullanır. IronPDF, sayfa-dizin-tabanlı başlık uygulaması yoluyla bunu destekler -- void OnEndPage işleyicileri içinde koşulları kontrol etmenize veya döngü sayaçlarını manuel olarak yönetmenize gerek yoktur:
using IronPdf;
using System.Collections.Generic;
using System.Linq;
using System.Text;
var renderer = new ChromePdfRenderer();
// Build multi-page HTML with print page-breaks between pages
var pages = new List<string>
{
"<section><h1>Title Page</h1><p>Intro text on page 1.</p></section>",
"<section><h2>Report</h2><p>Detailed report content on page 2.</p></section>",
"<section><h2>Appendix</h2><p>Appendix content on page 3.</p></section>"
};
var sb = new StringBuilder();
sb.AppendLine("<!doctype html><html><head><meta charset='utf-8'>");
sb.AppendLine("<style>");
sb.AppendLine(" body { font-family: Arial, sans-serif; margin: 20px; }");
sb.AppendLine(" .page-break { page-break-after: always; }");
sb.AppendLine("</style>");
sb.AppendLine("</head><body>");
for (int i = 0; i < pages.Count; i++)
{
sb.AppendLine(pages[i]);
if (i < pages.Count - 1)
sb.AppendLine("<div class='page-break'></div>");
}
sb.AppendLine("</body></html>");
var pdf = renderer.RenderHtmlAsPdf(sb.ToString());
// Create the standard header for pages 2 onwards
var standardHeader = new HtmlHeaderFooter
{
HtmlFragment = "<div style='text-align: center;'>Standard Header - Page {page}</div>",
MaxHeight = 20
};
// Apply to all pages except the first (index 0)
var pageIndices = Enumerable.Range(1, pdf.PageCount - 1).ToList();
pdf.AddHtmlHeaders(standardHeader, 1, pageIndices);
pdf.SaveAs("document-skip-first-page-header.pdf");
using IronPdf;
using System.Collections.Generic;
using System.Linq;
using System.Text;
var renderer = new ChromePdfRenderer();
// Build multi-page HTML with print page-breaks between pages
var pages = new List<string>
{
"<section><h1>Title Page</h1><p>Intro text on page 1.</p></section>",
"<section><h2>Report</h2><p>Detailed report content on page 2.</p></section>",
"<section><h2>Appendix</h2><p>Appendix content on page 3.</p></section>"
};
var sb = new StringBuilder();
sb.AppendLine("<!doctype html><html><head><meta charset='utf-8'>");
sb.AppendLine("<style>");
sb.AppendLine(" body { font-family: Arial, sans-serif; margin: 20px; }");
sb.AppendLine(" .page-break { page-break-after: always; }");
sb.AppendLine("</style>");
sb.AppendLine("</head><body>");
for (int i = 0; i < pages.Count; i++)
{
sb.AppendLine(pages[i]);
if (i < pages.Count - 1)
sb.AppendLine("<div class='page-break'></div>");
}
sb.AppendLine("</body></html>");
var pdf = renderer.RenderHtmlAsPdf(sb.ToString());
// Create the standard header for pages 2 onwards
var standardHeader = new HtmlHeaderFooter
{
HtmlFragment = "<div style='text-align: center;'>Standard Header - Page {page}</div>",
MaxHeight = 20
};
// Apply to all pages except the first (index 0)
var pageIndices = Enumerable.Range(1, pdf.PageCount - 1).ToList();
pdf.AddHtmlHeaders(standardHeader, 1, pageIndices);
pdf.SaveAs("document-skip-first-page-header.pdf");
Imports IronPdf
Imports System.Collections.Generic
Imports System.Linq
Imports System.Text
Dim renderer As New ChromePdfRenderer()
' Build multi-page HTML with print page-breaks between pages
Dim pages As New List(Of String) From {
"<section><h1>Title Page</h1><p>Intro text on page 1.</p></section>",
"<section><h2>Report</h2><p>Detailed report content on page 2.</p></section>",
"<section><h2>Appendix</h2><p>Appendix content on page 3.</p></section>"
}
Dim sb As New StringBuilder()
sb.AppendLine("<!doctype html><html><head><meta charset='utf-8'>")
sb.AppendLine("<style>")
sb.AppendLine(" body { font-family: Arial, sans-serif; margin: 20px; }")
sb.AppendLine(" .page-break { page-break-after: always; }")
sb.AppendLine("</style>")
sb.AppendLine("</head><body>")
For i As Integer = 0 To pages.Count - 1
sb.AppendLine(pages(i))
If i < pages.Count - 1 Then
sb.AppendLine("<div class='page-break'></div>")
End If
Next
sb.AppendLine("</body></html>")
Dim pdf = renderer.RenderHtmlAsPdf(sb.ToString())
' Create the standard header for pages 2 onwards
Dim standardHeader As New HtmlHeaderFooter With {
.HtmlFragment = "<div style='text-align: center;'>Standard Header - Page {page}</div>",
.MaxHeight = 20
}
' Apply to all pages except the first (index 0)
Dim pageIndices = Enumerable.Range(1, pdf.PageCount - 1).ToList()
pdf.AddHtmlHeaders(standardHeader, 1, pageIndices)
pdf.SaveAs("document-skip-first-page-header.pdf")
AddHtmlHeaders içerisinde ikinci parametre, {page} birleştirilebilir alan için başlangıç sayfa numarasını belirtirken, üçüncü parametre başlığı alacak sayfa dizinlerini kabul eder. Bu ayrıntılı kontrol, karmaşık belge düzenlerini karmaşık koşullu mantık olmadan etkinleştirir. Gelişmiş Başlıklar ve Altbilgiler örneği, çift/eşit sayfa ayrımı dahil olmak üzere ek senaryoları kapsar.
Çıktı

Sayfa Numaralarının Ötesinde Dinamik İçerik Nasıl Uygulanır?
Birleştirilebilir alanlar sistemi, render sırasında otomatik olarak dolacak çeşitli dinamik değerleri destekler. Aşağıdaki tablo tüm mevcut alanları ve anlamlarını listeler:
| Alan | Eklenen Değer | Tipik Kullanım |
|---|---|---|
{page} |
Cari sayfa numarası | "Sayfa 3" gösteren altbilgiler |
{total-pages} |
Toplam sayfa sayısı | "10 Üzerinden Sayfa 3" gösteren altbilgiler |
{date} |
Yerel formatta geçerli tarih | Denetim zaman damgaları, rapor tarihleri |
{time} |
Yerel formatta geçerli saat | Düzenleyici uyumlu altbilgiler |
{html-title} |
HTML etiketinin içeriği |
Sayfa başlığı gösteren belge başlıkları |
{pdf-title} |
PDF belgesi meta verileri başlığı | Belge ismi ile markalı altbilgiler |
{url} |
Bir web adresinden render edilirken kaynak URL | Web içeriği için arşiv altbilgileri |
Gerçekten dinamik içerik için -- çalışma zamanında belirlenen değerler -- HTML parça dizisini HtmlFragment özelliğine atamadan önce interpolasyonlu değerlerle oluşturabilirsiniz. Bu yaklaşım, veritabanından alınan değerler, kullanıcı bilgileri veya hesaplanmış verileri içeren başlıklar sağlar:
using IronPdf;
string userName = GetCurrentUserName();
string documentVersion = "v2.3.1";
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
HtmlFragment = $"<div style='font-size:10px;'>Prepared by: {userName} " +
$"| Version: {documentVersion} " +
"| Page {page} of {total-pages}</div>",
MaxHeight = 20
};
var pdf = renderer.RenderHtmlAsPdf("<h1>Annual Report</h1><p>Body content here.</p>");
pdf.SaveAs("dynamic-header-report.pdf");
using IronPdf;
string userName = GetCurrentUserName();
string documentVersion = "v2.3.1";
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
HtmlFragment = $"<div style='font-size:10px;'>Prepared by: {userName} " +
$"| Version: {documentVersion} " +
"| Page {page} of {total-pages}</div>",
MaxHeight = 20
};
var pdf = renderer.RenderHtmlAsPdf("<h1>Annual Report</h1><p>Body content here.</p>");
pdf.SaveAs("dynamic-header-report.pdf");
Imports IronPdf
Dim userName As String = GetCurrentUserName()
Dim documentVersion As String = "v2.3.1"
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter With {
.HtmlFragment = $"<div style='font-size:10px;'>Prepared by: {userName} " &
$"| Version: {documentVersion} " &
"| Page {page} of {total-pages}</div>",
.MaxHeight = 20
}
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Annual Report</h1><p>Body content here.</p>")
pdf.SaveAs("dynamic-header-report.pdf")
Dikkat edin ki, {page} ve {total-pages} belirteçleri C# dizesi birleştirme içinde düz dizeler olarak bırakılır -- interpolasyonlu kısmın içinde değil. PDF oluşturulurken, IronPDF bu belirteçleri otomatik olarak değiştirir. Bu desen, çalışma zamanı değeri için her şeyde çalışır: Active Directory'den kullanıcı adları, bir veritabanından belge kimlikleri, derleme hattınızdan sürüm dizeleri veya raporlama motorunuzdan hesaplanan toplamlar.
Birleştirilebilir alanlar ve dize interpolasyonu kombinasyonu, iş belgelerinde yaygın olan gelişmiş altbilgi tasarımlarını mümkün kılar. Hukuk departmanları sıklıkla belge başlığı, tarih ve sayfa sayısını gösteren altbilgiler ister. Finansal raporlar, düzenleyici uyumluluk için zaman damgalarına ihtiyaç duyabilir. Bu gereklilikler, her belge türü için özel kod olmadan karşılanır.
iText 7 Yaklaşımı Nasıl Görünür?
iText 7'ye (iTextSharp'ın ardılı) aşina olan geliştiriciler, başlık ve altbilgi eklemenin olay işleyicileri uygulamayı gerektirdiğini bilirler. Kütüphane, OnEndPage ve OnCloseDocument gibi belge yaşam döngüsü olaylarına yanıt veren bir sınıf oluşturduğunuz bir sayfa olay sistemi kullanır.
Aynı başlık ve alt bilgi uygulaması, ITextEvents deseni kullanılarak iText 7 ile nasıl görünür:
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
using iText.Kernel.Events;
using iText.Kernel.Geom;
using iText.Layout.Properties;
// Event handler class for headers and footers -- similar to PdfPageEventHelper
public class ITextEvents : IEventHandler
{
private string _header;
public string Header
{
get { return _header; }
set { _header = value; }
}
public void HandleEvent(Event currentEvent)
{
PdfDocumentEvent docEvent = (PdfDocumentEvent)currentEvent;
PdfDocument pdfDoc = docEvent.GetDocument();
PdfPage page = docEvent.GetPage();
Rectangle pageSize = page.GetPageSize();
// Create a new PdfCanvas for the contentbyte object
PdfCanvas pdfCanvas = new PdfCanvas(
page.NewContentStreamBefore(),
page.GetResources(),
pdfDoc);
Canvas canvas = new Canvas(pdfCanvas, pageSize);
// Add header text at calculated position
canvas.ShowTextAligned(
new Paragraph("Quarterly Sales Report"),
pageSize.GetWidth() / 2,
pageSize.GetTop() - 20,
TextAlignment.CENTER);
// Add footer with page number
int pageNumber = pdfDoc.GetPageNumber(page);
canvas.ShowTextAligned(
new Paragraph($"Page {pageNumber}"),
pageSize.GetWidth() / 2,
pageSize.GetBottom() + 20,
TextAlignment.CENTER);
canvas.Close();
}
}
// Usage in main code
var writer = new PdfWriter("report.pdf");
var pdfDoc = new PdfDocument(writer);
var document = new Document(pdfDoc);
// Register the event handler for END_PAGE
pdfDoc.AddEventHandler(PdfDocumentEvent.END_PAGE, new ITextEvents());
document.Add(new Paragraph("Sales Data"));
document.Add(new Paragraph("Content goes here..."));
document.Close();
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
using iText.Kernel.Events;
using iText.Kernel.Geom;
using iText.Layout.Properties;
// Event handler class for headers and footers -- similar to PdfPageEventHelper
public class ITextEvents : IEventHandler
{
private string _header;
public string Header
{
get { return _header; }
set { _header = value; }
}
public void HandleEvent(Event currentEvent)
{
PdfDocumentEvent docEvent = (PdfDocumentEvent)currentEvent;
PdfDocument pdfDoc = docEvent.GetDocument();
PdfPage page = docEvent.GetPage();
Rectangle pageSize = page.GetPageSize();
// Create a new PdfCanvas for the contentbyte object
PdfCanvas pdfCanvas = new PdfCanvas(
page.NewContentStreamBefore(),
page.GetResources(),
pdfDoc);
Canvas canvas = new Canvas(pdfCanvas, pageSize);
// Add header text at calculated position
canvas.ShowTextAligned(
new Paragraph("Quarterly Sales Report"),
pageSize.GetWidth() / 2,
pageSize.GetTop() - 20,
TextAlignment.CENTER);
// Add footer with page number
int pageNumber = pdfDoc.GetPageNumber(page);
canvas.ShowTextAligned(
new Paragraph($"Page {pageNumber}"),
pageSize.GetWidth() / 2,
pageSize.GetBottom() + 20,
TextAlignment.CENTER);
canvas.Close();
}
}
// Usage in main code
var writer = new PdfWriter("report.pdf");
var pdfDoc = new PdfDocument(writer);
var document = new Document(pdfDoc);
// Register the event handler for END_PAGE
pdfDoc.AddEventHandler(PdfDocumentEvent.END_PAGE, new ITextEvents());
document.Add(new Paragraph("Sales Data"));
document.Add(new Paragraph("Content goes here..."));
document.Close();
Imports iText.Kernel.Pdf
Imports iText.Layout
Imports iText.Layout.Element
Imports iText.Kernel.Events
Imports iText.Kernel.Geom
Imports iText.Layout.Properties
' Event handler class for headers and footers -- similar to PdfPageEventHelper
Public Class ITextEvents
Implements IEventHandler
Private _header As String
Public Property Header As String
Get
Return _header
End Get
Set(value As String)
_header = value
End Set
End Property
Public Sub HandleEvent(currentEvent As [Event]) Implements IEventHandler.HandleEvent
Dim docEvent As PdfDocumentEvent = CType(currentEvent, PdfDocumentEvent)
Dim pdfDoc As PdfDocument = docEvent.GetDocument()
Dim page As PdfPage = docEvent.GetPage()
Dim pageSize As Rectangle = page.GetPageSize()
' Create a new PdfCanvas for the contentbyte object
Dim pdfCanvas As New PdfCanvas(page.NewContentStreamBefore(), page.GetResources(), pdfDoc)
Dim canvas As New Canvas(pdfCanvas, pageSize)
' Add header text at calculated position
canvas.ShowTextAligned(New Paragraph("Quarterly Sales Report"), pageSize.GetWidth() / 2, pageSize.GetTop() - 20, TextAlignment.CENTER)
' Add footer with page number
Dim pageNumber As Integer = pdfDoc.GetPageNumber(page)
canvas.ShowTextAligned(New Paragraph($"Page {pageNumber}"), pageSize.GetWidth() / 2, pageSize.GetBottom() + 20, TextAlignment.CENTER)
canvas.Close()
End Sub
End Class
' Usage in main code
Dim writer As New PdfWriter("report.pdf")
Dim pdfDoc As New PdfDocument(writer)
Dim document As New Document(pdfDoc)
' Register the event handler for END_PAGE
pdfDoc.AddEventHandler(PdfDocumentEvent.END_PAGE, New ITextEvents())
document.Add(New Paragraph("Sales Data"))
document.Add(New Paragraph("Content goes here..."))
document.Close()
Bu uygulama, iki kütüphane arasındaki temel mimari farkı gösterir. iText 7, IEventHandler'i uygulayan ayrı bir işleyici sınıfı oluşturmayı gerektirir (klasik PdfPageEventHelper benzer), sayfa konumlarını yüzer koordinatlar kullanarak manuel olarak hesaplamayı ve çizim işlemleri için PdfCanvas ve Canvas nesnelerini yönetmeyi. İşleyici, her sayfa için olaylar almak için END_PAGE olay türünü kullanır -- bu detay, START_PAGE'i yanlışlıkla kullanan birçok geliştiriciyi yanıltır.
Çıktı

iText 7'deki koordinat sistemi, sayfanın sol alt köşesinden başlar ve konumlandırma için açık hesaplamalar gerektirir. Son sayfa sayısını almak, PdfTemplate kalıplarıyla ve OnCloseDocument sırasında doldurulan ek bir karmaşıklık gerektirir -- bu, zaten karmaşık bir iş akışına daha fazla şablon kod ekleyen bir kalıptır.
Web geliştirme kökenli geliştiriciler için bu koordinat tabanlı yaklaşım, bildirimsel HTML/CSS modeline kıyasla yabancı gelebilir. Her konumlandırma kararı, sayfa boyutlarını, marj ofsetlerini ve metin ölçümünü anlamayı gerektirir -- bunlar HTML tabanlı yaklaşımlar altında soyutlanmıştır.
iText 7 ayrıca AGPL lisanslaması altında çalışır, yani iTextSharp veya iText 7 kullanan uygulamalar, ticari bir lisans satın alınmadıkça açık kaynak olmalıdır. Bu, ticari projeler için kütüphane seçerken önemli bir husustur.
İki Yaklaşım Nasıl Karşılaştırılır?
Belirli yeteneklere yan yana bakarak farklar daha net hale gelir. Aşağıdaki tablo, başlıca farkları özetler:
| Özellik | IronPDF | iText 7 / iTextSharp |
|---|---|---|
| Uygulama tarzı | Render seçeneklerinde özellik ataması | IEventHandler'ı uygulayan olay işleyici sınıfı |
| HTML/CSS desteği | HtmlHeaderFooter üzerinden tam HTML ve CSS | Yerel HTML desteği yok; düşük seviye kanvas çizimi gerektirir |
| Sayfa numarası toplamları | {total-pages} alanı üzerinden otomatik |
PdfTemplate gerektirir, OnCloseDocument'te doldurulur |
| Başlıkta resim | BaseUrl ile standart HTML etiketi |
Resim nesnesi ve manuel konumlandırma gerektirir |
| Mevcut PDF'ye ekleme | AddHtmlHeaders / AddHtmlFooters yöntemleri | Mühürleyici veya olay döngüsü üzerinden yeniden işleme gerektirir |
| Sayfa başına hedefleme | Yönteme geçirilen sayfa indeksleri listesi | Olay işleyici içinde koşullu mantık |
| Lisans modeli | Ücretli, ücretsiz deneme ile | AGPL (acik kaynak) veya ticari |
| Çapraz platform | Windows, Linux, macOS; Docker hazır | Windows, Linux, macOS |
Sorun giderme sırasında geliştirme deneyimi de önemli ölçüde farklıdır. IronPDF'in HTML tabanlı yaklaşımı, başlık tasarımınızı PDF oluşturma kodunuza entegre etmeden önce tarayıcıda önizleyebileceğiniz anlamına gelir. Bir şey yanlış görünüyorsa, alıştığınız tarayıcı geliştirici araçlarını kullanarak HTML ve CSS'i ayarlayabilirsiniz. iText 7 ile, konumlandırma sorunlarını gidermek, test PDF'lerini tekrar tekrar oluşturmaya ve koordinatları manuel olarak ölçmeye gerektirir.
HTML tabanlı yaklaşım, mevcut web geliştirme becerilerinizi doğrudan uygulayabileceğiniz anlamına gelir. HTML ve CSS ile ulaşılabilen her düzen IronPDF başlıklarında ve altbilgilerinde çalışır, flexbox düzenlerinden resim ızgaralarına kadar. HTML Headers and Footers example ek stil olasılıklarını gösterir.
Başlık ve Altbilgi Görünümünü Özelleştirme
Başlıkları ve altbilgileri ayarlamak, konumlandırma ve görsel sunumu etkileyen birkaç özellik içerir. TextHeaderFooter sınıfı bu özelleştirme seçeneklerini sağlar:
using IronPdf;
using IronSoftware.Drawing;
var renderer = new ChromePdfRenderer();
var footer = new TextHeaderFooter
{
LeftText = "Confidential",
CenterText = "{pdf-title}",
RightText = "Page {page} of {total-pages}",
Font = FontTypes.Arial,
FontSize = 9,
DrawDividerLine = true,
DrawDividerLineColor = Color.Gray
};
renderer.RenderingOptions.TextFooter = footer;
renderer.RenderingOptions.MarginBottom = 20;
var pdf = renderer.RenderHtmlAsPdf("<h1>Board Report</h1><p>Executive summary content.</p>");
pdf.SaveAs("board-report.pdf");
using IronPdf;
using IronSoftware.Drawing;
var renderer = new ChromePdfRenderer();
var footer = new TextHeaderFooter
{
LeftText = "Confidential",
CenterText = "{pdf-title}",
RightText = "Page {page} of {total-pages}",
Font = FontTypes.Arial,
FontSize = 9,
DrawDividerLine = true,
DrawDividerLineColor = Color.Gray
};
renderer.RenderingOptions.TextFooter = footer;
renderer.RenderingOptions.MarginBottom = 20;
var pdf = renderer.RenderHtmlAsPdf("<h1>Board Report</h1><p>Executive summary content.</p>");
pdf.SaveAs("board-report.pdf");
Imports IronPdf
Imports IronSoftware.Drawing
Dim renderer As New ChromePdfRenderer()
Dim footer As New TextHeaderFooter With {
.LeftText = "Confidential",
.CenterText = "{pdf-title}",
.RightText = "Page {page} of {total-pages}",
.Font = FontTypes.Arial,
.FontSize = 9,
.DrawDividerLine = True,
.DrawDividerLineColor = Color.Gray
}
renderer.RenderingOptions.TextFooter = footer
renderer.RenderingOptions.MarginBottom = 20
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Board Report</h1><p>Executive summary content.</p>")
pdf.SaveAs("board-report.pdf")
Font özelliği, Helvetica, Arial, Courier ve Times New Roman dahil olmak üzere IronSoftware.Drawing.FontTypes'dan gelen değerleri kabul eder. DrawDividerLine özelliği, alt bilgi ile ana içerik arasında profesyonel bir yatay kural ekler. Satır rengini, marka renklerinize veya belge temanıza uyması için DrawDividerLineColor kullanarak özelleştirebilirsiniz.
HTML tabanlı başlıklar ve alt bilgileri için, LoadStylesAndCSSFromMainHtmlDocument özelliği, işlenen ana belgeden stil miras almayı isteğe bağlı olarak sağlar ve başlıklar ile gövde içerikleri arasında görsel tutarlılığı sağlar. Bu, ana belgenizin aynı zamanda başlık ve altbilgi bölgelerine de uygulanması gereken özel CSS kullandığında özellikle yararlıdır.

Çapraz Platform ve Kap Konuşlandırmaları
Modern .NET uygulamaları sıkça Linux konteynerlarına, Azure Uygulama Servislerine veya AWS Lambda fonksiyonlarına konuşlandırılır. IronPDF, ek konfigürasyon gerektirmeden Windows, Linux ve macOS'da çapraz platform dağıtımını destekler. Kütüphane, kutudan çıktığı haliyle Docker konteynerlerinde çalışır, mikro hizmet mimarileri ve bulut yerli uygulamalar için uygun hale getirir.
Bu çapraz platform kabiliyeti başlık ve altbilgi işlevselliğine kadar akar -- bir Windows geliştirme makinesinde başlıklarla PDF üreten aynı kod, bir Linux üretim sunucusuna dağıtıldığında da birbiriyle aynı çıktıyı üretir. Ek fontlar yüklemek, oluşturma motorlarını konfigüre etmek veya platforma özgü kod yollarını yönetmek gerekmez.
Kapsüllü iş yüklerini çalıştıran ekipler için, IronPDF Docker dağıtma belgeleri, çeşitli temel imajlar ve orkestrasyon platformları için konfigürasyon kılavuzu sağlar. Kütüphanenin ortamlarda tutarlı davranışı, PDF oluşturma iş akışlarında yaygın bir hata kaynağını ortadan kaldırır.
Microsoft'un .NET belgelerine göre, kapsül .NET uygulamaları, IronPDF'in PDF oluşturma görevleri için oluşturma motorunu sağlamlaştırdığı bir ilke olan, ortamlarda tutarlı çalışma zamanı davranışından faydalanır. Benzer şekilde, Docker'ın resmi belgeleri, PDF oluşturma hizmetlerine doğrudan uygulanabilecek .NET iş yüklerini kapsüllemek için en iyi uygulamaları açıklar.
iText 7 belgesi de çapraz platform desteğini doğrular, ancak olay odaklı modelin ek karmaşıklığı, çapraz platform oluşturma sorunlarını ayıklamanın bildirimci HTML tabanlı yaklaşıma göre daha fazla dahil olabileceği anlamına gelir.
Sıradaki Adımlarınız Neler?
PDF belgelerinize başlık ve altbilgi uygulamak, IronPDF ile yalnızca birkaç dakika sürer. NuGet Paket Yöneticisi ile kutuphaneyi yukleyin:
Install-Package IronPdf
dotnet add package IronPdf
Install-Package IronPdf
dotnet add package IronPdf

Buradan, bu kaynaklar size daha fazla ilerlemenize yardımcı olacaktır:
- Başlangıç belgeleri -- PDF oluşturma ve yönetim kabiliyetlerinin tüm çeşitliliğini kapsar
- Başlıklar ve Altbilgiler Nasıl Kılavuzu -- tüm başlık ve altbilgi senaryoları için adım adım talimatlar
- HTML Başlıklar ve Altbilgiler örneği -- HTML tabanlı başlıklar için hazır çalıştırılabilir kod örnekleri
- Gelişmiş Başlıklar ve Altbilgiler örneği -- sayfa başına hedefleme ve tek/çift sayfa ayrımı
- TextHeaderFooter API referansı -- metin tabanlı başlıklar ve altbilgiler için tam özellik listesi
- HtmlHeaderFooter API referansı -- HTML tabanlı başlıklar ve altbilgiler için tam API
- Docker dağıtım kılavuzu -- Linux konteynerleri ve bulut ortamları için konfigürasyon
- IronPDF lisans seçenekleri -- bireysel geliştiricilerden kurumsal ekiplere kadar planlar
Ücretsiz denemenizi başlatın ve kendi projelerinizde başlık ve altbilgi uygulamalarını test edin. Deneme, işlevsellik üzerinde bir zaman sınırlaması olmadan tüm özellikleri içerir, lisansa bağlı kalmadan önce kütüphaneyi gerçek dünya PDF belge gerekliliklerinize karşı değerlendirmenizi sağlar.

C#'de PDF belgelere başlık ve altbilgiler ekleme, kütüphane seçiminize bağlı olarak basit ve karmaşık arasında değişir. iText 7, olay işleyiciler ve kanvas işlemleri aracılığıyla düşük seviye kontrol sağlarken, IronPDF aynı işlevselliği, tanıdık HTML ve CSS kavramlarını uygulayan bir API yoluyla sunar. Hızlı uygulama ve bakımı öncelikli olan geliştiriciler için IronPDF, başlık ve altbilgi uygulamasını onlarca satır koddan -- işleyici sınıfları, hücre konfigürasyonları ve tablo yapıları dahil - sadece birkaç özellik atamasına indirir.
Sıkça Sorulan Sorular
iTextSharp kullanarak PDF'lere baslik ve altbilgi nasıl ekleyebilirim?
PDF'lere baslik ve altbilgi eklemek için iTextSharp kullanarak, PDF oluşturma süreçi boyunca belgenin sayfalarini özellestiren bir sayfa olay yöneticisi tanımlayabilirsiniz. Bu, istediginiz baslik ve altbilgi icerigini eklemek için OnEndPage methodunun gecersiz kilinmasini icerir.
Baslik ve altbilgi eklemek için IronPDF kullanmanın faydalari nelerdir?
IronPDF, çok yonlu bir API sunarak baslik ve altbilgi ekleme süreçini yalınlastırır ve çeşitli stil seçeneklerini destekler. C# projeleriyle dikişsiz bir şekilde entegrasyon saglar ve HTML'den PDF'ye dönüştürme gibi ek özellikler sunarak, PDF manipülasyonu için çok yonlu bir aractir.
IronPDF ve iTextSharp bir arada kullanilabilir mi?
Evet, IronPDF ve iTextSharp bir C# projesinde bir arada kullanilabilir. iTextSharp, programatik PDF manipülasyonu için harika olsa da IronPDF, dinamik baslik ve altbilgi oluşturmak için HTML'den PDF'ye dönüştürme gibi ek özellikler saglayarak onu tamamlar.
IronPDF kullanarak baslik ve altbilgileri stilize etmenin bir yolu var mi?
IronPDF, HTML ve CSS kullanarak baslik ve altbilgileri stilize etmenize olanak tanir. Bu, geliştiricilere PDF belgeleri için vizuel olarak cekici tasarımlar ve yerlesim oluşturma esnekligi saglar.
IronPDF, baslik ve altbilgilerde sayfa numaralarını nasıl ele alir?
IronPDF, baslik ve altbilgilere otomatik olarak sayfa numaraları ekleyebilir. Toplam sayfa sayisini dahil etmek veya başlangic sayfa numarasını ayarlamak gibi ihtiyaçlarınıza uygun olarak sayfa numaralarını formatlama seçenekler sunar.
IronPDF ile C# kullanarak PDF manipülasyonunun avantajı nedir?
C# kullanarak IronPDF ile PDF manipülasyonu yapmak, güçlü tip güvenligi, .NET uygulamalariyla kolay entegrasyon ve geliştirme süreçini geliştiren genis bir kütüphane ve araç yelpazesine erişim sunar. IronPDF'nin C# API'si sezgisel ve kullanici dostu olacak şekilde tasarlanmiştir, her seviyede yetenekteki geliştiriciler için ulasilabilirdir.
IronPDF kullanarak mevcut belgeleri PDF'ye dönüştürebilir miyim?
Evet, IronPDF, HTML, ASPX ve diğer web tabanli içerikler dahil olmak uzere çeşitli belge formatlarini, PDF'ye dönüştürebilir. Bu özellik, web sayfalarindan veya dinamik olarak uretilem isikler için PDF oluşturmak için özellikle kullanislidir.




