Troubleshooting
FontSource, DataSource, và PdfPlugin gây ra NotImplementedError khi được khởi tạo trực tiếp
FontSource, DataSource, và PdfPlugin là các lớp cơ sở trừu tượng. Mỗi lớp khai báo một phương thức hook mà việc triển khai cơ sở cố ý gây ra NotImplementedError, và mong đợi một lớp con cụ thể để ghi đè:
| Lớp cơ sở | Hook trừu tượng | Hãy sử dụng một trong các lớp con cụ thể này thay vì |
|---|---|---|
FontSource | get_font_definitions() | FileFontSource, FolderFontSource, MemoryFontSource, SystemFontSource |
DataSource | read_bytes() / write_bytes() | FileDataSource, StreamDataSource, ByteArrayDataSource |
PdfPlugin | process() | Merger, Optimizer, Splitter, TextExtractor |
Nếu bạn thấy NotImplementedError được gây ra từ một trong ba lớp cơ sở này, cách khắc phục hầu hết luôn là thay thế bằng lớp cụ thể phù hợp. Đối với việc khám phá phông chữ, hãy đăng ký một nguồn cụ thể với FontRepository thay vì sử dụng FontSource trực tiếp:
import aspose_pdf
aspose_pdf.FontRepository.add_source(
aspose_pdf.FolderFontSource("./fonts", scan_subdirectories=True)
)Mẫu tương tự áp dụng cho các plugin low-code — xây dựng một lớp con PluginOptions với các đầu vào/đầu ra DataSource cụ thể và chạy nó qua một plugin cụ thể, không phải PdfPlugin tự nó:
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() gây ra NotImplementedError trên một thể hiện Shading trần
Shading — lớp cơ sở cho việc lấy mẫu màu vùng giới hạn được sử dụng bởi các mẫu shading PDF — thực hiện color_at() và pattern_color_at() bằng cách ủy thác cho một hook nội bộ _color_at() không có phần thân mặc định. Trong việc sử dụng bình thường, bạn không bao giờ tự tạo Shading: bộ phân tích PDF của thư viện tự xây dựng lớp con nội bộ đúng cho mỗi ShadingType được hỗ trợ khi gặp tài nguyên shading, và trả về None cho các loại shading mà nó không nhận ra thay vì quay lại lớp cơ sở. NotImplementedError chỉ có thể tiếp cận được nếu mã ứng dụng khởi tạo Shading trực tiếp và gọi color_at() hoặc pattern_color_at() mà không tạo lớp con để cung cấp một triển khai thực tế của _color_at().