IRONSOFTWAREHOME

HTML Başlıklar/Altbilgiler ile InsertPdf Sonrasında AccessViolationException

Curtis Chau
Curtis Chau
Updated: 12 Haziran 2026

Başka bir belgeden sayfalar birleştirilmek üzere InsertPdf kullanıldıktan sonra PdfDocument üzerinde AddHtmlHeadersAndFooters çağrıldığında AccessViolationException atılır. Hata Debug derlemelerinde veya bir hata ayıklayıcı bağlıyken oluşmaz.

System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
   at IronPdf.PdfDocument.AddHtmlHeadersAndFooters(...)
Text

Release derlemelerinde, .NET JIT optimizer, çöp toplayıcının, bu nesnelerin yönetilen kod tarafından yeniden başvurulmayacağını kanıtladığında, yönetilen nesneleri sözdizimsel kapsamları bitmeden önce geri almasına izin verir. IronPDF'nin yerel Chrome katmanı hala okumaktayken InsertPdf ile iletilen bir PdfDocument toplanabilir. Sonraki AddHtmlHeadersAndFooters çağrısı, ardından serbest bırakılmış hafızaya erişir ve bu erişim ihlaline neden olur.

Çözümler

Seçenek 1: InsertPdf Öncesinde Başlıklar ve Altbilgiler Uygulayın (Önerilen)

İşlemleri, herhangi bir sayfa eklenmeden önce başlıkların ve altbilgilerin temel belgeye yazılacağı şekilde yeniden sıralayın:

var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
    HtmlFragment = "<div style='text-align:right; font-size:10px'>Page {page} of {total-pages}</div>"
};

var basePdf = renderer.RenderHtmlAsPdf(baseHtml);

basePdf.AddHtmlHeadersAndFooters(renderer.RenderingOptions);

var supplementPdf = PdfDocument.FromFile("supplement.pdf");
basePdf.InsertPdf(supplementPdf, 0);

basePdf.SaveAs("output.pdf");

Seçenek 2: Erken Toplamayı Önlemek için GC.KeepAlive Kullanın

İşlem sırası değiştirilemiyorsa, kaynak PdfDocument 'in yönetilen ömrünü AddHtmlHeadersAndFooters çağrısının ötesine genişletin:

var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
    HtmlFragment = "<div style='text-align:right; font-size:10px'>Page {page} of {total-pages}</div>"
};

var basePdf = renderer.RenderHtmlAsPdf(baseHtml);
var supplementPdf = PdfDocument.FromFile("supplement.pdf");

basePdf.InsertPdf(supplementPdf, 0);
basePdf.AddHtmlHeadersAndFooters(renderer.RenderingOptions);

GC.KeepAlive(supplementPdf);

basePdf.SaveAs("output.pdf");

AddHtmlHeadersAndFooters sonrasına yerleştirilen GC.KeepAlive(supplementPdf), JIT'in, yerel birleştirme tamamlanmadan önce supplementPdf toplanmasını planlamasını önler.

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 20,878,335Sü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.

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