表單處理期間的AccessViolationException (c0000005)
在處理PDF表單時,IronPDF可能會拋出一個間歇性的本地PdfDocument.Merge期間。
AccessViolationException (0xc0000005)
bad conversion while widening narrow string
崩潰是因為本地表單字段句柄與管理物件生命週期之間的交互引起的。如果PdfDocument在本地表單操作仍在進行時被垃圾回收或處置,本地層將存取已被釋放的記憶體,從而產生存取違規。
反覆出現的"在擴展窄字串時的錯誤轉換"警告,連同在展平期間移除表單字段註釋的警告,是一個獨立且無害的症狀。 這些是從解碼內部AcroForm字段字串和元資料而來,它們包含了特定PDF中的日文或多字節字元。 這些不表示一般支持日文或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,並確保偏好32位已禁用。 作為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.