IRONSOFTWAREHOME

Büyük PDF'lerde Daha Hızlı Üstbilgi ve Altbilgi

Curtis Chau
Curtis Chau
Updated: 3 Temmuz 2026

Çok büyük bir PDF'ye tek geçişte üstbilgi ve altbilgi eklemek yavaştır. Dokümanı sabit boyutlu sayfa parçaları halinde işleyin, her partiyi render edin, ardından parçaları yeniden birleştirerek sayfa numaralarını tüm doküman boyunca sürekli tutarken toplam render süresini azaltın.

Çözüm

1. Sayfa dizinlerini partilere ayırın

Bir parça boyutu seçin ve dokümanın sayfa dizinlerini sabit boyutlu partilere ayırın, örneğin her biri 300 sayfa olacak şekilde. Daha küçük parçalar bireysel olarak daha hızlı işlenir ancak sona daha fazla birleştirme işi ekler.

2. Her partiyi kendi dokümanına kopyalayın

CopyPages kullanarak mevcut partinin sayfalarını çıkarın, böylece render için bağımsız bir doküman elde edin.

3. Kesintisiz numaralandırma ile üstbilgi ve altbilgi işleyin

FirstPageNumber değerini parçanın başlangıç sayfası olarak ayarlayın, böylece numaralandırma her parçada 1'den başlamak yerine tüm doküman boyunca devam etsin.

4. Her parçayı kaydedin ve dispose edin

Her parçayı geçici bir dosyaya yazın ve dispose edin. Bir sonraki parti öncesinde parçayı serbest bırakmak, çalışmanın bellek kullanımını artmasını önler.

5. Parçaları nihai PDF içine birleştirin

Geçici dosyaları tekrar açın, sırayla AppendPdf ile ekleyin, sonucu kaydedin, ardından geçici dosyaları silin.

using IronPdf;
var pdf = PdfDocument.FromFile("input.pdf");
string headerHtml = "<div style='font-size:10px;'>Header</div>";
string footerHtml = "<div style='text-align:right;font-size:10px;'>Page {page} of {total-pages}</div>";
int chunkSize = 300;
var pageChunks = Enumerable.Range(0, pdf.PageCount)
    .GroupBy(i => i / chunkSize)
    .Select(g => g.ToArray())
    .ToList();
var tempFiles = new List<string>();
foreach (var indexes in pageChunks)
{
    var chunkPdf = pdf.CopyPages(indexes);
    int globalStartPage = indexes.First() + 1;
    chunkPdf.AddHtmlHeadersAndFooters(new ChromePdfRenderOptions
    {
        FirstPageNumber = globalStartPage,          // keeps numbering continuous
        HtmlHeader = new HtmlHeaderFooter { HtmlFragment = headerHtml, MaxHeight = 40 },
        HtmlFooter = new HtmlHeaderFooter { HtmlFragment = footerHtml, MaxHeight = 40 }
    });
    string tempFile = Path.GetTempFileName() + ".pdf";
    chunkPdf.SaveAs(tempFile);
    chunkPdf.Dispose();
    tempFiles.Add(tempFile);
}
// Merge the chunks back into one document.
var finalPdf = new PdfDocument(tempFiles.First());
foreach (var file in tempFiles.Skip(1))
{
    using var part = new PdfDocument(file);
    finalPdf.AppendPdf(part);
}
finalPdf.SaveAs("output.pdf");
finalPdf.Dispose();
// Clean up temp files.
foreach (var file in tempFiles)
    File.Delete(file);
C#

FirstPageNumber anahtardır: her bir parçanın küresel başlangıç sayfasına ayarlanır, böylece Page {page} of {total-pages} gibi bir altbilgi ilk parçadan son parçaya kadar tutarlılığını korur.

Lütfen dikkate alın: FirstPageNumber olmadan, her parça sayımını sayfa 1'inci sayfadan başlatır.

Hata Ayıklama İpuçları

  • Parça boyutunu ayarlayın: yukarıdaki değer (300) ayarlanabilir ve parçalama sürecinin avantaj sağlamaya başladığı nokta iş yükünüze bağlıdır.
  • Birleştirme için hesaba katın: toplam süre, parça başı render süresi ile nihai birleştirmedir, bu yüzden bu ek geçişi herhangi bir karşılaştırmaya dahil edin.
  • Çok büyük işlerde belleği kontrol altında tutun: birleştirme sırasında çöp toplama işlemini düzenli olarak zorlamak ve tarayıcı havuzunu BrowserPool.MaxIdleTabs ve MaxDynamicHFPagesPerBatch ile ayarlamak yardımcı olabilir.
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ılandırılmış, görsel olarak çekici kılavuzlar oluşturmayı seviyor.

...
Daha Fazla Oku

Başlamaya Hazır mısınız?

Nuget Downloads 21,228,841Sürüm:2026.9yeni yayınlandı

Ücretsiz 30 Günlük Deneme Anahtarınızı anında alın.
Kredi kartı veya hesap oluşturma gerektirmez
PDF için C# NuGet Kütüphanesi
NuGet ile yükleyin

Sürüm: 2026.9

PM > Install-Package IronPdf
nuget.org/packages/IronPdf/
  1. Çözüm Gezgini'nde Referanslar'a sağ tıklayın, NuGet Paketlerini Yönet
  2. Tarayıcıya tıklayın ve "IronPdf" arayın
  3. Paketi seçin ve yükleyin
C# PDF DLL
DLL İndir

Sürüm: 2026.9

veya Windows Yükleyiciyi şuradan buradan indirin.

  1. IronPDF'i, ~/Libs gibi bir yere, Solution dizininiz içinde indirin ve açın.
  2. Visual Studio Çözüm Gezgini'nde, Referanslar'a sağ tıklayın. Tarayıcı sekmesini seçin, "IronPdf.dll"

Lisanslar $999

Key in blue circle

Ücretsiz 30 günlük Deneme Anahtarınızı anında edinin.

Your trial license will be sent to your email address

Herhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.

OR
bullet_checkedKredi kartı veya hesap oluşturma gerektirmezHerhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Ücretsiz Canlı Demo rezervasyonu yapın
Booking Badge

Dünya Çapında Milyonlarca Mühendisin Güvendiği

Iron Software müşteri logoları
Bağımsız Danışmanlık Alın
Aşağıdaki formu doldurun veya sales@ironsoftware.com adresine e-posta gönderin
Bilgileriniz daima gizli kalacaktır.
Dünya Çapında Milyonlarca Mühendisin Güvendiği
Iron Software müşteri logoları
Ücretsiz 30 Günlük Deneme Anahtarınızı anında alın.
Kredi kartı veya hesap oluşturma gerektirmez
PDF için C# NuGet Kütüphanesi
NuGet ile yükleyin

Sürüm: 2026.9

PM > Install-Package IronPdf
nuget.org/packages/IronPdf/
  1. Çözüm Gezgini'nde Referanslar'a sağ tıklayın, NuGet Paketlerini Yönet
  2. Tarayıcıya tıklayın ve "IronPdf" arayın
  3. Paketi seçin ve yükleyin
C# PDF DLL
DLL İndir

Sürüm: 2026.9

veya Windows Yükleyiciyi şuradan buradan indirin.

  1. IronPDF'i, ~/Libs gibi bir yere, Solution dizininiz içinde indirin ve açın.
  2. Visual Studio Çözüm Gezgini'nde, Referanslar'a sağ tıklayın. Tarayıcı sekmesini seçin, "IronPdf.dll"

Lisanslar $999