Troubleshooting
FontSource, DataSource και PdfPlugin προκαλούν NotImplementedError όταν δημιουργούνται άμεσα
FontSource, DataSource και PdfPlugin είναι αφηρημένες βασικές κλάσεις. Κάθε μια δηλώνει μία μέθοδο hook που η βασική υλοποίηση προκαλεί NotImplementedError επίτηδες, και αναμένει μια συγκεκριμένη υποκλάση να την υπερκαλύψει:
| Βασική κλάση | Αφηρημένο hook | Χρησιμοποιήστε μία από αυτές τις συγκεκριμένες υποκλάσεις αντί αυτού |
|---|---|---|
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)
)Το ίδιο μοτίβο ισχύει για πρόσθετα low-code — δημιουργήστε μια υποκλάση 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() παραπέμποντας σε ένα εσωτερικό hook _color_at() που δεν έχει προεπιλεγμένο σώμα. Σε κανονική χρήση δεν δημιουργείτε ποτέ το Shading μόνοι σας: ο δικός της PDF parser της βιβλιοθήκης δημιουργεί τη σωστή εσωτερική υποκλάση για κάθε υποστηριζόμενο ShadingType όταν συναντά έναν πόρο σκίασης, και επιστρέφει None για τύπους σκίασης που δεν αναγνωρίζει αντί να επανέρχεται στην βασική κλάση. Το NotImplementedError είναι προσβάσιμο μόνο εάν ο κώδικας εφαρμογής δημιουργεί το Shading άμεσα και καλεί τα color_at() ή pattern_color_at() χωρίς να το υποκλάσει ώστε να παρέχει μια πραγματική υλοποίηση _color_at().