Λειτουργίες εγγράφων JSON και C ABI
Το export.structured εξάγει επιλεγμένες σελίδες ως σημασιολογικό HTML, XHTML, XML ή JSON· το tables.export εξάγει τυποποιημένους πίνακες ως CSV, JSON ή XLSX, διατηρώντας τη συνέχεια μεταξύ σελίδων, τα συγχωνευμένα κελιά και το native συμπέρασμα τιμών
Και οι δύο λειτουργίες απαιτούν δυαδικό προορισμό εξόδου, διατηρούν το έγγραφο και τα υπάρχοντα πεδία υπογραφής, και εκθέτουν οριοθετημένες native επιλογές εξαγωγής
Δομημένες και τυποποιημένες εξαγωγές πινάκων
{"schemaVersion":1,"type":"export.structured","pages":[0,1],"format":"html",
"options":{"imageMode":"metadata","includeFormControls":false}}
{"schemaVersion":1,"type":"tables.export","pages":[0,1],"format":"json",
"options":{"mergeAcrossPages":true,"dateOrder":"dmy",
"decimalSeparator":",","thousandsSeparator":"."}}
Η δομημένη εξαγωγή δέχεται html, xhtml, xml και json (προεπιλογή)· η εξαγωγή πινάκων δέχεται csv (προεπιλογή), json και xlsx
Οι Boolean επιλογές της δομημένης εξαγωγής είναι οι includeCoordinates, includeStyles, includeImages, includeTables, includeAccessibilitySemantics, preferTaggedStructure, fallbackToGeometricSemantics, includeNavigation, includeAnnotations και includeFormControls· όλες έχουν προεπιλογή true
Το imageMode δέχεται omit, metadata και embedded-png (προεπιλογή)· δείτε τη σελίδα Δομημένη εξαγωγή φορτωμένης σελίδας για το σημασιολογικό μοντέλο και τη συμπεριφορά ευαίσθητων πεδίων
Οι επιλογές πόρων της δομημένης εξαγωγής είναι οι maxPageCount, maxGlyphsPerPage, maxImagesPerPage, maxStructureNodes, maxOutlineItems, maxInteractionsPerPage, maxFormOptionsPerField, maxOutputBytes, maxImageBytes και maxTotalImageBytes
Οι Boolean επιλογές πινάκων είναι οι detectMergedCells, detectRepeatedHeaders, mergeAcrossPages και inferValueTypes· όλες έχουν προεπιλογή true
Το dateOrder δέχεται ymd (προεπιλογή), mdy και dmy· οι διαχωριστές πρέπει να είναι μεμονωμένοι εκτυπώσιμοι χαρακτήρες, με κενό thousandsSeparator να τον απενεργοποιεί
Το minimumTableConfidence δέχεται τιμές από 0 έως 1 και έχει προεπιλογή 0.55· θετικό columnTolerance έχει προεπιλογή 12 μονάδες σελίδας
Οι επιλογές πόρων πινάκων είναι οι maxPageCount, maxGlyphsPerPage, maxTableCount, maxRowCount, maxCellCount, maxTextCharacters και maxOutputBytes· δείτε τη σελίδα Τυποποιημένη (Typed) εξαγωγή πινάκων για το μοντέλο κελιού
Άγνωστα ονόματα επιλογών, μη έγκυροι τύποι, μη υποστηριζόμενες μορφές και μη θετικά όρια απορρίπτονται· τα ζητούμενα native όρια περικόπτονται από συντηρητικούς προϋπολογισμούς μνήμης και αντικειμένων
Το staging της εξαγωγής περικόπτεται στο μικρότερο του budget.outputBytes και του ενός τετάρτου του budget.memoryBytes· το effectiveOutputLimit αναφέρει αυτό το όριο, ενώ μπορεί να ισχύσει αυστηρότερο options.maxOutputBytes
Οι native αποτυχίες πόρων αναφέρουν budget-exceeded, τη μετρική nativeExportResources και το native διαγνωστικό· observed=1 και limit=0 δηλώνουν άρνηση πρόσβασης σε πόρο και όχι μετρημένη χρήση bytes
Και οι δύο λειτουργίες αναφέρουν documentUpdated: false, διατηρούν τις ρυθμίσεις auto-launch και αποκωδικοποίησης της πηγής, κάνουν staging της εξόδου πριν τη δημοσίευση, και κρατούν τους υπάρχοντες προορισμούς αρχείων μετά από αποτυχημένη εργασία αρχείου
Οι έλεγχοι deadline και ακύρωσης callback του ABI είναι συνεργατικοί στα σημεία ελέγχου λειτουργίας και δημοσίευσης· τα native cancellation tokens ισχύουν επίσης μέσα στα υποστηριζόμενα στάδια εξαγωγής, και η native εργασία δεν διακόπτεται βίαια
Το THPDFJobProcessor.ExecuteLoadedOperation και το hpdf_document_execute_json_v1 μοιράζονται την ίδια μηχανή λειτουργιών εγγράφου με αριθμημένες εκδόσεις σχήματος
Ανακαλύψτε τα τρέχοντα ονόματα λειτουργιών, τις μορφές, το προφίλ υπογραφής, τη συμπεριφορά callback και τους προεπιλεγμένους προϋπολογισμούς με το THPDFJobProcessor.Capabilities ή το hpdf_capabilities_json_to_io
Λειτουργίες
Το JSON λειτουργίας χρησιμοποιεί UTF-8 και schemaVersion: 1· οι δείκτες σελίδων έχουν βάση το μηδέν και οι πίνακες επιλεγμένων σελίδων δεν μπορούν να περιέχουν διπλότυπα
| Τύπος | Είσοδος | Αποτέλεσμα |
|---|---|---|
| info | Φορτωμένο έγγραφο | Πλήθος σελίδων, αντικειμένων, φορμών και πεδίων υπογραφής |
| render | page, dpi (18–1,200), format (png) | PNG artifact και διαστάσεις |
| export.structured | pages, format, options | Artifact σημασιολογικού HTML/XHTML/XML/JSON και τηλεμετρία εξαγωγής |
| tables.export | pages, format, options | Artifact τυποποιημένου CSV/JSON/XLSX και τηλεμετρία πίνακα/κελιού/επικεφαλίδας |
| text.extract | pages, προαιρετική διάταξη | Κείμενο Unicode σελίδας και προαιρετικό artifact κειμένου UTF-8 |
| text.replace | pages, needle, replacement, matchCase | Πλήθη ταιριασμάτων/αντικαταστάσεων/παραλείψεων ανά σελίδα και προαιρετικό PDF artifact |
| forms.read | Φορτωμένο έγγραφο | Ονόματα, αποκωδικοποιημένες τιμές Unicode και native τύποι πεδίων |
| forms.fill | πίνακας fields με συμβολοσειρές name/value | Ατομικές ενημερώσεις· άγνωστα ή διπλά ονόματα απορρίπτουν τη λειτουργία |
| forms.flatten | Φορτωμένο έγγραφο | Πλήθος ισοπεδωμένων και εναπομείναντα πεδία |
| ocr.layer | pages, engine (builtin-ascii), dpi, minimumConfidence, skipPagesWithText, replaceExisting | Αναζητήσιμο PDF και πλήθη αποδεκτών/απορριφθέντων λέξεων |
| redact | burnIn: true, ορθογώνια με page/x1/y1/x2/y2 | Πλήθος εφαρμοσμένων redaction και PDF artifact |
| sign | pfxFile, pfxPassword, page, fieldName, προαιρετικό ορθογώνιο και contentsBytes | PDF artifact υπογεγραμμένο με PFX |
| archive.pdfa4.raster | acceptInformationLoss: true, iccProfileFile, προαιρετικά dpi και options | Επικυρωμένο PDF/A-4 raster artifact, πλήθη αφαιρέσεων και ρητό προφίλ απωλειών· διατηρεί τη φορτωμένη πηγή |
Η αντικατάσταση κειμένου επιστρέφει μερική κατάσταση όταν το native API αντικατάστασης δεν μπορεί να κωδικοποιήσει ένα ταίριασμα· ελέγξτε τα πλήθη ανά σελίδα
Το OCR εκθέτει προς το παρόν την ενσωματωμένη μηχανή ASCII· τα native API του Delphi δέχονται εξωτερικούς προσαρμογείς OCR
Οι μεταβολές απορρίπτουν έγγραφα με υπάρχοντα πεδία υπογραφής, συμπεριλαμβανομένων ανυπόγραφων placeholders· χρησιμοποιήστε τα native επαυξητικά API για να διατηρήσετε υπογραφές σε τέτοια έγγραφα
Η υπογραφή παράγει υπογεγραμμένο artifact και επαναφέρει το αρχικό handle, αναφέροντας documentUpdated: false· τα υπάρχοντα πεδία φόρμας παραμένουν διαθέσιμα, τα προσωρινά πεδία υπογραφής αφαιρούνται, και το handle μπορεί να ερωτηθεί ή να χρησιμοποιηθεί για άλλη λειτουργία μετά την υπογραφή
Αρχειοθετική μετατροπή PDF/A-4 σε raster
{
"schemaVersion": 1,
"type": "archive.pdfa4.raster",
"acceptInformationLoss": true,
"iccProfileFile": "profiles/sRGB.icm",
"dpi": 150,
"input": "source.pdf",
"output": "archive.pdf"
}
Τοποθετήστε αυτό το αντικείμενο στον πίνακα operations μιας εργασίας αρχείου, ή δώστε το απευθείας μέσω του hpdf_document_execute_json_v1 με φορτωμένο handle και binary callbacks εξόδου· το C ABI αγνοεί τις διαδρομές εισόδου/εξόδου της εργασίας αρχείου και χρησιμοποιεί τους προσαρμογείς του
Το acceptInformationLoss πρέπει να είναι το JSON Boolean true, και το iccProfileFile πρέπει να ονομάζει μη κενή, χωρίς NUL διαδρομή προς υποστηριζόμενο προφίλ ICC sRGB matrix/TRC στον υπολογιστή εκτέλεσης· οι σχετικές διαδρομές προφίλ επιλύονται ως προς τον κατάλογο εργασίας της διεργασίας
Το dpi έχει προεπιλογή 150 και δέχεται ακέραιους από 36 έως 1,200· η μετατροπή καλύπτει κάθε σελίδα πηγής και απορρίπτει οποιοδήποτε μέλος pages
Το αντικείμενο αποτελέσματος archive αναφέρει nativeValidationSucceeded, sourcePages, pagesRendered, rasterPixels, outputBytes, removedAnnotations, removedFormFields και removedEmbeddedFiles
Το archive.lossy είναι true, και κάθε σημαία στο archive.lossProfile είναι false: searchableText, vectorContent, interactiveContent, originalSignatures, annotationAppearances και structureIdentity
Το περιεχόμενο σελίδας γίνεται pixels RGB· οι σχολιασμοί και οι εμφανίσεις widgets παραλείπονται, και οι αρχικές υπογραφές δεν μεταφέρονται στην έξοδο. Η φορτωμένη πηγή παραμένει διαθέσιμη με documentUpdated: false, ακόμα και μετά από αποτυχημένη δημοσίευση· οι προηγούμενες ρυθμίσεις launch, αποκωδικοποίησης, stream-threshold, ακύρωσης και απόδοσης επαναφέρονται
Απαιτείται δυαδική έξοδος, και η native επικύρωση PDF/A-4 πρέπει να πετύχει πριν την παράδοση. Για όρια απόδοσης, χρώματος, codec, alias πηγής και συμμόρφωσης, δείτε τη σελίδα μετατροπή φορτωμένων σε raster PDF/A-4
Προϋπολογισμοί πόρων αρχειοθέτησης
Το προαιρετικό αντικείμενο options δέχεται θετικούς ακριβείς ακέραιους που σφίγγουν τα παρακάτω όρια σε ισχύ· άγνωστα κλειδιά και τιμές πάνω από όριο απορρίπτουν το αίτημα αντί να αυξάνουν τον προϋπολογισμό της λειτουργίας
| Επιλογή | Προεπιλογή και μέγιστο σε ισχύ |
|---|---|
| maxPages | Ελάχιστο των 1,000 και budget.pageCount |
| maxInputObjects | Ελάχιστο των 200,000 και budget.objectCount |
| maxPixelsPerPage | Ελάχιστο των 40,000,000, budget.pixels και memoryBytes / 32 |
| maxTotalPixels | Ελάχιστο των 500,000,000, budget.pixels και memoryBytes / 32 |
| maxRasterBytes | Ελάχιστο των 256 MiB και memoryBytes / 8 |
| maxOutputBytes | Ελάχιστο των 256 MiB, budget.outputBytes και memoryBytes / 8 |
| maxDecodedStreamBytes | Ελάχιστο των 64 MiB και memoryBytes / 8 |
| maxTotalDecodedBytes | Ελάχιστο των 256 MiB και memoryBytes / 4 |
Το αρχείο ICC περικόπτεται στο μικρότερο των 4 MiB και memoryBytes / 16 πριν την εκχώρηση· αυτά τα συντηρητικά περιθώρια καλύπτουν ταυτόχρονο staging, buffers εξόδου, δεδομένα εικόνας και εργασία decoder, και δεν αποτελούν αυστηρό όριο RSS διεργασίας
Αυξήστε τους προϋπολογισμούς εργασίας κορυφαίου επιπέδου όταν μια μεγαλύτερη αρχειοθετική workload είναι σκόπιμη· οι εμφωλευμένες επιλογές μόνο σφίγγουν τα όρια σε ισχύ, και τα native μέγιστα εξακολουθούν να ισχύουν
Τα σημεία ελέγχου αρχειοθέτησης ρωτάνε κατά τη μετατροπή την ακύρωση callback, το δανεικό cancellation token της πηγής, τον χρόνο που πέρασε και τα πλήθη αντικειμένων. Οι αποτυχίες προϋπολογισμού και ακύρωσης διατηρούν τους δομημένους status codes τους σε όλο τον native converter
Εργασίες αρχείων
{
"operations": [
{"type": "capabilities"},
{"schemaVersion": 1, "type": "text.extract", "input": "input.pdf",
"pages": [0, 1], "output": "text.txt"}
]
}
Το THPDFJobProcessor.Execute δέχεται πίνακα operations, έως 1,024 λειτουργίες και 4 MiB JSON· οι υπάρχουσες εργασίες merge, split, optimise, encrypt και validate παραμένουν διαθέσιμες
Κάθε λειτουργία εγγράφου δίνει διαδρομή εισόδου και προαιρετικό κωδικό· οι λειτουργίες render, text.replace, forms.fill, forms.flatten, ocr.layer, redact, sign και archive.pdfa4.raster απαιτούν διαδρομή εξόδου
Τα artifacts γράφονται σε προσωρινό αρχείο δίπλα στον προορισμό, γίνονται flush και επικυρώνονται, και μετά δημοσιεύονται ατομικά· η αποτυχία διατηρεί υπάρχοντα προορισμό, και είσοδος/έξοδος μπορούν να μοιράζονται διαδρομή
Σύμβαση C callback
Κάντε μηδενική αρχικοποίηση του hpdf_operation_v1, ορίστε το struct_size στο native μέγεθός του, το abi_version σε HPDF_ABI_VERSION_1, και τα flags στο μηδέν· συγκρίνετε το μέγεθός του με το hpdf_abi_operation_v1_size
Η εγγραφή λειτουργίας μεταφέρει JSON bytes με ακριβές μήκος, προαιρετική είσοδο random-access, προαιρετική διαδοχική binary έξοδο, και υποχρεωτική διαδοχική έξοδο JSON αποτελέσματος
Τα input callbacks, τα δεδομένα χρήστη και τα PDF bytes του παρασκηνίου πρέπει να παραμείνουν έγκυρα μέχρι το handle να αντικατασταθεί ή να καταστραφεί, επειδή το lazy parsing κρατά τον προσαρμογέα
Τα output/result callbacks υπάρχουν μόνο κατά την κλήση· σειριοποιήστε τις κλήσεις ανά handle και αποφύγετε επανείσοδο callback
Τα callbacks χρησιμοποιούν cdecl, οι μερικές μεταφορές επαναλαμβάνονται, και οι επιτυχείς εγγραφές πρέπει να προχωρούν ουσιαστικά· οι εξαιρέσεις μετατρέπονται σε σταθερούς status codes
Οι μεταβολές γίνονται commit μόνο όταν πετύχει και η παράδοση artifact και η παράδοση JSON αποτελέσματος· αποτυχία ή ακύρωση callback κάνει rollback τις αλλαγές, και οι καλούντες απορρίπτουν τυχόν bytes ήδη παραδοθέντα
Η είσοδος αντικατάστασης φορτώνεται πριν τη συναλλαγή μεταβολής και παραμένει ξεχωριστή αλλαγή κατάστασης
Προϋπολογισμοί
Το προαιρετικό αντικείμενο budget δέχεται θετικούς ακριβείς ακέραιους που δεν ξεπερνούν το 9,007,199,254,740,991
| Κλειδί | Προεπιλογή |
|---|---|
| memoryBytes | 268,435,456 |
| outputBytes | 134,217,728 |
| resultBytes | 16,777,216 |
| timeMilliseconds | 60,000 |
| objectCount | 1,000,000 |
| pageCount | 1,024 |
| pixels | 100,000,000 |
Οι γενικοί προϋπολογισμοί output/result περικόπτονται ο καθένας στο μισό του προϋπολογισμού μνήμης· η αρχειοθετική μετατροπή εφαρμόζει τα αυστηρότερα παραπάνω όρια. Αυτά οριοθετούν τους ρυθμισμένους πόρους λειτουργίας και όχι τη συνολική μνήμη διεργασίας
Οι έλεγχοι ακύρωσης και χρόνου είναι συνεργατικοί στα σημεία ελέγχου λειτουργίας, σελίδας, ανάγνωσης εισόδου και εγγραφής εξόδου· μια μακροχρόνια native ρουτίνα μπορεί να συνεχίσει μέχρι το επόμενο σημείο ελέγχου της
Οι αναφορές μεταφέρουν schemaVersion, status και statusCode· σφάλματα προϋπολογισμού χρησιμοποιούν status 8, ακύρωση 4, αποτυχία I/O 5, αποτυχία parse 6, μη έγκυρα ορίσματα 1 και αποτυχία εκτέλεσης 7