Altbilgi içeriğine atla
IRONPDF KULLANARAK

VB.NET'te PDF'i JPG'ye Nasıl Dönüştürulur

Full Comparison

Looking for a detailed feature-by-feature breakdown? See how IronPDF stacks up against Itext on pricing, HTML support, and licensing.

View Full Comparison

C#'da PDF Belgelerine Üstbilgi ve Altbilgi Ekleme

PDF belgelere başlıklar ve altbilgiler eklemek, profesyonel raporlar, faturalar ve iş belgeleri oluşturmak için son derece önemlidir. Geliştiriciler, PdfPageEventHelper ve OnEndPage yöntemini kullanarak iText çözümleri ararken, modern .NET kütüphanelerinin aynı sonuçlara ulaşmak için önemli ölçüde daha basit yaklaşımlar sunduğunu göreceklerdir.

Bu kılavuz, C# kullanarak PDF dosyalarına üstbilgi ve altbilgiler eklemenin iText'in geleneksel yaklaşımıyla IronPDF API'si kıyaslamasını gösterir. Sonunda, yeni bir Document oluşturmaktan, nihai PDF dosyasını üretmeye kadar her iki uygulamayı da anlayacak ve projenizin gereksinimlerine en uygun yaklaşımı seçebileceksiniz.

C# ile iText ve IronPDF Kullanarak PDF'e Başlık ve Altbilgi Nasıl Eklenir: Görüntü 1 - IronPDF

Profesyonel Belgelerde PDF Başlık ve Altbilgileri Neden Önemlidir?

Başlıklar ve altbilgiler, profesyonel PDF belgelerinde kritik işlevler yerine getirir. Resim logoları aracılığıyla tutarlı markalama sağlarlar, sayfa numaraları ile sayfa gezintisini mümkün kılarlar, önemli metadata gibi tarihleri ve belge başlıklarını görüntüler ve zaman damgaları ve sürüm bilgileri yoluyla belgenin otantikliğini kurarlar.

Kurumsal ortamlarda, başlıklar ve altbilgiler sıklıkla yasal öneme sahiptir. Finansal raporlar, denetim izleri için zaman damgalarına ihtiyaç duyar. Sözleşmeler, tamlık sağlamak için sayfa numaralandırmasına gereksinim duyar. Dahili belgeler, her sayfada gizlilik bildirimlerine ihtiyaç duyabilir. Bu gereksinimleri programlı olarak karşılamak, sayfa seviyesinde içerik enjeksiyonunu güvenilir bir şekilde ele alan bir PDF kütüphanesi gerektirir.

Başlık ve altbilgileri programlı olarak eklemenin ana nedenleri şunlardır:

  • Denetim uyumluluğu -- her sayfada zaman damgaları ve sürüm numaraları, düzenleyici gereklilikleri karşılar
  • Marka tutarlılığı -- şirket logoları ve tarzı, tüm oluşturulan belgelerde tutarlı bir şekilde uygulanır
  • Gezinme -- sayfa numaraları ve bölüm başlıkları, okuyucuların bilgiyi hızlıca bulmasına yardımcı olur
  • Otantiklik -- yazar adı, yaratılış tarihi ve belge kimliği, belge bütünlüğü üzerindeki anlaşmazlıkları önler

C# ile iText ve IronPDF Kullanarak PDF'e Başlık ve Altbilgi Nasıl Eklenir: Görüntü 2 - Özellikler

C# ile Metin Üstbilgi ve Altbilgi Nasıl Eklenir?

.NET, .NET uygulamalarında PDF belgelerine başlık ve altbilgi eklemek için en doğrudan yaklaşımı sunar. ChromePdfRenderer sınıfını, TextHeaderFooter veya HtmlHeaderFooter ile birleştirerek, minimum kodla başlıklar ve altbilgiler oluşturabilirsiniz -- ayrı hücreler oluşturmaya veya contentbyte nesnesini manuel olarak yönetmeye gerek yoktur.

Herhangi bir kod yazmadan önce, IronPDF'i NuGet kullanarak projenize ekleyin:

Install-Package IronPdf

Kütüphane, kurulumdan hemen sonra çalışır ve dış bağımlılık gerektirmez. .NET 5, 6, 7, 8 ve 10'u hedefler ve Windows, Linux ve macOS'ta platforma özgü yapılandırma olmadan çalışır.

Daha eski iText kalıplarında, geliştiriciler başlık ve altbilgi mantığını manuel olarak enjekte etmek için private static void AddContent() gibi yardımcı yöntemler oluştururlardı. IronPDF, tüm bu şablonları tamamen ortadan kaldırır.

İşte bir PDF dosyasına hem metin başlık hem de altbilgi 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")
$vbLabelText   $csharpLabel

TextHeaderFooter sınıfı, metni başlık veya altbilgi alanının soluna, ortasına veya sağına yerleştirmek için özellikler sağlar. DrawDividerLine özelliği, başlık veya altbilgi ile ana belgenin içeriği arasında profesyonel bir ayırıcı çizgi ekler. {page}, {total-pages} ve {date} gibi birleştirilebilir alanlar, PDF oluşturma sırasında dinamik değerlerle otomatik olarak doldurulur.

IronPDF, başlık ve altbilgilerin belge içeriğinizle örtüşmemesini sağlayarak kenar boşluğu hesaplamalarını otomatik olarak ele alır. TextHeaderFooter sınıfı, dış bağımlılıklar olmadan tipografiyi kontrol etmenizi sağlayan IronSoftware.Drawing.FontTypes kaynaklarından yazı tipi türlerini destekler.

Çıktı

C# ile iText ve IronPDF Kullanarak PDF'e Başlık ve Altbilgi Nasıl Eklenir: Görüntü 4 - PDF Çıktısı

Tüm uygulamanın tek bir kod bloğuna nasıl sığdığını ve açık, okunabilir özellik atamaları içerdiğini fark edin. Ayrı bir sınıf dosyası oluşturmaya, piksel pozisyonları hesaplamaya veya tuval nesnelerini yönetmeye gerek yoktur. Kütüphane bu karmaşıklıkları soyutlar ve PDF oluşturma mekaniklerinden ziyade içeriğe odaklanmanıza olanak tanır.

HTML Tarzı Başlıkları ve Altbilgileri Nasıl Oluşturursunuz?

Daha sofistike tasarımlar için IronPDF'ın HtmlHeaderFooter sınıfı, tam HTML ve CSS stilini etkinleştirir. Bu yaklaşım, başlıkların bir resim logosu, karmaşık düzenler veya markaya özgü stilleri içermesi gerektiğinde özellikle değerlidir -- PdfPCell nesnelerini manuel olarak oluşturmaya veya new Phrase yapıcılarını kullanmaya gerek kalmadan.

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")
$vbLabelText   $csharpLabel

Bu örnek kod, HTML başlıklarının metin yanında resimler nasıl içerebileceğini göstermektedir. BaseUrl özelliği, göreli resim URL'lerini çözmek için kök yolu belirler, böylece şirket logolarını veya diğer grafiklerini eklemek basitleşir. MaxHeight özelliği, başlıkların belirtilen boyutları aşmamasını sağlayarak belgelerde tutarlı bir düzen sağlar.

Birleştirilebilir alanlar ({page}, {total-pages}, {url}, {date}, {time}, {html-title}, {pdf-title}), HTML başlıkları ve altbilgilerinde aynı şekilde çalışarak, ek kod yazmadan dinamik içerik eklemenize olanak tanır. Çeşitli başlık stillerinin uygulanmasına ilişkin rehberlik için, Başlıklar ve Altbilgiler Nasıl Yapılır Rehberi'ne bakın.

HTML yaklaşımı, markalı dokümanlar oluştururken öne çıkar. Pazarlama ekipleri, geliştiricilerin doğrudan entegre ettiği HTML şablonları sağlayarak onaylanmış tasarımların pikselle birebir yeniden üretilmesini sağlar. font-family, color, background-color ve border gibi CSS özellikleri beklendiği gibi çalışarak, diğer kütüphanelerde kapsamlı düşük seviyeli kod gerektiren karmaşık görsel işlemler sağlamanıza olanak tanır.

C# ile iText ve IronPDF Kullanarak PDF'e Başlık ve Altbilgi Nasıl Eklenir: Görüntü 3 - PDF'de başlık ve altbilgi ekleme - IronPDF

Mevcut PDF Belgelerine Nasıl Başlık Ekleyebilirsiniz?

Yaygın bir gereklilik, halihazırda var olan PDF dosyalarına başlıklar ve altbilgiler eklemektir -- bunlar yüklenen belgeler, birleştirilmiş dosyalar veya diğer sistemler tarafından oluşturulan PDF'ler olabilir. IronPDF bu senaryoyu AddHtmlHeaders ve AddHtmlFooters yöntemleri ile ele alı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")
$vbLabelText   $csharpLabel

PdfDocument sınıfı yüklenmiş veya işlenmiş bir PDF'yi temsil eder ve sonradan işleme modifikasyonları için yöntemler sunar. Render ve değiştirme arasındaki bu ayrım, PDF belgelerinin birden fazla işlem aşamasından geçmesine olanak tanır. AddHtmlHeaders metodu, otomatik olarak her sayfaya başlık uygular, ancak bir sayfa dizini koleksiyonu geçerek belirli sayfaları da hedefleyebilirsiniz.

Giriş

C# ile iText ve IronPDF Kullanarak PDF'e Başlık ve Altbilgi Nasıl Eklenir: Görüntü 6 - Örnek Girdi

Çıktı

C# ile iText ve IronPDF Kullanarak PDF'e Başlık ve Altbilgi Nasıl Eklenir: Görüntü 7 - Mevcut PDF Başlığı Çıktısı

Bu yetenek, taranmış belgeler, kullanıcı yüklemeleri veya üçüncü taraf API yanıtları gibi çeşitli kaynaklardan PDF dosyaları alan belge yönetim sistemlerinde son derece değerli olduğunu kanıtlar. IronPDF, dağıtım veya arşivleme öncesinde markalamayı veya sayfa numaralandırmayı standart hale getirir.

Farklı Sayfalara Farklı Başlıkları Nasıl Eklersiniz?

Bazı belgeler, ilk sayfanın farklı bir başlık (veya hiç başlık olmaması) kullanmasını gerektirirken, sonraki sayfalar standart bir format kullanır. IronPDF, sayfa dizini bazlı başlık uygulaması yoluyla bunu destekler -- void OnEndPage işleyicilerinin içinde koşulları kontrol etmeye veya döngü sayaçlarını manuel olarak yönetmeye 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")
$vbLabelText   $csharpLabel

AddHtmlHeaders'nın ikinci parametresi, {page} birleştirilebilir alanı için başlangıç sayfası numarasını belirlerken, üçüncü parametre başlığı alacak sayfa dizinlerinin bir koleksiyonunu kabul eder. Bu ayrıntılı kontrol, karmaşık belge düzenlerini karmaşık koşullu mantık olmadan mümkün kılar. Gelişmiş Başlıklar ve Altbilgiler örneği, tek/çift sayfa ayrımı dahil olmak üzere ek senaryoları kapsamaktadır.

Çıktı

C# ile iText ve IronPDF Kullanarak PDF'e Başlık ve Altbilgi Nasıl Eklenir: Görüntü 9 - Farklı sayfalar için farklı başlıklar Çıktısı

Sayfa Numaralarından Öte Dinamik İçeriği Nasıl Uygularsınız?

Birleştirilebilir alanlar sistemi, render sırasında otomatik olarak doldurulan birkaç dinamik değeri destekler. Aşağıdaki tablo, mevcut olan tüm alanları ve anlamlarını listeler:

IronPDF Başlıkları ve Altbilgilerinde Desteklenen Birleştirilebilir Alanlar
Alan Eklenen Değer Tipik Kullanım
{page} Geçerli sayfa numarası "Sayfa 3" gösteren altbilgiler
{total-pages} Toplam sayfa sayısı "10'da Sayfa 3" gösteren altbilgiler
{date} Yerel formatta geçerli tarih Denetim zaman damgaları, rapor tarihleri
{time} Yerel formatta geçerli saat Regülatif uyumluluk altbilgileri
{html-title} HTML <title> etiketinin içeriği Sayfa başlığını gösteren belge başlıkları
{pdf-title} PDF belge meta verisi başlığı Belge adı ile markalı altbilgiler
{url} Bir web adresinden render ederken 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 fragment dizesini interpolasyonlu değerlerle oluşturup, HtmlFragment özelliğine atamadan önce oluşturabilirsiniz. Bu yaklaşım, veri tabanından alınan değerlere, kullanıcı bilgilerine veya hesaplanmış verilere sahip başlıkların içermesini 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")
$vbLabelText   $csharpLabel

{page} ve {total-pages} belirteçlerinin, C# dizesi birleştirmesi içinde düz dizeler olarak bırakıldığını unutmayın -- interpolasyonlu kısımda değil. PDF renderı sırasında, IronPDF bu tokenleri otomatik olarak değiştirir. Bu desen, herhangi bir çalışma zamanı değeri için çalışır: Active Directory'den alınan kullanıcı adları, bir veritabanından belge ID'leri, yapı hattınızdan sürüm dizgeleri veya raporlama motorunuzdan hesaplanmış toplamlar.

Birleştirilebilen alanlar ve dize interpolasyonu birleşimi, iş belgelerinde yaygın olan sofistike altbilgi tasarımlarını mümkün kılar. Hukuk departmanları genellikle belge başlığı, tarih ve sayfa sayısını gösteren altbilgiler gerektirir. Finansal raporlar, regülatif uyumluluk için zaman damgalarına ihtiyaç duyabilir. Bu gereklilikler, her belge türü için özel kod olmadan karşılanır.

iText Yaklaşımı Nasıl Görünür?

iText'i tanıyan geliştiriciler, başlık ve alt bilgi eklemenin olay işleyicilerini uygulamayı gerektirdiğini bilir. Kütüphane bir sayfa olay sistemi kullanır ve burada OnEndPage ve OnCloseDocument gibi belge yaşam döngüsü olaylarını yanıtlayan bir sınıf oluşturursunuz.

Aynı başlık ve altbilgi uygulaması, ITextEvents kalıbını kullanarak iText ile şu şekilde 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()
$vbLabelText   $csharpLabel

Bu uygulama, iki kütüphane arasındaki temel mimari farkı gösterir. iText, ilişkili PdfPageEventHelper'e benzer şekilde IEventHandler'i uygulayan ayrı bir işleyici sınıfı oluşturmayı, sayfa konumlarını manuel olarak hesaplamak için float koordinatlarını kullanmayı ve çizim işlemleri için PdfCanvas ve Canvas nesnelerini yönetmeyi gerektirir. İşleyici, END_PAGE olay türü ile her sayfa için olay alır -- bu detay, birçok geliştiricinin yanlışlıkla START_PAGE kullanmasıyla yanılmasına neden olur.

Çıktı

C# ile iText ve IronPDF Kullanarak PDF'e Başlık ve Altbilgi Nasıl Eklenir: Görüntü 8 - C# kullanarak iText ile PDF'e başlık ve altbilgi eklemek

iText'in 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ını ve OnCloseDocument sırasındaki doldurmaları gerektirir -- bu kalıp, zaten karmaşık olan bir iş akışına daha fazla gereksiz kod ekler.

Web geliştirme geçmişine sahip geliştiriciler için bu koordinat tabanlı yaklaşım, beyan edici HTML/CSS modeline kıyasla yabancı hissettirir. Her pozisyon kararının, sayfa boyutları, kenar boşluğu ofsetleri ve metin ölçümü ile ilgili bir anlayış gerektirir -- ki bunlar HTML tabanlı yaklaşımlarda soyutlanmıştır.

iText ayrıca AGPL lisansı altında çalışır, bu da iText veya iText'i kullanan uygulamaların ticari bir lisans satın alınmadıkça açık kaynak olması gerektiği anlamına gelir. Bu, ticari projeler için kütüphaneler arasında seçim yaparken önemli bir husustur.

Bu İki Yaklaşım Nasıl Karşılaştırılır?

Farklar, becerileri yan yana karşılaştırdığınızda daha net hale gelir. Aşağıdaki tablo, kilit farkları özetler:

IronPDF ve iText Başlık ve Alt Bilgi Özellik Karşılaştırması
Özellik IronPDF iText / iText
Uygulama tarzı Render ayarları için özellik atama 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 seviyeli tuval çizimi gerektirir
Sayfa numarası toplamları {total-pages} alanı üzerinden otomatik OnCloseDocument'ta doldurulan PdfTemplate gerektirir
Başlıkta resim BaseUrl ile standart HTML <img> etiketi Resim nesnesi ve manuel konumlandırma gerektirir
Mevcut PDF'e ekleme AddHtmlHeaders / AddHtmlFooters yöntemleri Damga veya olay döngüsü ile yeniden işleme gerektirir
Sayfa başına hedefleme Metoda geçirilen sayfa indeksleri listesi Olay işleyici içinde koşullu mantık
Lisans modeli Ücretli, ücretsiz deneme sürümü ile AGPL (açık kaynak) veya ticari
Çapraz platform Windows, Linux, macOS; Docker için hazır Windows, Linux, macOS

Sorun giderme sırasında geliştirme deneyimi de önemli ölçüde farklılık gösterir. IronPDF'ın HTML tabanlı yaklaşımı, başlık tasarımınızı PDF oluşturma kodunuza entegre etmeden önce bir tarayıcıda önizleyebilmeniz anlamına gelir. Bir şey yanlış görünüyorsa, tanıdık tarayıcı geliştirici araçlarını kullanarak HTML ve CSS'yi ayarlayabilirsiniz. iText ile konumlandırma sorunları konusunda hata ayıklamak, koordinatları manuel olarak ölçerek test PDF'leri tekrar tekrar üretmek gerektirir.

HTML tabanlı yaklaşım, mevcut web geliştirme becerilerinizi doğrudan uygulayabilmeniz anlamına gelir. HTML ve CSS ile gerçekleştirilebilecek herhangi bir düzen, IronPDF başlıkları ve altbilgilerinde çalışır, fleks düzenlerinden resim ızgaralarına kadar. HTML Başlıkları ve Altbilgiler örneği, ek stil olanaklarını gösterir.

Başlık ve Altbilgi Görünümünü Özelleştirme

Başlık ve altbilgilerin ince ayarını yapmak, konumlandırmayı ve görsel sunumu etkileyen birkaç özelliği içerir. TextHeaderFooter sınıfı bu özelleştirme seçeneklerini sunar:

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")
$vbLabelText   $csharpLabel

Font özelliği, Helvetica, Arial, Courier ve Times New Roman dahil IronSoftware.Drawing.FontTypes'den değerleri kabul eder. DrawDividerLine özelliği, altbilgi ile ana içerik arasında profesyonel bir yatay çizgi ekler. DrawDividerLineColor kullanarak çizgi rengini markanızın renklerine veya belge temasına uygun olacak şekilde özelleştirebilirsiniz.

HTML tabanlı başlıklar ve altbilgiler için, LoadStylesAndCSSFromMainHtmlDocument özelliği, başlıklar ve gövde içeriği arasında görsel tutarlılığı sağlamak için ana belgeden türetilen stilleri seçenek olarak alır. Bu, ana belgeniz kendi CSS'nizi kullandığında ve bunun başlık ve altbilgi bölgelerine de uygulanması gerektiğinde özellikle faydalıdır.

C# ile iText ve IronPDF Kullanarak PDF'e Başlık ve Altbilgi Nasıl Eklenir: Görüntü 5 - Platformlar arası uyumluluk

Çapraz Platform ve Konteyner Dağıtımları

Modern .NET uygulamaları genellikle Linux konteynerlarına, Azure App Services'e veya AWS Lambda işlevlerine dağıtılır. .NET, ek yapılandırma gerektirmeden Windows, Linux ve macOS üzerinde çalışan çapraz platform dağıtımını destekler. Kütüphane, kutudan çıktığı gibi Docker konteynerlerinde çalışır, bu da mikro hizmet mimarileri ve bulut yerel uygulamaları için uygundur.

Bu çapraz platform yeteneği, başlık ve altbilgi işlevselliğine de uzanır -- bir Windows geliştirme makinesinde başlıkları olan PDF'ler üreten aynı kod, Linux üretim sunucusuna dağıtıldığında aynı çıktıyı üretir. Ek font yüklemeye, render motorlarını yapılandırmaya veya platforma özgü kod yollarını yönetmeye gerek yoktur.

Konteynerize iş yüklerini çalıştıran ekipler için IronPDF Docker dağıtım belgeleri, çeşitli temel görüntülere ve orkestrasyon platformlarına yönelik yapılandırma rehberliği sunar. Kütüphanenin ortamlardaki tutarlı davranışı, PDF oluşturma iş akışlarındaki yaygın hata kaynaklarını ortadan kaldırır.

Microsoft'un .NET belgelerine göre, konteynerize .NET uygulamaları, ortamlarda tutarlı çalışma zamanı davranışından faydalanır -- bu, .NET'in render motorunun PDF oluşturma görevleri için pekiştirdiği bir ilkedir. Benzer şekilde, Docker'ın resmi belgeleri, PDF oluşturma hizmetlerine doğrudan uygulanan .NET iş yüklerini konteynerleştirmek için en iyi uygulamaları açıklar.

iText dökümantasyonu platformlar arası desteği de doğrular, ancak olay odaklı modeli nedeniyle hata ayıklamak daha karmaşık olabilir.

Sonraki Adımlarınız Neler?

IronPDF ile PDF belgelerinize başlık ve altbilgileri uygulamak yalnızca birkaç dakika sürer. Kütüphaneyi NuGet Paket Yöneticisi aracılığıyla yükleyin:

Install-Package IronPdf

C# ile iText ve IronPDF Kullanarak PDF'e Başlık ve Altbilgi Nasıl Eklenir: Görüntü 10 - Kurulum

Buradan, bu kaynaklar daha ileri gitmenize yardımcı olacak:

Ücretsiz denemenizi başlatın ve kendi projelerinizde başlık ve altbilgi uygulamalarını test edin. Deneme, herhangi bir işlevsellik üzerinde zaman sınırı olmadan tüm özellikleri içerir, böylece gerçek dünya PDF belge gereksinimlerinize karşı kütüphaneyi bir lisansa bağlanmadan önce değerlendirebilirsiniz.

C# ile iText ve IronPDF Kullanarak PDF'e Başlık ve Altbilgi Nasıl Eklenir: Görüntü 11 - Lisanslama

C#'ta PDF belgelerine başlık ve alt bilgi eklemek, seçtiğiniz kütüphaneye bağlı olarak basitten karmaşığa kadar değişir. iText, olay işleyicileri ve yüzey işlemleri aracılığıyla düşük seviyeli kontrol sağlar, IronPDF ise tanıdık HTML ve CSS kavramlarını uygulayan bir API aracılığıyla aynı işlevi sunar. Hızlı uygulama ve sürdürülebilir kodlama önceliklendiren geliştiriciler için, IronPDF, başlık ve alt bilgi uygulamalarını birçok satırlık koddan -- işleyici sınıfları, hücre yapılandırmaları ve tablo yapıları dahil -- sadece birkaç özellik atamasına indirger.

Sıkça Sorulan Sorular

iTextSharp kullanarak PDF'lere başlık ve altbilgi nasıl eklenir?

iTextSharp kullanarak PDF'lere başlık ve altbilgi eklemek için, PDF oluşturma süreci sırasında belgenin sayfalarını özelleştiren bir sayfa olay işleyici tanımlayabilirsiniz. Bu, istediğiniz başlık ve altbilgi içeriğini eklemek amacıyla OnEndPage yöntemini geçersiz kılmayı içerir.

IronPDF'yi başlık ve altbilgi eklemek için kullanmanın avantajları nelerdir?

IronPDF, çeşitli stil seçeneklerini destekleyen ve sade bir API sunarak başlık ve altbilgi ekleme işlemini basitleştirir. C# projeleri ile sorunsuz bir şekilde iletişime geçer ve HTML'den PDF'ye dönüştürme gibi ek özellikler sunar, bu da onu PDF manipülasyonu için çok yönlü bir araç yapar.

IronPDF ve iTextSharp birlikte kullanılabilir mi?

Evet, IronPDF ve iTextSharp bir C# projesinde birlikte kullanılabilir. iTextSharp programatik PDF manipülasyonu için harikayken, IronPDF HTML'den PDF'ye dönüştürme gibi ek özellikler sunarak başlık ve altbilgi oluşturma amacıyla kullanılabilir.

IronPDF kullanarak başlık ve altbilgi stilize etmenin bir yolu var mı?

IronPDF, başlık ve altbilgi stilize etme için HTML ve CSS kullanmanıza olanak tanır. Bu, geliştiricilere PDF belgeleri için görsel olarak cazip tasarımlar ve düzenler oluşturma esnekliği sağlar.

IronPDF başlık ve altbilgilerde sayfa numaralarını nasıl işler?

IronPDF, başlık ve altbilgilere otomatik olarak sayfa numaraları ekleyebilir. İhtiyacınıza göre sayfa numaralarını biçimlendirme seçenekleri sunar, örneğin toplam sayfa sayısını ekleme veya başlangıç sayfası numarasını ayarlama gibi.

IronPDF ile C# kullanarak PDF manipülasyonu yapmanın avantajı nedir?

IronPDF ile C# kullanarak PDF manipülasyonu yapmak, güçlü tür güvenliği, .NET uygulamaları ile kolay entegrasyon ve geliştirme sürecini iyileştiren geniş kütüphane ve araçlara erişim sunar. IronPDF'nin C# API'si sezgisel ve kullanıcı dostu olacak şekilde tasarlanmıştır, bu da her seviyedeki geliştiriciler için erişilebilir hale getirir.

IronPDF kullanarak mevcut belgeleri PDF'ye dönüştürmek mümkün mü?

Evet, IronPDF HTML, ASPX ve diğer web tabanlı içerikleri PDF'ye dönüştürebilir. Bu özellik, web sayfalarından veya dinamik olarak üretilmiş içerikten PDF'ler oluşturmak için özellikle yararlıdır.

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında Lisans Derecesine (Carleton Üniversitesi) sahip ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirmeyle ilgileniyor. Sezgisel ve estetik açıdan hoş kullanıcı arayüzleri oluşturma tutkunu, Curtis modern çerçevelerle çalışmayı ve iyi yapı...

Daha Fazla Oku

Iron Destek Ekibi

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