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

TipoInputRisultato
infoDocumento caricatoConteggi di pagine, oggetti, form e campi firma
renderpage, dpi (18–1.200), format (png)Artefatto PNG e dimensioni
export.structuredpages, format, optionsArtefatto HTML/XHTML/XML/JSON semantico e telemetria di esportazione
tables.exportpages, format, optionsArtefatto CSV/JSON/XLSX tipizzato e telemetria di tabelle/celle/header
text.extractpages, layout opzionaleTesto Unicode di pagina e artefatto di testo UTF-8 opzionale
text.replacepages, needle, replacement, matchCaseConteggi per pagina di match/sostituzioni/scartati e artefatto PDF opzionale
forms.readDocumento caricatoNomi, valori Unicode decodificati e tipi nativi dei campi
forms.fillarray fields con stringhe name/valueAggiornamenti atomici; nomi sconosciuti o duplicati rifiutano l'operazione
forms.flattenDocumento caricatoConteggio dei campi appiattiti e campi rimanenti
ocr.layerpages, engine (builtin-ascii), dpi, minimumConfidence, skipPagesWithText, replaceExistingPDF con testo ricercabile e conteggi di parole accettate/scartate
redactburnIn: true, rettangoli con page/x1/y1/x2/y2Numero di redaction applicate e artefatto PDF
signpfxFile, pfxPassword, page, fieldName, rettangolo e contentsBytes opzionaliArtefatto PDF firmato PFX
archive.pdfa4.rasteracceptInformationLoss: true, iccProfileFile, dpi e options opzionaliArtefatto 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

OpzioneDefault effettivo e massimo
maxPagesMinimo tra 1.000 e budget.pageCount
maxInputObjectsMinimo tra 200.000 e budget.objectCount
maxPixelsPerPageMinimo tra 40.000.000, budget.pixels e memoryBytes / 32
maxTotalPixelsMinimo tra 500.000.000, budget.pixels e memoryBytes / 32
maxRasterBytesMinimo tra 256 MiB e memoryBytes / 8
maxOutputBytesMinimo tra 256 MiB, budget.outputBytes e memoryBytes / 8
maxDecodedStreamBytesMinimo tra 64 MiB e memoryBytes / 8
maxTotalDecodedBytesMinimo 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

ChiaveDefault
memoryBytes268.435.456
outputBytes134.217.728
resultBytes16.777.216
timeMilliseconds60.000
objectCount1.000.000
pageCount1.024
pixels100.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