Troubleshooting

Troubleshooting

FontSource, DataSource et PdfPlugin lèvent NotImplementedError lorsqu’ils sont instanciés directement

FontSource, DataSource et PdfPlugin sont des classes de base abstraites. Chaque déclare une méthode de hook que l’implémentation de base lève NotImplementedError par conception, et attend qu’une sous-classe concrète la surcharge:

Classe de baseHook abstraitUtilisez l’une de ces sous-classes concrètes à la place
FontSourceget_font_definitions()FileFontSource, FolderFontSource, MemoryFontSource, SystemFontSource
DataSourceread_bytes() / write_bytes()FileDataSource, StreamDataSource, ByteArrayDataSource
PdfPluginprocess()Merger, Optimizer, Splitter, TextExtractor

Si vous voyez NotImplementedError levé depuis l’une de ces trois classes de base, la solution consiste presque toujours à remplacer par la classe concrète correspondante. Pour la découverte de polices, enregistrez une source concrète avec FontRepository au lieu d’utiliser FontSource directement:

import aspose_pdf

aspose_pdf.FontRepository.add_source(
    aspose_pdf.FolderFontSource("./fonts", scan_subdirectories=True)
)

Le même schéma s’applique aux plugins low-code — créez une sous-classe PluginOptions avec des entrées/sorties DataSource concrètes et exécutez-la via un plugin concret, pas PdfPlugin lui-même:

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() lève NotImplementedError sur une instance Shading nue

Shading — la classe de base pour l’échantillonnage de couleur de région bornée utilisé par les motifs d’ombrage PDF — implémente color_at() et pattern_color_at() en déléguant à un hook interne _color_at() qui n’a pas de corps par défaut. En usage normal, vous ne construisez jamais Shading vous-même: l’analyseur PDF intégré de la bibliothèque crée la sous-classe interne correcte pour chaque ShadingType pris en charge lorsqu’il rencontre une ressource d’ombrage, et renvoie None pour les types d’ombrage qu’il ne reconnaît pas plutôt que de retomber sur la classe de base. Le NotImplementedError n’est accessible que si le code de l’application instancie Shading directement et appelle color_at() ou pattern_color_at() sans le sous-classer pour fournir une véritable implémentation _color_at().

Voir aussi

 Français