Troubleshooting
FontSource, DataSource a PdfPlugin vyvolají NotImplementedError při přímé instanciaci
FontSource, DataSource a PdfPlugin jsou abstraktní základní třídy. Každá deklaruje jednu háčkovou metodu, pro kterou základní implementace záměrně vyvolává NotImplementedError, a očekává, že konkrétní podtřída ji přepíše:
| Základní třída | Abstraktní hook | Místo toho použijte jednu z těchto konkrétních podtříd |
|---|---|---|
FontSource | get_font_definitions() | FileFontSource, FolderFontSource, MemoryFontSource, SystemFontSource |
DataSource | read_bytes() / write_bytes() | FileDataSource, StreamDataSource, ByteArrayDataSource |
PdfPlugin | process() | Merger, Optimizer, Splitter, TextExtractor |
Pokud vidíte, že NotImplementedError je vyvoláno z jedné z těchto tří základních tříd, oprava je téměř vždy výměna za odpovídající konkrétní třídu. Pro vyhledávání fontů zaregistrujte konkrétní zdroj pomocí FontRepository místo přímého použití FontSource:
import aspose_pdf
aspose_pdf.FontRepository.add_source(
aspose_pdf.FolderFontSource("./fonts", scan_subdirectories=True)
)Stejný vzor platí pro low-code pluginy — vytvořte podtřídu PluginOptions s konkrétními vstupy/výstupy DataSource a spusťte ji přes konkrétní plugin, nikoli přímo 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() vyvolá NotImplementedError na holé instanci Shading
Shading — základní třída pro omezování oblastí vzorkování barev používaná v PDF stínovacích vzorcích — implementuje color_at() a pattern_color_at() delegací na interní háček _color_at(), který nemá výchozí tělo. V běžném používání nikdy sami nekonstruktujete Shading: PDF parser knihovny vytvoří správnou interní podtřídu pro každý podporovaný ShadingType, když narazí na stínovací zdroj, a vrátí None pro typy stínování, které nepozná, místo aby se vrátil k základní třídě. NotImplementedError je přístupný pouze tehdy, když aplikační kód přímo instancuje Shading a zavolá color_at() nebo pattern_color_at() bez podtřídění, aby poskytl skutečnou implementaci _color_at().