フォーム処理中のAccessViolationException (c0000005)
PDFフォームを処理する際に、IronPDFはインターミッテントなネイティブAccessViolationException (コードPdfDocument.Mergeの間によく発生します。
AccessViolationException (0xc0000005)
bad conversion while widening narrow string
クラッシュは、ネイティブのフォームフィールドハンドルとマネージドオブジェクトのライフタイムの相互作用から生じます。ネイティブフォーム操作がまだ進行中にPdfDocumentがガベージコレクションされたり破棄されたりすると、ネイティブレイヤーが既に解放されたメモリにアクセスし、アクセス違反を引き起こします。
"狭い文字列の拡大中の変換失敗"警告の繰り返しと、フラッテン化中のフォームフィールド注釈の削除に関する警告は、別個の無害な症状です。 これらは、あるPDF内の日本語やマルチバイト文字を含む内部AcroFormフィールドの文字列とメタデータをデコードすることから生じます。 これらは、日本語やUnicodeサポート一般、または日本語のUNCファイルパスに問題があることを示すものではありません。
解決策
1. ドキュメントを完全な操作で生かしておく
推奨: フォーム処理の全期間、PdfDocumentをスコープ内に保持してください。 GC.KeepAlive(doc)を呼び出します。
Using doc As IronPdf.PdfDocument = IronPdf.PdfDocument.FromFile(tempPdfPath)
For Each field In doc.Form
' Your form field processing here
Next
GC.KeepAlive(doc)
End Using
GC.KeepAlive(doc)は、ネイティブフォーム操作がまだ実行中の間にランタイムがドキュメントを収集するのを防ぎ、ネイティブコードが解放されたメモリにアクセスする可能性のあるウィンドウを閉じます。
2. 手動GC.Collect()呼び出しを削除する
PDFおよびフォーム処理中のGC.Collect()呼び出しを削除してください。 操作中にコレクションを強制することは、クラッシュの原因となる正確なライフタイムの問題を引き起こすことがあります。
3. x64のみにターゲット設定
プロジェクトのプラットフォームターゲットをx64に明示的に設定し、Prefer 32-bitが無効であることを確認してください。 x64として実行することは、ネイティブフォーム作業中の32ビットプロセスの制約を回避します。

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.