Troubleshooting

Troubleshooting

FontSource、DataSource和PdfPlugin在直接实例化时会抛出NotImplementedError

FontSource、DataSource和PdfPlugin是抽象基类。每个类声明一个钩子方法,基类实现有意抛出NotImplementedError,并期望具体子类进行覆盖:

基类抽象钩子请改用这些具体子类之一
FontSourceget_font_definitions()FileFontSource, FolderFontSource, MemoryFontSource, SystemFontSource
DataSourceread_bytes() / write_bytes()FileDataSource, StreamDataSource, ByteArrayDataSource
PdfPluginprocess()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。

另请参阅

 中文