Troubleshooting
FontSource, DataSource і PdfPlugin піднімають NotImplementedError при прямому створенні
FontSource, DataSource і PdfPlugin — абстрактні базові класи. Кожен оголошує один hook-метод, для якого базова реалізація навмисно піднімає 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)
)Той самий шаблон застосовується до 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 — базовий клас для вибірки кольору в обмеженій області, що використовується патернами затінення PDF — реалізує color_at() та pattern_color_at(), делегуючи їх внутрішньому hook-методу _color_at(), який не має типового тіла. При звичайному використанні ви ніколи не створюєте Shading самостійно: власний PDF-парсер бібліотеки створює правильний внутрішній підклас для кожного підтримуваного ShadingType, коли він натрапляє на ресурс затінення, і повертає None для типів затінення, які не розпізнає, замість того, щоб повернутися до базового класу. NotImplementedError доступний лише тоді, коли прикладний код безпосередньо інстанціює Shading і викликає color_at() або pattern_color_at(), не створюючи підклас для забезпечення реальної реалізації _color_at().