Operace s dokumenty přes JSON a C ABI
export.structured exportuje vybrané stránky jako sémantické HTML, XHTML, XML nebo JSON; tables.export exportuje typované tabulky jako CSV, JSON nebo XLSX se zachováním kontinuity napříč stránkami, sloučených buněk a nativního odvozování hodnot
Obě operace vyžadují binární výstupní cíl, zachovávají dokument a existující podpisová pole a zpřístupňují ohraničené volby nativního exportu
Strukturovaný export a export typovaných tabulek
{"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":"."}}
Strukturovaný export přijímá html, xhtml, xml a json (výchozí); export tabulek přijímá csv (výchozí), json a xlsx
Logické volby strukturovaného exportu jsou includeCoordinates, includeStyles, includeImages, includeTables, includeAccessibilitySemantics, preferTaggedStructure, fallbackToGeometricSemantics, includeNavigation, includeAnnotations a includeFormControls; všechny mají výchozí hodnotu true
imageMode přijímá omit, metadata a embedded-png (výchozí); sémantický model a chování u citlivých polí popisuje Structured Loaded-Page Export
Volby prostředků strukturovaného exportu jsou maxPageCount, maxGlyphsPerPage, maxImagesPerPage, maxStructureNodes, maxOutlineItems, maxInteractionsPerPage, maxFormOptionsPerField, maxOutputBytes, maxImageBytes a maxTotalImageBytes
Logické volby exportu tabulek jsou detectMergedCells, detectRepeatedHeaders, mergeAcrossPages a inferValueTypes; všechny mají výchozí hodnotu true
dateOrder přijímá ymd (výchozí), mdy a dmy; oddělovače musí být jednotlivé tisknutelné znaky a prázdný thousandsSeparator je vypne
minimumTableConfidence přijímá hodnoty 0 až 1 s výchozí 0.55; kladné columnTolerance má výchozích 12 jednotek stránky
Volby prostředků exportu tabulek jsou maxPageCount, maxGlyphsPerPage, maxTableCount, maxRowCount, maxCellCount, maxTextCharacters a maxOutputBytes; model buňky popisuje Typed Table Extraction
Neznámé názvy voleb, neplatné typy, nepodporované formáty a nepozitivní limity se odmítají; požadované nativní limity se ořezávají konzervativními budgety paměti a objektů
Staging exportu se omezuje na menší z hodnot budget.outputBytes a čtvrtiny budget.memoryBytes; tento strop hlásí effectiveOutputLimit a může ho ještě zpřísnit nižší options.maxOutputBytes
Nativní selhání prostředků hlásí budget-exceeded, metriku nativeExportResources a nativní diagnostiku; observed=1 a limit=0 označují zamítnutou podmínku prostředku, nikoli změřené bajty
Obě operace hlásí documentUpdated: false, zachovávají nastavení auto-launch a dekódování zdroje, připraví výstup ve stagingu dřív, než ho publikují, a po selhání souborového jobu ponechají existující souborový cíl
Kontroly deadlinu a zrušení přes ABI callbacky jsou kooperativní na kontrolních bodech operace a publikování; tokeny nativního zrušení platí i uvnitř podporovaných fází extrakce a nativní práce se násilně nepřerušuje
THPDFJobProcessor.ExecuteLoadedOperation a hpdf_document_execute_json_v1 sdílejí stejné engine dokumentových operací se verzovaným schématem
Aktuální názvy operací, formáty, podpisový profil, chování callbacků a výchozí budgety zjistíte přes THPDFJobProcessor.Capabilities nebo hpdf_capabilities_json_to_io
Operace
JSON operace používá UTF-8 a schemaVersion: 1; indexy stránek jsou od nuly a vybraná pole stránek nesmí obsahovat duplicity
| Typ | Vstup | Výsledek |
|---|---|---|
| info | Načtený dokument | Počty stránek, objektů, formulářů a podpisových polí |
| render | page, dpi (18–1,200), format (png) | Artefakt PNG a rozměry |
| export.structured | pages, format, options | Sémantický artefakt HTML/XHTML/XML/JSON a telemetrie exportu |
| tables.export | pages, format, options | Typovaný artefakt CSV/JSON/XLSX a telemetrie tabulek, buněk a záhlaví |
| text.extract | pages, volitelný layout | Text stránky v Unicode a volitelný textový artefakt UTF-8 |
| text.replace | pages, needle, replacement, matchCase | Počty shod, náhrad a přeskočení na stránku a volitelný artefakt PDF |
| forms.read | Načtený dokument | Názvy, dekódované hodnoty Unicode a nativní typy polí |
| forms.fill | pole fields s řetězci name/value | Atomické aktualizace; neznámé nebo duplicitní názvy operaci odmítnou |
| forms.flatten | Načtený dokument | Počet zploštěných polí a zbývající pole |
| ocr.layer | pages, engine (builtin-ascii), dpi, minimumConfidence, skipPagesWithText, replaceExisting | Prohledávatelné PDF a počty přijatých a zahozených slov |
| redact | burnIn: true, obdélníky s page/x1/y1/x2/y2 | Počet provedených začernění a artefakt PDF |
| sign | pfxFile, pfxPassword, page, fieldName, volitelný obdélník a contentsBytes | Artefakt PDF podepsaný přes PFX |
| archive.pdfa4.raster | acceptInformationLoss: true, iccProfileFile, volitelné dpi a options | Validovaný rastrový artefakt PDF/A-4, počty odebraných položek a explicitní profil ztrát; zachovává načtený zdroj |
Náhrada textu vrací částečný stav, když nativní náhradní API nedokáže zakódovat shodu; prohlédněte si její počty po stránkách
Externí OCR úlohy přijímají explicitně nakonfigurované enginy Tesseract CLI/DLL a RapidOCR CLI/DLL vedle vestavěného ASCII defaultu, s typovaným nastavením, timeouty engine, limity pixelů a atomickou publikací
Mutační operace odmítají dokumenty s existujícími podpisovými poli, včetně nepodepsaných zástupných míst; v takových dokumentech použijte pro zachování podpisů inkrementální podpisový profil nebo nativní inkrementální API
Inkrementální PFX podepisování přijímá nemodifikovaný udržovaný zdroj, včetně podporovaných šifrovaných PDF s explicitním operation heslem, validuje každé staré i nové CMS, zachovává původní bajty i šifrování, podporuje existující prázdné pole, kontroluje oprávnění šifrování a odmítá aliasy zdroje/cíle
Podepsání vytvoří podepsaný artefakt a obnoví původní handle s hlášením documentUpdated: false; existující formulářová pole zůstávají dostupná, dočasná podpisová pole se odstraní a handle lze po podepsání dotazovat nebo použít pro další operaci
Archivní konverze do rastrového PDF/A-4
{
"schemaVersion": 1,
"type": "archive.pdfa4.raster",
"acceptInformationLoss": true,
"iccProfileFile": "profiles/sRGB.icm",
"dpi": 150,
"input": "source.pdf",
"output": "archive.pdf"
}
Tento objekt umístěte do pole operations souborového jobu, nebo ho zadejte přímo přes hpdf_document_execute_json_v1 s načteným handlem a binárními výstupními callbacky; C ABI ignoruje vstupní a výstupní cesty souborového jobu a používá své adaptéry
acceptInformationLoss musí být JSON logická hodnota true a iccProfileFile musí pojmenovat neprázdnou cestu bez NUL k podporovanému ICC profilu sRGB matrix/TRC na vykonávajícím hostiteli; relativní cesty profilů se řeší vůči pracovnímu adresáři procesu
dpi má výchozí 150 a přijímá celá čísla 36 až 1,200; konverze pokrývá každou zdrojovou stránku a každého člena pages odmítne
Výsledný objekt archive hlásí nativeValidationSucceeded, sourcePages, pagesRendered, rasterPixels, outputBytes, removedAnnotations, removedFormFields a removedEmbeddedFiles
archive.lossy je true a každý příznak v archive.lossProfile je false: searchableText, vectorContent, interactiveContent, originalSignatures, annotationAppearances a structureIdentity
Obsah stránky se změní na RGB pixely; anotace a podoby widgetů se vynechají a původní podpisy se do výstupu nepřenášejí. Načtený zdroj zůstává dostupný s documentUpdated: false, a to i po selhání publikování; jeho předchozí nastavení spouštění, dekódování, prahů streamů, zrušení a renderu se obnoví
Vyžaduje se binární výstup a nativní validace PDF/A-4 musí před doručením uspět. Hranice renderování, barev, kodeků, aliasů zdrojů a shody popisuje rastrová konverze načteného PDF na PDF/A-4
Archivní budgety prostředků
Volitelný objekt options přijímá kladná přesná celá čísla, která zpřísní následující efektivní stropy; neznámé klíče a hodnoty překračující strop požadavek odmítnou místo navyšování budgetu operace
| Volba | Efektivní výchozí hodnota a maximum |
|---|---|
| maxPages | Minimum z 1,000 a budget.pageCount |
| maxInputObjects | Minimum z 200,000 a budget.objectCount |
| maxPixelsPerPage | Minimum z 40,000,000, budget.pixels a memoryBytes / 32 |
| maxTotalPixels | Minimum z 500,000,000, budget.pixels a memoryBytes / 32 |
| maxRasterBytes | Minimum z 256 MiB a memoryBytes / 8 |
| maxOutputBytes | Minimum z 256 MiB, budget.outputBytes a memoryBytes / 8 |
| maxDecodedStreamBytes | Minimum z 64 MiB a memoryBytes / 8 |
| maxTotalDecodedBytes | Minimum z 256 MiB a memoryBytes / 4 |
ICC soubor se před alokací omezuje na menší z 4 MiB a memoryBytes / 16; tyto konzervativní rezervy počítají se souběžným stagingem, výstupními buffery, obrazovými daty a prací dekodéru a nestanovují tvrdý limit RSS procesu
Pokud je větší archivní workload záměr, zvyšte budgety jobu na nejvyšší úrovni; vnořené volby jen zpřísňují efektivní stropy a nativní maxima nadále platí
Archivní kontrolní body během konverze dotazují zrušení callbacku, vypůjčený token zrušení zdroje, uplynulý čas a počty objektů. Selhání budgetu a zrušení si zachovávají své strukturované statusové kódy napříč nativním konvertorem
Souborové joby
{
"operations": [
{"type": "capabilities"},
{"schemaVersion": 1, "type": "text.extract", "input": "input.pdf",
"pages": [0, 1], "output": "text.txt"}
]
}
THPDFJobProcessor.Execute přijímá pole operations, až 1,024 operací a 4 MiB JSON; stávající joby merge, split, optimise, encrypt a validate zůstávají dostupné
Každá dokumentová operace dodává vstupní cestu a volitelné heslo; render, text.replace, forms.fill, forms.flatten, ocr.layer, redact, sign a archive.pdfa4.raster vyžadují výstupní cestu
Artefakty se zapisují do dočasného souboru vedle cíle, propláchnou se, zvalidují a pak se atomicky publikují; při selhání se existující cíl zachová a vstup s výstupem můžou sdílet cestu
Kontrakt C callbacků
Strukturu hpdf_operation_v1 vynulujte, struct_size nastavte na její nativní velikost, abi_version na HPDF_ABI_VERSION_1 a flags na nulu; velikost porovnejte s hpdf_abi_operation_v1_size
Záznam operace nese bajty JSON s přesnou délkou, volitelný vstup s náhodným přístupem, volitelný sekvenční binární výstup a povinný sekvenční výstup výsledku JSON
Vstupní callbacky, uživatelská data a podkladové bajty PDF musí zůstat platné, dokud se handle nenahradí ani nezničí, protože líné parsování si adaptér ponechává
Callbacky výstupu a výsledku existují jen po dobu volání; pro každý handle volejte sériově a vyvarujte se reentrance callbacků
Callbacky používají cdecl, částečné přenosy se opakují a úspěšné zápisy musí udělat nenulový pokrok; výjimky se převádějí na pevné statusové kódy
Mutace se commitují, až když uspěje doručení artefaktu i výsledku JSON; selhání nebo zrušení callbacku změny vrátí a volající zahodí už doručené bajty
Vstup náhrady se načítá před transakcí mutace a zůstává samostatnou změnou stavu
Budgety
Volitelný objekt budgetu přijímá kladná přesná celá čísla nejvýše 9,007,199,254,740,991
| Klíč | Výchozí |
|---|---|
| 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 |
Obecné budgety výstupu a výsledku se každý omezuje na polovinu budgetu paměti; archivní konverze používá výše uvedené přísnější stropy. Tím se ohraničují nakonfigurované prostředky operace, nikoli celková paměť procesu
Kontroly zrušení a uplynulého času jsou kooperativní na kontrolních bodech operace, stránky, čtení vstupu a zápisu výstupu; dlouhá nativní rutina může běžet až do svého dalšího kontrolního bodu
Reporty nesou schemaVersion, status a statusCode; chyby budgetu používají status 8, zrušení 4, selhání I/O 5, chybu parsování 6, neplatné argumenty 1 a chybu vykonávání 7