Troubleshooting
FontSource، DataSource و PdfPlugin هنگام نمونهسازی مستقیم NotImplementedError را برمیانگیزند
FontSource، DataSource و PdfPlugin کلاسهای پایهٔ انتزاعی هستند. هر یک یک متد هوک اعلام میکند که پیادهسازی پایه بهصورت طراحیشده NotImplementedError را برمیانگیزد و انتظار دارد یک زیرکلاس واقعی آن را بازنویسی کند:
| کلاس پایه | هوک انتزاعی | به جای آن از یکی از این زیرکلاسهای پیاده استفاده کنید |
|---|---|---|
FontSource | get_font_definitions() | FileFontSource, FolderFontSource, MemoryFontSource, SystemFontSource |
DataSource | read_bytes() / write_bytes() | FileDataSource, StreamDataSource, ByteArrayDataSource |
PdfPlugin | process() | Merger, Optimizer, Splitter, TextExtractor |
اگر NotImplementedError را از یکی از این سه کلاس پایه مشاهده کردید، راهحل تقریباً همیشه جایگزینی با کلاس واقعی متناظر است. برای کشف قلمها، منبع واقعی را با FontRepository ثبت کنید بهجای استفاده مستقیم از FontSource:
import aspose_pdf
aspose_pdf.FontRepository.add_source(
aspose_pdf.FolderFontSource("./fonts", scan_subdirectories=True)
)الگوی مشابه برای افزونههای کمکد نیز صادق است — یک زیرکلاس 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() در یک نمونهٔ خالی Shading، NotImplementedError را برمیانگیزد
Shading — کلاس پایه برای نمونهبرداری رنگ در ناحیهٔ محدود که توسط الگوهای سایهدار PDF استفاده میشود — color_at() و pattern_color_at() را با واگذاری به یک هوک داخلی _color_at() که بدنهٔ پیشفرضی ندارد، پیادهسازی میکند. در استفادهٔ معمول شما هرگز Shading را خودتان نمیسازید: تجزیهکنندهٔ PDF کتابخانه، برای هر ShadingType پشتیبانیشده، زیرکلاس داخلی مناسب را هنگام مواجهه با منبع سایهدار میسازد و برای نوعهای سایهداری که شناسایی نمیکند، None را برمیگرداند بهجای اینکه به کلاس پایه بازگردد. NotImplementedError فقط زمانی در دسترس است که کد برنامه، Shading را بهصورت مستقیم نمونهسازی کند و بدون زیرکلاسسازی برای فراهم کردن پیادهسازی واقعی _color_at()، color_at() یا pattern_color_at() را فراخوانی کند.