HTMLヘッダー/フッター付きでInsertPdfした後にAccessViolationExceptionが発生

Curtis Chau
Curtis Chau
Updated: 2026年6月12日

別のドキュメントからページをマージするためにAccessViolationExceptionがスローされます。 この例外はデバッグビルドでは発生せず、デバッガがアタッチされている場合も発生しません。

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

リリースビルドでは、.NET JIT最適化機能により、ガベージコレクタが管理されたオブジェクトをその外来領域が終了する前に回収することが許可されます。そのオブジェクトが管理コードから再参照されないことが確証された場合です。 IronPDFのネイティブChromeレイヤーが読み取り中でも、PdfDocumentが収集される可能性があります。 その後のAddHtmlHeadersAndFooters呼び出しが解放されたメモリにアクセスし、アクセス違反を引き起こします。

解決策

オプション1: InsertPdfの前にヘッダーとフッターを適用する(推奨)

操作の順序を再配置し、ページが挿入される前にヘッダーとフッターを基礎文書に書き込む:

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");

オプション2: GC.KeepAliveを使用して早期回収を防ぐ

操作順序を変更できない場合は、AddHtmlHeadersAndFooters呼び出し後まで延長します:

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");

ネイティブマージが完了する前にGC.KeepAlive(supplementPdf)を配置します。

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

詳しく読む

準備はできましたか?

Nuget Downloads 21,739,885バージョン:2026.10リリースされたばかり