Troubleshooting
FontSource, DataSource en PdfPlugin veroorzaken NotImplementedError wanneer ze rechtstreeks worden geïnstantieerd
FontSource, DataSource en PdfPlugin zijn abstracte basisklassen. Elke declareert één hook-methode die de basisimplementatie NotImplementedError veroorzaakt per ontwerp, en verwacht dat een concrete subklasse deze overschrijft:
| Basisklasse | Abstracte hook | Gebruik één van deze concrete subklassen in plaats daarvan |
|---|---|---|
FontSource | get_font_definitions() | FileFontSource, FolderFontSource, MemoryFontSource, SystemFontSource |
DataSource | read_bytes() / write_bytes() | FileDataSource, StreamDataSource, ByteArrayDataSource |
PdfPlugin | process() | Merger, Optimizer, Splitter, TextExtractor |
Als je NotImplementedError ziet opkomen vanuit een van deze drie basisklassen, is de oplossing bijna altijd om de overeenkomstige concrete klasse te gebruiken. Voor fontdetectie registreer je een concrete bron met FontRepository in plaats van FontSource rechtstreeks te gebruiken:
import aspose_pdf
aspose_pdf.FontRepository.add_source(
aspose_pdf.FolderFontSource("./fonts", scan_subdirectories=True)
)Hetzelfde patroon geldt voor low-code-plugins — bouw een PluginOptions subklasse met concrete DataSource invoer/uitvoer en voer deze uit via een concrete plugin, niet PdfPlugin zelf:
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() veroorzaakt NotImplementedError op een kale Shading instantie
Shading — de basisklasse voor kleurmonsters binnen een begrensd gebied die worden gebruikt door PDF-schaduwpatronen — implementeert color_at() en pattern_color_at() door te delegeren aan een interne _color_at() hook die geen standaardimplementatie heeft. In normaal gebruik construeer je Shading nooit zelf: de PDF-parser van de bibliotheek bouwt de juiste interne subklasse voor elke ondersteunde ShadingType wanneer hij een schaduwhulpbron tegenkomt, en retourneert None voor schaduwtypes die hij niet herkent in plaats van terug te vallen op de basisklasse. De NotImplementedError is alleen bereikbaar als toepassingscode Shading rechtstreeks instantiateert en color_at() of pattern_color_at() aanroept zonder een subklasse te maken die een echte _color_at()-implementatie levert.