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

TypeEntréeRésultat
infoDocument chargéNombres de pages, d'objets, de formulaires et de champs de signature
renderpage, dpi (18–1 200), format (png)Artefact PNG et dimensions
export.structuredpages, format, optionsArtefact HTML/XHTML/XML/JSON sémantique et télémétrie d'export
tables.exportpages, format, optionsArtefact CSV/JSON/XLSX typé et télémétrie tableaux/cellules/en-têtes
text.extractpages, layout optionnelTexte de page Unicode et artefact texte UTF-8 optionnel
text.replacepages, needle, replacement, matchCaseComptages par page des correspondances trouvées, remplacées et ignorées, et artefact PDF optionnel
forms.readDocument chargéNoms, valeurs Unicode décodées et types natifs de champs
forms.filltableau de champs avec chaînes name/valueMises à jour atomiques ; des noms inconnus ou dupliqués rejettent l'opération
forms.flattenDocument chargéNombre de champs aplatis et champs restants
ocr.layerpages, engine (builtin-ascii), dpi, minimumConfidence, skipPagesWithText, replaceExistingPDF recherchable et comptages de mots acceptés/écartés
redactburnIn: true, rectangles avec page/x1/y1/x2/y2Nombre de caviardages appliqués et artefact PDF
signpfxFile, pfxPassword, page, fieldName, rectangle et contentsBytes optionnelsArtefact PDF signé PFX
archive.pdfa4.rasteracceptInformationLoss: true, iccProfileFile, dpi et options optionnelsArtefact 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

OptionDéfaut et maximum effectifs
maxPagesMinimum entre 1 000 et budget.pageCount
maxInputObjectsMinimum entre 200 000 et budget.objectCount
maxPixelsPerPageMinimum entre 40 000 000, budget.pixels et memoryBytes / 32
maxTotalPixelsMinimum entre 500 000 000, budget.pixels et memoryBytes / 32
maxRasterBytesMinimum entre 256 Mio et memoryBytes / 8
maxOutputBytesMinimum entre 256 Mio, budget.outputBytes et memoryBytes / 8
maxDecodedStreamBytesMinimum entre 64 Mio et memoryBytes / 8
maxTotalDecodedBytesMinimum 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
memoryBytes268 435 456
outputBytes134 217 728
resultBytes16 777 216
timeMilliseconds60 000
objectCount1 000 000
pageCount1 024
pixels100 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