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.

Please note: 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
Technical Writer

Curtis Chau holds a Bachelor’s degree in Computer Science (Carleton University) and specializes in front-end development with expertise in Node.js, TypeScript, JavaScript, and React. Passionate about crafting intuitive and aesthetically pleasing user interfaces, Curtis enjoys working with modern frameworks and creating well-structured, visually appealing manuals.

...
Read More

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

Nuget Downloads 20,389,208Sürüm:2026.7yeni yayınlandı

Ücretsiz 30 Günlük Deneme Anahtarınızı anında alın.
Kredi kartı veya hesap oluşturma gerektirmez

IronPDF Ücretsiz Deneyin

5 Dakikada Ayarlayın

C# PDF DLL

DLL İndir

Şimdi İndir

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"
PDF için C# NuGet Kütüphanesi

NuGet ile yükleyin

                  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
Key in blue circle

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

bullet_checkedKredi kartı veya hesap oluşturma gerektirmez
  • 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 related to IronPDF Product Demo

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