Troubleshooting
FontSource, DataSource e PdfPlugin levantam NotImplementedError quando instanciados diretamente
FontSource, DataSource e PdfPlugin são classes base abstratas. Cada uma declara um método hook que a implementação base levanta NotImplementedError por design, e espera que uma subclasse concreta o sobrescreva:
| Classe base | Hook abstrato | Use uma dessas subclasses concretas em vez disso |
|---|---|---|
FontSource | get_font_definitions() | FileFontSource, FolderFontSource, MemoryFontSource, SystemFontSource |
DataSource | read_bytes() / write_bytes() | FileDataSource, StreamDataSource, ByteArrayDataSource |
PdfPlugin | process() | Merger, Optimizer, Splitter, TextExtractor |
Se você vir NotImplementedError levantado por uma dessas três classes base, a solução quase sempre é substituir pela classe concreta correspondente. Para a descoberta de fontes, registre uma fonte concreta com FontRepository em vez de usar FontSource diretamente:
import aspose_pdf
aspose_pdf.FontRepository.add_source(
aspose_pdf.FolderFontSource("./fonts", scan_subdirectories=True)
)O mesmo padrão se aplica a plugins low-code — crie uma subclasse PluginOptions com entradas/saídas DataSource concretas e execute-a através de um plugin concreto, não PdfPlugin propriamente dito:
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() levanta NotImplementedError em uma instância Shading nua
Shading — a classe base para amostragem de cor em região delimitada usada por padrões de sombreamento PDF — implementa color_at() e pattern_color_at() delegando para um hook interno _color_at() que não possui corpo padrão. No uso normal você nunca constrói Shading manualmente: o próprio analisador PDF da biblioteca cria a subclasse interna correta para cada ShadingType suportado ao encontrar um recurso de sombreamento, e retorna None para tipos de sombreamento que não reconhece, em vez de recair na classe base. O NotImplementedError só é acessível se o código da aplicação instanciar Shading diretamente e chamar color_at() ou pattern_color_at() sem criar uma subclasse que forneça uma implementação real de _color_at().