การแก้ไขปัญหา
ปัญหาทั่วไปและวิธีแก้ไขเมื่อทำงานกับ Aspose.PDF FOSS สำหรับ .NET
การโหลดเอกสาร
| Problem | Cause | Solution |
|---|
Document.Open เกิดข้อผิดพลาดบน PDF ที่ถูกต้อง | ไฟล์มีการป้องกันด้วยรหัสผ่าน | ระบุรหัสผ่านในตัวสร้าง |
| หน่วยความจำไม่พอเมื่อทำงานกับ PDF ขนาดใหญ่ | ไฟล์ทั้งหมดถูกโหลดเข้าอาร์เรย์ไบต์ | ประมวลผลหน้าแยกกันหรือใช้การสตรีม |
Pages[0] ขว้างข้อผิดพลาดดัชนี | หน้าต่างใช้การจัดทำดัชนีแบบ 1‑based | ใช้ Pages[1] สำหรับหน้าที่หนึ่ง |
คำอธิบาย
| ปัญหา | สาเหตุ | วิธีแก้ |
|---|
| คำอธิบายไม่ปรากฏหลังบันทึก | สี่เหลี่ยมมีพื้นที่ศูนย์หรืออยู่นอกขอบเขตของหน้า | ตรวจสอบว่าพิกัดอยู่ภายในหน้า MediaBox |
LinkAnnotation.Uri คืนค่า null | ลิงก์ใช้การกระทำ GoTo หรือ JavaScript | แก้ไขโดยใช้ PdfAction.Create และตรวจสอบ ActionType |
Flatten() ขว้างข้อยกเว้น | คำอธิบายขาดการอ้างอิง /P (หน้า) | ตรวจสอบให้แน่ใจว่าคำอธิบายถูกเพิ่มผ่าน Page.Annotations |
การสกัดข้อความ
| ปัญหา | สาเหตุ | วิธีแก้ |
|---|
| ข้อความที่สกัดออกมามีอักขระเสีย | การเข้ารหัสที่ไม่เป็นมาตรฐานหรือการแมปฟอนต์ CID | ตรวจสอบการฝังฟอนต์; PDF ที่สแกนอาจต้องใช้ OCR |
| ไม่พบส่วนข้อความ | เนื้อหาของหน้าเป็นภาพเรสเตอร์ | ใช้ OCR ก่อนการสกัดข้อความ |
| Regex ไม่พบการจับคู่ | การจัดวางข้อความใน PDF แทรกช่องว่าง | ใช้รูปแบบที่ยืดหยุ่นมากขึ้นหรือทำให้ช่องว่างเป็นมาตรฐาน |
การเรนเดอร์และการแปลง
| Problem | Cause | Solution |
|---|
| Rendered image is blurry | Resolution too low | Increase DPI in Resolution constructor |
| HTML output missing images | External image paths not configured | Use HtmlSaveOptions with embedded images |
| PDF/A conversion removes annotations | Target profile disallows annotations | Use PDF/A-2 or PDF/A-3 |
ฟิลด์ฟอร์ม
| Problem | Cause | Solution |
|---|
| ค่าฟิลด์ว่างเปล่า | ฟิลด์ไม่มี /V entry | ตรวจสอบว่า field.Value ไม่เป็นค่า null |
FillField ไม่มีผล | ชื่อฟิลด์ไม่ตรงกัน | ใช้ Form.FieldNames เพื่อแสดงรายการชื่อที่มี |
| ExportToJson ให้ผลลัพธ์เป็นค่าว่าง | คำอธิบายวิดเจ็ตไม่ได้แคสต์อย่างถูกต้อง | ตรวจสอบว่าคำอธิบายเป็น WidgetAnnotation |
เคล็ดลับทั่วไป
- ควรห่อ
Document ด้วย using เสมอเพื่อปล่อยตัวจัดการไฟล์ - ใช้
Document.Open(byte[]) สำหรับกระบวนการทำงานในหน่วยความจำเพื่อหลีกเลี่ยงการล็อกไฟล์ - ตรวจสอบ
doc.Pages.Count ก่อนเข้าถึงหน้าตามดัชนี - บันทึกเอกสารเพียงครั้งเดียวหลังจากการแก้ไขทั้งหมดเพื่อประสิทธิภาพที่ดีที่สุด
ดูเพิ่มเติม