Troubleshooting
FontSource, DataSource i PdfPlugin podnoszą NotImplementedError przy bezpośredniej instancjacji
FontSource, DataSource i PdfPlugin są abstrakcyjnymi klasami bazowymi. Każda deklaruje jedną metodę hook, dla której domyślna implementacja podnosi NotImplementedError celowo i oczekuje, że konkretna podklasa ją nadpisze:
| Klasa bazowa | Abstrakcyjny hook | Użyj jednej z tych konkretnych podklas zamiast |
|---|---|---|
FontSource | get_font_definitions() | FileFontSource, FolderFontSource, MemoryFontSource, SystemFontSource |
DataSource | read_bytes() / write_bytes() | FileDataSource, StreamDataSource, ByteArrayDataSource |
PdfPlugin | process() | Merger, Optimizer, Splitter, TextExtractor |
Jeśli zobaczysz, że NotImplementedError jest podnoszone przez jedną z tych trzech klas bazowych, rozwiązanie prawie zawsze polega na zamianie na odpowiadającą klasę konkretną. Do wykrywania czcionek zarejestruj konkretne źródło w FontRepository zamiast używać FontSource bezpośrednio:
import aspose_pdf
aspose_pdf.FontRepository.add_source(
aspose_pdf.FolderFontSource("./fonts", scan_subdirectories=True)
)Ten sam wzorzec ma zastosowanie do wtyczek low-code — zbuduj podklasę PluginOptions z konkretnymi wejściami/wyjściami DataSource i uruchom ją za pomocą konkretnej wtyczki, nie PdfPlugin bezpośrednio:
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() podnosi NotImplementedError przy gołej instancji Shading
Shading — klasa bazowa do próbkowania kolorów w ograniczonym obszarze używana przez wzorce cieniowania PDF — implementuje color_at() i pattern_color_at(), delegując do wewnętrznego hooka _color_at(), który nie ma domyślnego ciała. W normalnym użyciu nigdy nie tworzysz Shading samodzielnie: parser PDF biblioteki tworzy odpowiednią wewnętrzną podklasę dla każdego obsługiwanego ShadingType, gdy napotka zasób cieniowania, i zwraca None dla typów cieniowania, których nie rozpoznaje, zamiast powracać do klasy bazowej. NotImplementedError jest dostępny tylko wtedy, gdy kod aplikacji instancjonuje Shading bezpośrednio i wywołuje color_at() lub pattern_color_at() bez podklasowania go w celu zapewnienia prawdziwej implementacji _color_at().