Troubleshooting
FontSource、DataSource和PdfPlugin在直接实例化时会抛出NotImplementedError
FontSource、DataSource和PdfPlugin是抽象基类。每个类声明一个钩子方法,基类实现有意抛出NotImplementedError,并期望具体子类进行覆盖:
| 基类 | 抽象钩子 | 请改用这些具体子类之一 |
|---|---|---|
FontSource | get_font_definitions() | FileFontSource, FolderFontSource, MemoryFontSource, SystemFontSource |
DataSource | read_bytes() / write_bytes() | FileDataSource, StreamDataSource, ByteArrayDataSource |
PdfPlugin | process() | Merger, Optimizer, Splitter, TextExtractor |
如果在这三个基类中的某个类中看到抛出NotImplementedError,几乎总是需要替换为相匹配的具体类。对于字体发现,请使用FontRepository注册具体来源,而不是直接使用FontSource:
import aspose_pdf
aspose_pdf.FontRepository.add_source(
aspose_pdf.FolderFontSource("./fonts", scan_subdirectories=True)
)相同的模式适用于低代码插件——构建一个带有具体DataSource输入/输出的PluginOptions子类,并通过具体插件运行,而不是直接使用PdfPlugin本身:
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()在裸Shading实例上抛出NotImplementedError
Shading——用于 PDF 渲染图案的有界区域颜色采样的基类——通过委托给内部的_color_at()钩子实现color_at()和pattern_color_at(),该钩子没有默认实现。在正常使用中,你永远不会自行构造Shading:库自己的 PDF 解析器在遇到渲染资源时,会为每个受支持的ShadingType构建正确的内部子类,并在遇到未识别的渲染类型时返回None,而不是回退到基类。只有当应用代码直接实例化Shading并在未子类化以提供真实的_color_at()实现的情况下调用color_at()或pattern_color_at()时,才会触及NotImplementedError。