Troubleshooting

Troubleshooting

FontSource, DataSource і PdfPlugin піднімають NotImplementedError при прямому створенні

FontSource, DataSource і PdfPlugin — абстрактні базові класи. Кожен оголошує один hook-метод, для якого базова реалізація навмисно піднімає NotImplementedError, і очікує, що конкретний підклас його перевизначить:

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

Дивіться також

 Українська