Troubleshooting
FontSource, DataSource e PdfPlugin sollevano NotImplementedError quando istanziati direttamente
FontSource, DataSource e PdfPlugin sono classi base astratte. Ognuna dichiara un metodo hook che l’implementazione di base solleva NotImplementedError per progettazione, e si aspetta che una sottoclasse concreta lo sovrascriva:
| Classe base | Hook astratto | Usa una di queste sottoclassi concrete invece |
|---|---|---|
FontSource | get_font_definitions() | FileFontSource, FolderFontSource, MemoryFontSource, SystemFontSource |
DataSource | read_bytes() / write_bytes() | FileDataSource, StreamDataSource, ByteArrayDataSource |
PdfPlugin | process() | Merger, Optimizer, Splitter, TextExtractor |
Se vedi NotImplementedError sollevato da una di queste tre classi base, la soluzione è quasi sempre sostituire con la classe concreta corrispondente. Per la scoperta dei font, registra una sorgente concreta con FontRepository invece di usare FontSource direttamente:
import aspose_pdf
aspose_pdf.FontRepository.add_source(
aspose_pdf.FolderFontSource("./fonts", scan_subdirectories=True)
)Lo stesso schema si applica ai plugin low-code — crea una sottoclasse PluginOptions con input/output DataSource concreti e eseguila tramite un plugin concreto, non PdfPlugin stesso:
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() solleva NotImplementedError su un’istanza Shading nuda
Shading — la classe base per il campionamento di colore in regioni delimitate usato dai pattern di sfumatura PDF — implementa color_at() e pattern_color_at() delegando a un hook interno _color_at() che non ha un corpo predefinito. Nell’uso normale non si costruisce mai Shading direttamente: il parser PDF della libreria crea la corretta sottoclasse interna per ogni ShadingType supportato quando incontra una risorsa di sfumatura, e restituisce None per i tipi di sfumatura non riconosciuti invece di ricadere sulla classe base. Il NotImplementedError è raggiungibile solo se il codice dell’applicazione istanzia Shading direttamente e chiama color_at() o pattern_color_at() senza crearne una sottoclasse per fornire una reale implementazione _color_at().