Troubleshooting

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řídaAbstraktní hookMísto toho použijte jednu z těchto konkrétních podtříd
FontSourceget_font_definitions()FileFontSource, FolderFontSource, MemoryFontSource, SystemFontSource
DataSourceread_bytes() / write_bytes()FileDataSource, StreamDataSource, ByteArrayDataSource
PdfPluginprocess()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().

Viz také:

 Čeština