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)
)ينطبق نفس النمط على الإضافات منخفضة الشيفرة — أنشئ فئة فرعية من PluginOptions بمدخلات/مخرجات DataSource ملموسة وشغّلها عبر إضافة ملموسة، لا عبر 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() يرفع NotImplementedError على نسخة Shading فارغة
Shading — الفئة الأساسية لأخذ عينات اللون في المناطق المحدودة التي يستخدمها أنماط تظليل PDF — تنفّذ color_at() وpattern_color_at() عبر تفويض إلى هوك داخلي _color_at() لا يحتوي على جسم افتراضي. في الاستخدام العادي لا تقوم بإنشاء Shading بنفسك: محلل PDF الخاص بالمكتبة يبني الفئة الداخلية الصحيحة لكل ShadingType مدعوم عند مواجهته لمورد تظليل، ويعيد None لأنواع التظليل التي لا يتعرف عليها بدلاً من الرجوع إلى الفئة الأساسية. الـNotImplementedError لا يمكن الوصول إليه إلا إذا كان كود التطبيق ينشئ Shading مباشرةً ويستدعي color_at() أو pattern_color_at() دون إنشاء فئة فرعية لتوفير تنفيذ _color_at() حقيقي.