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

TypVstupVýsledek
infoNačtený dokumentPočty stránek, objektů, formulářů a podpisových polí
renderpage, dpi (18–1,200), format (png)Artefakt PNG a rozměry
export.structuredpages, format, optionsSémantický artefakt HTML/XHTML/XML/JSON a telemetrie exportu
tables.exportpages, format, optionsTypovaný artefakt CSV/JSON/XLSX a telemetrie tabulek, buněk a záhlaví
text.extractpages, volitelný layoutText stránky v Unicode a volitelný textový artefakt UTF-8
text.replacepages, needle, replacement, matchCasePočty shod, náhrad a přeskočení na stránku a volitelný artefakt PDF
forms.readNačtený dokumentNázvy, dekódované hodnoty Unicode a nativní typy polí
forms.fillpole fields s řetězci name/valueAtomické aktualizace; neznámé nebo duplicitní názvy operaci odmítnou
forms.flattenNačtený dokumentPočet zploštěných polí a zbývající pole
ocr.layerpages, engine (builtin-ascii), dpi, minimumConfidence, skipPagesWithText, replaceExistingProhledávatelné PDF a počty přijatých a zahozených slov
redactburnIn: true, obdélníky s page/x1/y1/x2/y2Počet provedených začernění a artefakt PDF
signpfxFile, pfxPassword, page, fieldName, volitelný obdélník a contentsBytesArtefakt PDF podepsaný přes PFX
archive.pdfa4.rasteracceptInformationLoss: true, iccProfileFile, volitelné dpi a optionsValidovaný 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

VolbaEfektivní výchozí hodnota a maximum
maxPagesMinimum z 1,000 a budget.pageCount
maxInputObjectsMinimum z 200,000 a budget.objectCount
maxPixelsPerPageMinimum z 40,000,000, budget.pixels a memoryBytes / 32
maxTotalPixelsMinimum z 500,000,000, budget.pixels a memoryBytes / 32
maxRasterBytesMinimum z 256 MiB a memoryBytes / 8
maxOutputBytesMinimum z 256 MiB, budget.outputBytes a memoryBytes / 8
maxDecodedStreamBytesMinimum z 64 MiB a memoryBytes / 8
maxTotalDecodedBytesMinimum 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í
memoryBytes268,435,456
outputBytes134,217,728
resultBytes16,777,216
timeMilliseconds60,000
objectCount1,000,000
pageCount1,024
pixels100,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