Troubleshooting

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 abstractFolosește în schimb una dintre aceste subclase concrete
FontSourceget_font_definitions()FileFontSource, FolderFontSource, MemoryFontSource, SystemFontSource
DataSourceread_bytes() / write_bytes()FileDataSource, StreamDataSource, ByteArrayDataSource
PdfPluginprocess()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().

Vezi și:

 Română