Troubleshooting

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 bazowaAbstrakcyjny hookUżyj jednej z tych konkretnych podklas zamiast
FontSourceget_font_definitions()FileFontSource, FolderFontSource, MemoryFontSource, SystemFontSource
DataSourceread_bytes() / write_bytes()FileDataSource, StreamDataSource, ByteArrayDataSource
PdfPluginprocess()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().

Zobacz także

 Polski