Troubleshooting
FontSource, DataSource och PdfPlugin kastar NotImplementedError när de instansieras direkt
FontSource, DataSource och PdfPlugin är abstrakta basklasser. Var och en deklarerar en hook-metod som basklassen avsiktligt kastar NotImplementedError för, och förväntar sig att en konkret subklass åsidosätter:
| Basisklass | Abstrakt krok | Använd en av dessa konkreta underklasser istället |
|---|---|---|
FontSource | get_font_definitions() | FileFontSource, FolderFontSource, MemoryFontSource, SystemFontSource |
DataSource | read_bytes() / write_bytes() | FileDataSource, StreamDataSource, ByteArrayDataSource |
PdfPlugin | process() | Merger, Optimizer, Splitter, TextExtractor |
Om du ser NotImplementedError kastas från någon av dessa tre basklasser, är lösningen nästan alltid att byta in den matchande konkreta klassen. För typsnittsupptäckt, registrera en konkret källa med FontRepository i stället för att använda FontSource direkt:
import aspose_pdf
aspose_pdf.FontRepository.add_source(
aspose_pdf.FolderFontSource("./fonts", scan_subdirectories=True)
)Samma mönster gäller för low-code-plugins — bygg en PluginOptions-subklass med konkreta DataSource in-/utdata och kör den genom en konkret plugin, inte PdfPlugin själv:
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() kastar NotImplementedError på en naken Shading instans
Shading — basklassen för färgprovtagning i avgränsade regioner som används av PDF-skuggmönster — implementerar color_at() och pattern_color_at() genom att delegera till en intern _color_at()-hook som saknar standardimplementation. Vid normal användning konstruerar du aldrig Shading själv: bibliotekets egen PDF-parser bygger rätt interna subklass för varje stödd ShadingType när den stöter på en skuggresurs, och returnerar None för skuggtyper den inte känner igen i stället för att falla tillbaka till basklassen. NotImplementedError är endast nåbar om applikationskod instansierar Shading direkt och anropar color_at() eller pattern_color_at() utan att subklassa den för att tillhandahålla en riktig _color_at()-implementation.