Λειτουργίες εγγράφων 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Φορτωμένο έγγραφοΠλήθος σελίδων, αντικειμένων, φορμών και πεδίων υπογραφής
renderpage, dpi (18–1,200), format (png)PNG artifact και διαστάσεις
export.structuredpages, format, optionsArtifact σημασιολογικού HTML/XHTML/XML/JSON και τηλεμετρία εξαγωγής
tables.exportpages, format, optionsArtifact τυποποιημένου CSV/JSON/XLSX και τηλεμετρία πίνακα/κελιού/επικεφαλίδας
text.extractpages, προαιρετική διάταξηΚείμενο Unicode σελίδας και προαιρετικό artifact κειμένου UTF-8
text.replacepages, needle, replacement, matchCaseΠλήθη ταιριασμάτων/αντικαταστάσεων/παραλείψεων ανά σελίδα και προαιρετικό PDF artifact
forms.readΦορτωμένο έγγραφοΟνόματα, αποκωδικοποιημένες τιμές Unicode και native τύποι πεδίων
forms.fillπίνακας fields με συμβολοσειρές name/valueΑτομικές ενημερώσεις· άγνωστα ή διπλά ονόματα απορρίπτουν τη λειτουργία
forms.flattenΦορτωμένο έγγραφοΠλήθος ισοπεδωμένων και εναπομείναντα πεδία
ocr.layerpages, engine (builtin-ascii), dpi, minimumConfidence, skipPagesWithText, replaceExistingΑναζητήσιμο PDF και πλήθη αποδεκτών/απορριφθέντων λέξεων
redactburnIn: true, ορθογώνια με page/x1/y1/x2/y2Πλήθος εφαρμοσμένων redaction και PDF artifact
signpfxFile, pfxPassword, page, fieldName, προαιρετικό ορθογώνιο και contentsBytesPDF artifact υπογεγραμμένο με PFX
archive.pdfa4.rasteracceptInformationLoss: 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

ΚλειδίΠροεπιλογή
memoryBytes268,435,456
outputBytes134,217,728
resultBytes16,777,216
timeMilliseconds60,000
objectCount1,000,000
pageCount1,024
pixels100,000,000

Οι γενικοί προϋπολογισμοί output/result περικόπτονται ο καθένας στο μισό του προϋπολογισμού μνήμης· η αρχειοθετική μετατροπή εφαρμόζει τα αυστηρότερα παραπάνω όρια. Αυτά οριοθετούν τους ρυθμισμένους πόρους λειτουργίας και όχι τη συνολική μνήμη διεργασίας

Οι έλεγχοι ακύρωσης και χρόνου είναι συνεργατικοί στα σημεία ελέγχου λειτουργίας, σελίδας, ανάγνωσης εισόδου και εγγραφής εξόδου· μια μακροχρόνια native ρουτίνα μπορεί να συνεχίσει μέχρι το επόμενο σημείο ελέγχου της

Οι αναφορές μεταφέρουν schemaVersion, status και statusCode· σφάλματα προϋπολογισμού χρησιμοποιούν status 8, ακύρωση 4, αποτυχία I/O 5, αποτυχία parse 6, μη έγκυρα ορίσματα 1 και αποτυχία εκτέλεσης 7