Operazioni su Documenti JSON e C ABI
export.structured esporta le pagine selezionate come HTML, XHTML, XML o JSON semantici; tables.export esporta le tabelle tipizzate come CSV, JSON o XLSX, conservando la continuità tra pagine, le celle unite e l'inference nativa dei valori
Entrambe le operazioni richiedono una destinazione di output binaria, preservano il documento e i campi firma esistenti ed espongono opzioni di esportazione native con limiti
Esportazioni strutturate e di tabelle tipizzate
{"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'esportazione strutturata accetta html, xhtml, xml e json (default); l'esportazione di tabelle accetta csv (default), json e xlsx
Le opzioni booleane strutturate sono includeCoordinates, includeStyles, includeImages, includeTables, includeAccessibilitySemantics, preferTaggedStructure, fallbackToGeometricSemantics, includeNavigation, includeAnnotations e includeFormControls; tutte hanno valore predefinito true
imageMode accetta omit, metadata e embedded-png (default); vedere Esportazione strutturata delle pagine caricate per il modello semantico e il comportamento sui campi sensibili
Le opzioni strutturate sulle risorse sono maxPageCount, maxGlyphsPerPage, maxImagesPerPage, maxStructureNodes, maxOutlineItems, maxInteractionsPerPage, maxFormOptionsPerField, maxOutputBytes, maxImageBytes e maxTotalImageBytes
Le opzioni booleane delle tabelle sono detectMergedCells, detectRepeatedHeaders, mergeAcrossPages e inferValueTypes; tutte hanno valore predefinito true
dateOrder accetta ymd (default), mdy e dmy; i separatori devono essere singoli caratteri stampabili, e un thousandsSeparator vuoto lo disabilita
minimumTableConfidence accetta valori da 0 a 1 con default 0.55; un columnTolerance positivo ha default 12 unità di pagina
Le opzioni delle tabelle sulle risorse sono maxPageCount, maxGlyphsPerPage, maxTableCount, maxRowCount, maxCellCount, maxTextCharacters e maxOutputBytes; vedere Estrazione Tipizzata delle Tabelle per il modello di cella
Nomi di opzione sconosciuti, tipi non validi, formati non supportati e limiti non positivi vengono rifiutati; i limiti nativi richiesti vengono ridotti ai conservativi budget di memoria e di oggetti
Lo staging dell'esportazione è limitato al minore tra budget.outputBytes e un quarto di budget.memoryBytes; effectiveOutputLimit riporta questo tetto, e un options.maxOutputBytes più restrittivo può applicarsi
I fallimenti delle risorse native riportano budget-exceeded, la metrica nativeExportResources e la diagnostica nativa; observed=1 e limit=0 indicano una condizione di risorsa negata, non un utilizzo di byte misurato
Entrambe le operazioni riportano documentUpdated: false, preservano le impostazioni di auto-launch e di decodifica della sorgente, fanno lo staging dell'output prima della pubblicazione e conservano le destinazioni di file esistenti dopo un job su file fallito
I controlli di deadline e di cancellazione dei callback ABI sono cooperativi ai checkpoint di operazione e di pubblicazione; i token di cancellazione nativi valgono anche dentro le fasi di estrazione che li supportano, e il lavoro nativo non viene interrotto forzatamente
THPDFJobProcessor.ExecuteLoadedOperation e hpdf_document_execute_json_v1 condividono lo stesso motore di operazioni su documento con versione di schema
Scopri i nomi delle operazioni correnti, i formati, il profilo di firma, il comportamento dei callback e i budget di default con THPDFJobProcessor.Capabilities o hpdf_capabilities_json_to_io
Operazioni
Il JSON delle operazioni usa UTF-8 e schemaVersion: 1; gli indici di pagina partono da zero e gli array di pagine selezionate non possono contenere duplicati
| Tipo | Input | Risultato |
|---|---|---|
| info | Documento caricato | Conteggi di pagine, oggetti, form e campi firma |
| render | page, dpi (18–1.200), format (png) | Artefatto PNG e dimensioni |
| export.structured | pages, format, options | Artefatto HTML/XHTML/XML/JSON semantico e telemetria di esportazione |
| tables.export | pages, format, options | Artefatto CSV/JSON/XLSX tipizzato e telemetria di tabelle/celle/header |
| text.extract | pages, layout opzionale | Testo Unicode di pagina e artefatto di testo UTF-8 opzionale |
| text.replace | pages, needle, replacement, matchCase | Conteggi per pagina di match/sostituzioni/scartati e artefatto PDF opzionale |
| forms.read | Documento caricato | Nomi, valori Unicode decodificati e tipi nativi dei campi |
| forms.fill | array fields con stringhe name/value | Aggiornamenti atomici; nomi sconosciuti o duplicati rifiutano l'operazione |
| forms.flatten | Documento caricato | Conteggio dei campi appiattiti e campi rimanenti |
| ocr.layer | pages, engine (builtin-ascii), dpi, minimumConfidence, skipPagesWithText, replaceExisting | PDF con testo ricercabile e conteggi di parole accettate/scartate |
| redact | burnIn: true, rettangoli con page/x1/y1/x2/y2 | Numero di redaction applicate e artefatto PDF |
| sign | pfxFile, pfxPassword, page, fieldName, rettangolo e contentsBytes opzionali | Artefatto PDF firmato PFX |
| archive.pdfa4.raster | acceptInformationLoss: true, iccProfileFile, dpi e options opzionali | Artefatto raster PDF/A-4 validato, conteggi di rimozioni e un profilo di perdita esplicito; preserva la sorgente caricata |
La sostituzione del testo restituisce uno stato parziale quando l'API nativa di sostituzione non riesce a codificare un match; esamina i suoi conteggi per pagina
L'OCR espone attualmente il motore ASCII integrato; le API native Delphi accettano adattatori OCR esterni
Firma incrementale PFX accetta una sorgente trattenuta non modificata, compresi PDF cifrati supportati con una password esplicita dell'operazione, valida ogni CMS vecchio e nuovo, preserva byte originali e cifratura, supporta un campo vuoto esistente, controlla i permessi di cifratura e rifiuta alias tra sorgente e output
Le mutazioni rifiutano i documenti con campi firma esistenti, placeholder non firmati inclusi; usa le API native incrementali per preservare le firme in quei documenti
La firma produce un artefatto firmato e ripristina l'handle originale, riportando documentUpdated: false; i campi form esistenti restano disponibili, i campi firma temporanei vengono rimossi e l'handle può essere interrogato o usato per un'altra operazione dopo la firma
Conversione in raster PDF/A-4 per l'archiviazione
{
"schemaVersion": 1,
"type": "archive.pdfa4.raster",
"acceptInformationLoss": true,
"iccProfileFile": "profiles/sRGB.icm",
"dpi": 150,
"input": "source.pdf",
"output": "archive.pdf"
}
Inserisci questo oggetto nell'array operations di un file job, oppure passalo direttamente a hpdf_document_execute_json_v1 con un handle caricato e callback di output binari; il C ABI ignora i percorsi input/output del file job e usa i suoi adattatori
acceptInformationLoss deve essere il booleano JSON true, e iccProfileFile deve nominare un percorso non vuoto e senza NUL verso un profilo ICC sRGB matrix/TRC supportato sull'host di esecuzione; i percorsi di profilo relativi si risolvono rispetto alla working directory del processo
dpi ha default 150 e accetta interi da 36 a 1.200; la conversione copre ogni pagina della sorgente e rifiuta qualsiasi membro pages
L'oggetto risultato archive riporta nativeValidationSucceeded, sourcePages, pagesRendered, rasterPixels, outputBytes, removedAnnotations, removedFormFields e removedEmbeddedFiles
archive.lossy è true, e ogni flag in archive.lossProfile è false: searchableText, vectorContent, interactiveContent, originalSignatures, annotationAppearances e structureIdentity
Il contenuto di pagina diventa pixel RGB; annotazioni e appearance dei widget vengono omesse e le firme originali non vengono trasferite nell'output. La sorgente caricata resta disponibile con documentUpdated: false, anche dopo una pubblicazione fallita; le precedenti impostazioni di launch, decodifica, soglie di stream, cancellazione e rendering vengono ripristinate
Serve un output binario, e la validazione nativa PDF/A-4 deve riuscire prima della consegna. Per i confini di rendering, colore, codec, alias della sorgente e conformità, vedere la conversione in raster PDF/A-4 del documento caricato
Budget di risorse per l'archiviazione
L'oggetto options opzionale accetta interi esatti positivi che restringono i seguenti tetti effettivi; chiavi sconosciute e valori che superano un tetto rifiutano la richiesta invece di aumentare il budget dell'operazione
| Opzione | Default effettivo e massimo |
|---|---|
| maxPages | Minimo tra 1.000 e budget.pageCount |
| maxInputObjects | Minimo tra 200.000 e budget.objectCount |
| maxPixelsPerPage | Minimo tra 40.000.000, budget.pixels e memoryBytes / 32 |
| maxTotalPixels | Minimo tra 500.000.000, budget.pixels e memoryBytes / 32 |
| maxRasterBytes | Minimo tra 256 MiB e memoryBytes / 8 |
| maxOutputBytes | Minimo tra 256 MiB, budget.outputBytes e memoryBytes / 8 |
| maxDecodedStreamBytes | Minimo tra 64 MiB e memoryBytes / 8 |
| maxTotalDecodedBytes | Minimo tra 256 MiB e memoryBytes / 4 |
Il file ICC è limitato al minore tra 4 MiB e memoryBytes / 16 prima dell'allocazione; questi margini conservativi coprono staging simultaneo, buffer di output, dati immagine e lavoro dei decoder, e non stabiliscono un limite rigoroso sul RSS del processo
Aumenta i budget di job di primo livello quando un carico di archiviazione più grande è intenzionale; le opzioni annidate restringono solo i tetti effettivi, e i massimi nativi restano validi
I checkpoint di archiviazione interrogano la cancellazione dei callback, il token di cancellazione della sorgente presa in prestito, il tempo trascorso e i conteggi di oggetti durante la conversione. I fallimenti di budget e cancellazione conservano i propri codici di stato strutturati attraverso il convertitore nativo
File job
{
"operations": [
{"type": "capabilities"},
{"schemaVersion": 1, "type": "text.extract", "input": "input.pdf",
"pages": [0, 1], "output": "text.txt"}
]
}
THPDFJobProcessor.Execute accetta un array di operazioni, fino a 1.024 operazioni e 4 MiB di JSON; i job esistenti di merge, split, ottimizzazione, cifratura e validazione restano disponibili
Ogni operazione su documento fornisce un percorso di input e una password opzionale; render, text.replace, forms.fill, forms.flatten, ocr.layer, redact, sign e archive.pdfa4.raster richiedono un percorso di output
Gli artefatti vengono scritti in un file temporaneo accanto alla destinazione, flushed e validati, poi pubblicati in modo atomico; un fallimento preserva la destinazione esistente, e input e output possono condividere un percorso
Contratto dei callback C
Azzera hpdf_operation_v1, imposta struct_size alla sua dimensione nativa, abi_version a HPDF_ABI_VERSION_1 e i flag a zero; confronta la sua dimensione con hpdf_abi_operation_v1_size
Il record di operazione trasporta i byte JSON e una lunghezza esatta, un input random-access opzionale, un output binario sequenziale opzionale e un output sequenziale obbligatorio del risultato JSON
I callback di input, i dati utente e i byte del PDF sottostante devono restare validi finché l'handle non viene sostituito o distrutto, perché il parsing lazy conserva l'adattatore
I callback di output/risultato esistono solo durante la chiamata; serializza le chiamate per ogni handle ed evita la reentrancy dei callback
I callback usano cdecl, i trasferimenti parziali vengono ritentati e le scritture riuscite devono fare progresso positivo; le eccezioni vengono convertite in codici di stato fissi
Le mutazioni commettono solo dopo che consegna dell'artefatto e del risultato JSON riescono entrambe; un fallimento o una cancellazione dei callback fa rollback delle modifiche, e il chiamante scarta i byte già consegnati
L'input della sostituzione viene caricato prima della transazione di mutazione e resta una modifica di stato separata
Budget
L'oggetto budget opzionale accetta interi esatti positivi non maggiori di 9.007.199.254.740.991
| Chiave | Default |
|---|---|
| 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 |
I budget generali di output/risultato sono ciascuno limitato alla metà del budget di memoria; la conversione d'archivio applica i tetti più severi visti sopra. Questi vincoli limitano le risorse configurate dell'operazione, non la memoria totale del processo
I controlli di cancellazione e di tempo trascorso sono cooperativi ai checkpoint di operazione, pagina, lettura dell'input e scrittura dell'output; una routine nativa lunga può continuare fino al suo prossimo checkpoint
I report trasportano schemaVersion, status e statusCode; gli errori di budget usano status 8, cancellazione 4, fallimento I/O 5, fallimento di parsing 6, argomenti non validi 1 ed errore di esecuzione 7