Troubleshooting

Troubleshooting

FontSource, DataSource และ PdfPlugin ทำให้เกิด NotImplementedError เมื่อสร้างโดยตรง

FontSource, DataSource และ PdfPlugin เป็นคลาสฐานเชิงนามธรรม แต่ละคลาสประกาศเมธอด hook หนึ่งที่การทำงานพื้นฐานทำให้เกิด NotImplementedError ตามการออกแบบ และคาดว่าคลาสย่อยที่เป็นคอนกรีตจะทำการ override:

คลาสพื้นฐานฮุคเชิงนามธรรมใช้หนึ่งในคลาสย่อยเชิงรูปธรรมเหล่านี้แทน
FontSourceget_font_definitions()FileFontSource, FolderFontSource, MemoryFontSource, SystemFontSource
DataSourceread_bytes() / write_bytes()FileDataSource, StreamDataSource, ByteArrayDataSource
PdfPluginprocess()Merger, Optimizer, Splitter, TextExtractor

หากคุณพบว่า NotImplementedError ถูกยกขึ้นจากหนึ่งในสามคลาสฐานเหล่านี้ วิธีแก้ไขมักจะเป็นการสลับเป็นคลาสคอนกรีตที่ตรงกัน สำหรับการค้นหาแบบอักษร ให้ลงทะเบียนแหล่งข้อมูลคอนกรีตกับ FontRepository แทนการใช้ FontSource โดยตรง:

import aspose_pdf

aspose_pdf.FontRepository.add_source(
    aspose_pdf.FolderFontSource("./fonts", scan_subdirectories=True)
)

รูปแบบเดียวกันนี้ใช้กับปลั๊กอิน low-code — สร้างคลาสย่อย PluginOptions ที่มีอินพุต/เอาต์พุต DataSource ที่เป็นคอนกรีตและเรียกใช้ผ่านปลั๊กอินคอนกรีต ไม่ใช่ PdfPlugin เอง:

import aspose_pdf

options = aspose_pdf.MergeOptions()
options.add_input(aspose_pdf.FileDataSource("part1.pdf"))
options.add_input(aspose_pdf.FileDataSource("part2.pdf"))
options.add_output(aspose_pdf.FileDataSource("merged.pdf"))
aspose_pdf.Merger().process(options)

Shading.color_at() ทำให้เกิด NotImplementedError บนอินสแตนซ์ Shading ที่เปล่า

Shading — คลาสฐานสำหรับการสุ่มสีในพื้นที่ที่มีขอบเขตที่ใช้โดยรูปแบบ shading ของ PDF — ทำการ implement color_at() และ pattern_color_at() โดยมอบหมายให้กับ hook _color_at() ภายในที่ไม่มีเนื้อหาเริ่มต้น ในการใช้งานปกติคุณจะไม่สร้าง Shading ด้วยตัวเอง: parser PDF ของไลบรารีจะสร้างคลาสย่อยภายในที่ถูกต้องสำหรับแต่ละ ShadingType ที่รองรับเมื่อพบทรัพยากร shading และจะคืนค่า None สำหรับประเภท shading ที่ไม่รู้จักแทนที่จะกลับไปใช้คลาสฐาน The NotImplementedError สามารถเข้าถึงได้เฉพาะเมื่อโค้ดแอปพลิเคชันสร้าง Shading โดยตรงและเรียก color_at() หรือ pattern_color_at() โดยไม่ได้สร้างคลาสย่อยเพื่อให้มีการทำงานของ _color_at() ที่แท้จริง:

ดูเพิ่มเติม

 ภาษาไทย