Opérations document JSON et ABI C
export.structured exporte les pages sélectionnées en HTML, XHTML, XML ou JSON sémantique ; tables.export exporte les tableaux typés en CSV, JSON ou XLSX, en conservant la continuité entre pages, les cellules fusionnées et l'inférence native des types de valeurs
Les deux opérations exigent une destination de sortie binaire, préservent le document et les champs de signature existants, et exposent des options d'export natives bornées
Exports structurés et de tableaux typés
{"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":"."}}
L'export structuré accepte html, xhtml, xml et json (défaut) ; l'export de tableaux accepte csv (défaut), json et xlsx
Les options booléennes de l'export structuré sont includeCoordinates, includeStyles, includeImages, includeTables, includeAccessibilitySemantics, preferTaggedStructure, fallbackToGeometricSemantics, includeNavigation, includeAnnotations et includeFormControls ; toutes valent true par défaut
imageMode accepte omit, metadata et embedded-png (défaut) ; voir Structured Loaded-Page Export pour le modèle sémantique et le comportement sur les champs sensibles
Les options de ressources de l'export structuré sont maxPageCount, maxGlyphsPerPage, maxImagesPerPage, maxStructureNodes, maxOutlineItems, maxInteractionsPerPage, maxFormOptionsPerField, maxOutputBytes, maxImageBytes et maxTotalImageBytes
Les options booléennes des tableaux sont detectMergedCells, detectRepeatedHeaders, mergeAcrossPages et inferValueTypes ; toutes valent true par défaut
dateOrder accepte ymd (défaut), mdy et dmy ; les séparateurs doivent être des caractères imprimables isolés, un thousandsSeparator vide le désactivant
minimumTableConfidence accepte de 0 à 1 et vaut 0,55 par défaut ; un columnTolerance positif vaut 12 unités de page par défaut
Les options de ressources des tableaux sont maxPageCount, maxGlyphsPerPage, maxTableCount, maxRowCount, maxCellCount, maxTextCharacters et maxOutputBytes ; voir Extraction de tableaux typés pour le modèle de cellule
Les noms d'options inconnus, les types invalides, les formats non pris en charge et les limites non positives sont rejetés ; les limites natives demandées sont plafonnées par des budgets conservateurs de mémoire et d'objets
La préparation de l'export est plafonnée au plus petit de budget.outputBytes et du quart de budget.memoryBytes ; effectiveOutputLimit rapporte ce plafond, et un options.maxOutputBytes plus strict peut s'appliquer
Les échecs de ressources natives rapportent budget-exceeded, la métrique nativeExportResources et le diagnostic natif ; observed=1 et limit=0 désignent une ressource refusée plutôt qu'une consommation d'octets mesurée
Les deux opérations rapportent documentUpdated: false, préservent les réglages d'auto-launch et de décodage de la source, préparent la sortie avant publication et conservent les destinations de fichiers existantes après l'échec d'un job fichier
Les contrôles d'échéance et d'annulation des callbacks ABI sont coopératifs aux points de contrôle d'opération et de publication ; les tokens d'annulation natifs s'appliquent aussi dans les étapes d'extraction prises en charge, et le travail natif n'est jamais interrompu de force
THPDFJobProcessor.ExecuteLoadedOperation et hpdf_document_execute_json_v1 partagent le même moteur d'opérations document versionné par schéma
Découvrez les noms d'opérations, formats, profil de signature, comportement des callbacks et budgets par défaut courants via THPDFJobProcessor.Capabilities ou hpdf_capabilities_json_to_io
Opérations
Le JSON d'opération utilise UTF-8 et schemaVersion: 1 ; les indices de pages partent de zéro et les tableaux de pages sélectionnées ne peuvent pas contenir de doublons
| Type | Entrée | Résultat |
|---|---|---|
| info | Document chargé | Nombres de pages, d'objets, de formulaires et de champs de signature |
| render | page, dpi (18–1 200), format (png) | Artefact PNG et dimensions |
| export.structured | pages, format, options | Artefact HTML/XHTML/XML/JSON sémantique et télémétrie d'export |
| tables.export | pages, format, options | Artefact CSV/JSON/XLSX typé et télémétrie tableaux/cellules/en-têtes |
| text.extract | pages, layout optionnel | Texte de page Unicode et artefact texte UTF-8 optionnel |
| text.replace | pages, needle, replacement, matchCase | Comptages par page des correspondances trouvées, remplacées et ignorées, et artefact PDF optionnel |
| forms.read | Document chargé | Noms, valeurs Unicode décodées et types natifs de champs |
| forms.fill | tableau de champs avec chaînes name/value | Mises à jour atomiques ; des noms inconnus ou dupliqués rejettent l'opération |
| forms.flatten | Document chargé | Nombre de champs aplatis et champs restants |
| ocr.layer | pages, engine (builtin-ascii), dpi, minimumConfidence, skipPagesWithText, replaceExisting | PDF recherchable et comptages de mots acceptés/écartés |
| redact | burnIn: true, rectangles avec page/x1/y1/x2/y2 | Nombre de caviardages appliqués et artefact PDF |
| sign | pfxFile, pfxPassword, page, fieldName, rectangle et contentsBytes optionnels | Artefact PDF signé PFX |
| archive.pdfa4.raster | acceptInformationLoss: true, iccProfileFile, dpi et options optionnels | Artefact raster PDF/A-4 validé, comptages de suppressions et profil de perte explicite ; préserve la source chargée |
Le remplacement de texte renvoie un statut partiel lorsque l'API native de remplacement ne peut pas encoder une correspondance ; inspectez ses comptages par page
L'OCR expose actuellement le moteur ASCII intégré ; les API Delphi natives acceptent des adaptateurs OCR externes
Les mutations rejettent les documents comportant des champs de signature existants, y compris les espaces réservés non signés ; utilisez les API incrémentales natives pour préserver les signatures dans ces documents
La signature produit un artefact signé et restaure le descripteur d'origine en rapportant documentUpdated: false ; les champs de formulaire existants restent disponibles, les champs de signature temporaires sont retirés, et le descripteur peut être interrogé ou réutilisé pour une autre opération après signature
Conversion d'archivage raster PDF/A-4
{
"schemaVersion": 1,
"type": "archive.pdfa4.raster",
"acceptInformationLoss": true,
"iccProfileFile": "profiles/sRGB.icm",
"dpi": 150,
"input": "source.pdf",
"output": "archive.pdf"
}
Placez cet objet dans le tableau operations d'un job fichier, ou fournissez-le directement via hpdf_document_execute_json_v1 avec un descripteur chargé et des callbacks de sortie binaires ; l'ABI C ignore les chemins d'entrée/sortie du job fichier et utilise ses adaptateurs
acceptInformationLoss doit être le booléen JSON true, et iccProfileFile doit désigner un chemin non vide, sans NUL, vers un profil ICC sRGB matrix/TRC pris en charge sur l'hôte d'exécution ; les chemins de profil relatifs se résolvent par rapport au répertoire de travail du processus
dpi vaut 150 par défaut et accepte des entiers de 36 à 1 200 ; la conversion couvre chaque page source et rejette tout membre pages
L'objet résultat archive rapporte nativeValidationSucceeded, sourcePages, pagesRendered, rasterPixels, outputBytes, removedAnnotations, removedFormFields et removedEmbeddedFiles
archive.lossy vaut true, et chaque indicateur de archive.lossProfile vaut false : searchableText, vectorContent, interactiveContent, originalSignatures, annotationAppearances et structureIdentity
Le contenu des pages devient des pixels RGB ; les annotations et apparences de widgets sont omises, et les signatures d'origine ne sont pas reportées dans la sortie. La source chargée reste disponible avec documentUpdated: false, y compris après une publication échouée ; ses réglages antérieurs de lancement, décodage, seuils de flux, annulation et rendu sont restaurés
Une sortie binaire est requise, et la validation PDF/A-4 native doit réussir avant la livraison. Pour les limites de rendu, couleur, codec, alias de source et conformité, voir conversion raster PDF/A-4 du document chargé
Budgets de ressources d'archivage
L'objet options optionnel accepte des entiers exacts positifs qui resserrent les plafonds effectifs ci-dessous ; les clés inconnues et les valeurs dépassant un plafond rejettent la requête au lieu d'augmenter le budget de l'opération
| Option | Défaut et maximum effectifs |
|---|---|
| maxPages | Minimum entre 1 000 et budget.pageCount |
| maxInputObjects | Minimum entre 200 000 et budget.objectCount |
| maxPixelsPerPage | Minimum entre 40 000 000, budget.pixels et memoryBytes / 32 |
| maxTotalPixels | Minimum entre 500 000 000, budget.pixels et memoryBytes / 32 |
| maxRasterBytes | Minimum entre 256 Mio et memoryBytes / 8 |
| maxOutputBytes | Minimum entre 256 Mio, budget.outputBytes et memoryBytes / 8 |
| maxDecodedStreamBytes | Minimum entre 64 Mio et memoryBytes / 8 |
| maxTotalDecodedBytes | Minimum entre 256 Mio et memoryBytes / 4 |
Le fichier ICC est plafonné au plus petit de 4 Mio et memoryBytes / 16 avant allocation ; ces marges conservatrices couvrent la préparation simultanée, les tampons de sortie, les données d'images et le travail des décodeurs, et ne constituent pas une limite stricte du RSS du processus
Augmentez les budgets de job de premier niveau lorsqu'une charge d'archivage plus importante est voulue ; les options imbriquées ne font que resserrer les plafonds effectifs, et les maximums natifs s'appliquent toujours
Les points de contrôle d'archivage scrutent l'annulation des callbacks, le token d'annulation de la source empruntée, le temps écoulé et les comptages d'objets pendant la conversion. Les échecs de budget et d'annulation conservent leurs codes de statut structurés à travers le convertisseur natif
Jobs fichier
{
"operations": [
{"type": "capabilities"},
{"schemaVersion": 1, "type": "text.extract", "input": "input.pdf",
"pages": [0, 1], "output": "text.txt"}
]
}
THPDFJobProcessor.Execute accepte un tableau d'opérations, jusqu'à 1 024 opérations et 4 Mio de JSON ; les jobs existants de fusion, découpage, optimisation, chiffrement et validation restent disponibles
Chaque opération document fournit un chemin d'entrée et un mot de passe optionnel ; render, text.replace, forms.fill, forms.flatten, ocr.layer, redact, sign et archive.pdfa4.raster exigent un chemin de sortie
Les artefacts sont écrits dans un fichier temporaire à côté de la destination, vidés et validés, puis publiés atomiquement ; un échec préserve une destination existante, et entrée/sortie peuvent partager un chemin
Contrat de callbacks C
Initialisez hpdf_operation_v1 à zéro, réglez struct_size à sa taille native, abi_version à HPDF_ABI_VERSION_1 et flags à zéro ; comparez sa taille à hpdf_abi_operation_v1_size
L'enregistrement d'opération transporte les octets JSON et une longueur exacte, une entrée optionnelle à accès aléatoire, une sortie binaire séquentielle optionnelle et une sortie obligatoire séquentielle du résultat JSON
Les callbacks d'entrée, les données utilisateur et les octets PDF sous-jacents doivent rester valides jusqu'au remplacement ou à la destruction du descripteur, car l'analyse paresseuse conserve l'adaptateur
Les callbacks de sortie/résultat n'existent que pendant l'appel ; sérialisez les appels pour chaque descripteur et évitez la rentrée de callback
Les callbacks utilisent cdecl, les transferts partiels sont réessayés, et les écritures réussies doivent progresser positivement ; les exceptions sont converties en codes de statut fixes
Les mutations ne sont validées qu'après le succès conjoint de la livraison de l'artefact et du résultat JSON ; un échec ou une annulation de callback annule les changements, et les appelants doivent ignorer tout octet déjà livré
L'entrée de remplacement est chargée avant la transaction de mutation et reste un changement d'état distinct
Budgets
L'objet budget optionnel accepte des entiers exacts positifs au plus égaux à 9 007 199 254 740 991
| Clé | Défaut |
|---|---|
| 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 |
Les budgets généraux de sortie/résultat sont chacun plafonnés à la moitié du budget mémoire ; la conversion d'archivage applique les plafonds plus stricts ci-dessus. Ces bornes limitent les ressources configurées de l'opération, pas la mémoire totale du processus
Les contrôles d'annulation et de temps écoulé sont coopératifs aux points de contrôle d'opération, de page, de lecture d'entrée et d'écriture de sortie ; une routine native longue peut continuer jusqu'à son prochain point de contrôle
Les rapports transportent schemaVersion, status et statusCode ; les erreurs de budget utilisent le statut 8, l'annulation 4, l'échec d'E/S 5, l'échec d'analyse 6, les arguments invalides 1 et l'échec d'exécution 7