Troubleshooting
FontSource, DataSource, și PdfPlugin declanșează NotImplementedError când sunt instanțiate direct
FontSource, DataSource și PdfPlugin sunt clase de bază abstracte. Fiecare declară o metodă hook pe care implementarea de bază declanșează NotImplementedError din proiectare și se așteaptă ca o subclasă concretă să o suprascrie:
| Clasă de bază | Hook abstract | Folosește în schimb una dintre aceste subclase concrete |
|---|---|---|
FontSource | get_font_definitions() | FileFontSource, FolderFontSource, MemoryFontSource, SystemFontSource |
DataSource | read_bytes() / write_bytes() | FileDataSource, StreamDataSource, ByteArrayDataSource |
PdfPlugin | process() | Merger, Optimizer, Splitter, TextExtractor |
Dacă vezi NotImplementedError ridicat din una dintre aceste trei clase de bază, soluția este aproape întotdeauna să înlocuiești cu clasa concretă corespunzătoare. Pentru descoperirea fonturilor, înregistrează o sursă concretă cu FontRepository în loc să folosești FontSource direct:
import aspose_pdf
aspose_pdf.FontRepository.add_source(
aspose_pdf.FolderFontSource("./fonts", scan_subdirectories=True)
)Același model se aplică la plugin-urile low-code — construiește o subclasă PluginOptions cu intrări/ieșiri DataSource concrete și ruleaz-o printr-un plugin concret, nu prin PdfPlugin în sine:
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() declanșează NotImplementedError pe o instanță Shading goală
Shading — clasa de bază pentru eșantionarea culorilor în regiuni delimitate utilizată de tiparele de umbrire PDF — implementează color_at() și pattern_color_at() delegând la un hook intern _color_at() care nu are corp implicit. În utilizarea normală nu construiești niciodată Shading tu însuți: parserul PDF al bibliotecii construiește subclasa internă corectă pentru fiecare ShadingType suportat când întâlnește o resursă de umbrire și returnează None pentru tipurile de umbrire pe care nu le recunoaște, în loc să revină la clasa de bază. NotImplementedError este accesibil doar dacă codul aplicației instanțiază Shading direct și apelează color_at() sau pattern_color_at() fără a crea o subclasă pentru a furniza o implementare reală a _color_at().