JSON- og C ABI-dokumentoperationer
export.structured eksporterer valgte sider som semantisk HTML, XHTML, XML eller JSON; tables.export eksporterer typede tabeller som CSV, JSON eller XLSX og bevarer kontinuitet på tværs af sider, flettede celler og native value inference
Begge operationer kræver en binær output-destination, bevarer dokumentet og eksisterende signaturfelter og eksponerer afgrænsede native export-options
Struktureret eksport og eksport af typede tabeller
{"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":"."}}
Struktureret eksport accepterer html, xhtml, xml og json (standard); tabelexport accepterer csv (standard), json og xlsx
Strukturerede boolean-options er includeCoordinates, includeStyles, includeImages, includeTables, includeAccessibilitySemantics, preferTaggedStructure, fallbackToGeometricSemantics, includeNavigation, includeAnnotations og includeFormControls; alle har true som standard
imageMode accepterer omit, metadata og embedded-png (standard); se Structured Loaded-Page Export for den semantiske model og håndteringen af følsomme felter
Strukturerede ressource-options er maxPageCount, maxGlyphsPerPage, maxImagesPerPage, maxStructureNodes, maxOutlineItems, maxInteractionsPerPage, maxFormOptionsPerField, maxOutputBytes, maxImageBytes og maxTotalImageBytes
Tabel-boolean-options er detectMergedCells, detectRepeatedHeaders, mergeAcrossPages og inferValueTypes; alle har true som standard
dateOrder accepterer ymd (standard), mdy og dmy; separatorer skal være enkelte printbare tegn, og en tom thousandsSeparator deaktiverer den
minimumTableConfidence accepterer 0 til 1 og har 0.55 som standard; positiv columnTolerance har 12 sideenheder som standard
Tabel-ressource-options er maxPageCount, maxGlyphsPerPage, maxTableCount, maxRowCount, maxCellCount, maxTextCharacters og maxOutputBytes; se Typet tabeludtræk for cellemodellen
Ukendte options-navne, ugyldige typer, ikke-understøttede formater og ikke-positive grænser afvises; ønskede native-grænser begrænses af konservative memory- og objektbudgetter
Eksport-staging begrænses til det mindste af budget.outputBytes og en fjerdedel af budget.memoryBytes; effectiveOutputLimit rapporterer den grænse, mens strammere options.maxOutputBytes kan gælde
Native ressourcefejl rapporterer budget-exceeded, metric'en nativeExportResources og den native diagnostik; observed=1 og limit=0 betegner en nægtet ressourcetilstand snarere end målt byte-forbrug
Begge operationer rapporterer documentUpdated: false, bevarer kildens auto-launch- og afkodeindstillinger, stage'r output før publicering og bevarer eksisterende fildestinationer efter et fejlet file job
Deadline- og ABI-callback-annulleringstjek er kooperative ved operations- og publiceringscheckpoints; native cancellation tokens gælder også i understøttede udtræksfaser, og native arbejde afbrydes ikke med tvang
THPDFJobProcessor.ExecuteLoadedOperation og hpdf_document_execute_json_v1 deler samme schema-versionerede dokumentoperationsmotor
Find de aktuelle operationsnavne, formater, signeringsprofil, callback-adfærd og standardbudgetter med THPDFJobProcessor.Capabilities eller hpdf_capabilities_json_to_io
Operationer
Operation-JSON bruger UTF-8 og schemaVersion: 1; sideindekser er zero-based, og valgte side-arrays kan ikke indeholde duplikater
| Type | Input | Resultat |
|---|---|---|
| info | Indlæst dokument | Antal sider, objekter, formularer og signaturfelter |
| render | page, dpi (18–1,200), format (png) | PNG-artefakt og dimensioner |
| export.structured | pages, format, options | Semantisk HTML/XHTML/XML/JSON-artefakt og eksporttelemetri |
| tables.export | pages, format, options | Typet CSV/JSON/XLSX-artefakt og tabel-/celle-/header-telemetri |
| text.extract | pages, valgfrit layout | Unicode-sidetekst og valgfri UTF-8-tekstartefakt |
| text.replace | pages, needle, replacement, matchCase | Antal matches, erstatninger og spring over pr. side samt valgfri PDF-artefakt |
| forms.read | Indlæst dokument | Navne, afkodede Unicode-værdier og native felttyper |
| forms.fill | fields-array med name/value-strenge | Atomiske opdateringer; ukendte eller duplikerede navne afviser operationen |
| forms.flatten | Indlæst dokument | Antal flattenede felter og resterende felter |
| ocr.layer | pages, engine (builtin-ascii), dpi, minimumConfidence, skipPagesWithText, replaceExisting | Søgbar PDF og accepterede/forkastede ordtællinger |
| redact | burnIn: true, rektangler med page/x1/y1/x2/y2 | Antal udførte redaktioner og PDF-artefakt |
| sign | pfxFile, pfxPassword, page, fieldName, valgfrit rektangel og contentsBytes | PFX-signeret PDF-artefakt |
| archive.pdfa4.raster | acceptInformationLoss: true, iccProfileFile, valgfri dpi og options | Valideret PDF/A-4 raster-artefakt, fjernelsestællinger og en eksplicit tabsprofil; bevarer den indlæste kilde |
Teksterstatning returnerer en delvis status, når den native erstatnings-API ikke kan encode et match; undersøg dens tællinger pr. side
OCR eksponerer i øjeblikket den indbyggede ASCII-motor; native Delphi-API'er accepterer eksterne OCR-adaptere
Mutationer afviser dokumenter med eksisterende signaturfelter, herunder usignerede placeholders; brug den inkrementelle signeringsprofil eller native inkrementelle API'er til at bevare signaturer i de dokumenter
Incremental PFX-signering accepterer en uændret fastholdt kilde, inklusive understøttede krypterede PDF'er med en eksplicit operations-adgangskode, validerer hver gammel og ny CMS, bevarer originale bytes og kryptering, understøtter et eksisterende tomt felt, tjekker krypteringstilladelser og afviser kilde-/output-fil-aliasser
Signering producerer et signeret artefakt og gendanner det oprindelige handle med rapporten documentUpdated: false; eksisterende formularfelter forbliver tilgængelige, midlertidige signaturfelter fjernes, og det oprindelige handle kan forespørges eller bruges til en anden operation efter signeringen
PDF/A-4 raster-arkiveringskonvertering
{
"schemaVersion": 1,
"type": "archive.pdfa4.raster",
"acceptInformationLoss": true,
"iccProfileFile": "profiles/sRGB.icm",
"dpi": 150,
"input": "source.pdf",
"output": "archive.pdf"
}
Placér dette objekt i et file jobs operations-array, eller angiv det direkte via hpdf_document_execute_json_v1 med et indlæst handle og binære output-callbacks; C ABI ignorerer file job-input/output-stier og bruger sine adaptere
acceptInformationLoss skal være JSON-booleanen true, og iccProfileFile skal navngive en ikke-tom, NUL-fri sti til en understøttet sRGB matrix/TRC ICC-profil på værtsmaskinen; relative profilstier opløses i forhold til processens arbejdsmappe
dpi har 150 som standard og accepterer integers fra 36 til 1,200; konverteringen dækker hver kildeside og afviser ethvert pages-medlem
Resultatobjektet archive rapporterer nativeValidationSucceeded, sourcePages, pagesRendered, rasterPixels, outputBytes, removedAnnotations, removedFormFields og removedEmbeddedFiles
archive.lossy er true, og alle flag i archive.lossProfile er false: searchableText, vectorContent, interactiveContent, originalSignatures, annotationAppearances og structureIdentity
Sideindhold bliver til RGB-pixels; annoteringer og widget-appearances udelades, og originale signaturer følges ikke med til outputtet. Den indlæste kilde forbliver tilgængelig med documentUpdated: false, også efter fejlet publicering; dens tidligere launch-, afkode-, stream-threshold-, annullerings- og render-indstillinger gendannes
Binært output er krævet, og native PDF/A-4-validering skal lykkes, før der leveres. Se indlæst PDF/A-4 raster-konvertering for grænserne for rendering, farve, codec, kilde-alias og konformitet
Ressourcebudgetter for arkivering
Det valgfrie options-objekt accepterer positive eksakte integers, der strammer følgende effektive grænser; ukendte keys og værdier over en grænse afviser anmodningen i stedet for at øge operationsbudgettet
| Option | Effektiv standard og maksimum |
|---|---|
| maxPages | Det mindste af 1,000 og budget.pageCount |
| maxInputObjects | Det mindste af 200,000 og budget.objectCount |
| maxPixelsPerPage | Det mindste af 40,000,000, budget.pixels og memoryBytes / 32 |
| maxTotalPixels | Det mindste af 500,000,000, budget.pixels og memoryBytes / 32 |
| maxRasterBytes | Det mindste af 256 MiB og memoryBytes / 8 |
| maxOutputBytes | Det mindste af 256 MiB, budget.outputBytes og memoryBytes / 8 |
| maxDecodedStreamBytes | Det mindste af 64 MiB og memoryBytes / 8 |
| maxTotalDecodedBytes | Det mindste af 256 MiB og memoryBytes / 4 |
ICC-filen begrænses til det mindste af 4 MiB og memoryBytes / 16 før allokering; disse konservative tilsagn dækker samtidig staging, output-buffere, billeddata og dekoderarbejde og etablerer ikke en striks proces-RSS-grænse
Forøg budgetterne på øverste job-niveau, når en større arkiveringsarbejdsbyrde er tilsigtet; indlejrede options strammer kun de effektive grænser, og native maksima gælder stadig
Arkiveringscheckpoints poller callback-annullering, den lånte kildes cancellation token, forløbet tid og objektantal under konverteringen. Budget- og annulleringsfejl bevarer deres strukturerede statuskoder gennem den native konverter
Filjobs
{
"operations": [
{"type": "capabilities"},
{"schemaVersion": 1, "type": "text.extract", "input": "input.pdf",
"pages": [0, 1], "output": "text.txt"}
]
}
THPDFJobProcessor.Execute accepterer et operations-array på op til 1,024 operationer og 4 MiB JSON; eksisterende merge-, split-, optimise-, encrypt- og validate-jobs forbliver tilgængelige
Hver dokumentoperation angiver en inputsti og en valgfri adgangskode; render, text.replace, forms.fill, forms.flatten, ocr.layer, redact, sign og archive.pdfa4.raster kræver en outputsti
Artefakter skrives til en midlertidig fil ved siden af destinationen, flushes og valideres og publiceres derefter atomisk; fejl bevarer en eksisterende destination, og input/output må dele en sti
C-callback-kontrakt
Zero-initialisér hpdf_operation_v1, sæt struct_size til dens native størrelse, abi_version til HPDF_ABI_VERSION_1 og flags til nul; sammenlign dens størrelse med hpdf_abi_operation_v1_size
Operations-recorden bærer JSON-bytes og en eksakt længde, valgfrit random-access-input, valgfrit sekventielt binært output og krævet sekventielt JSON-resultat-output
Input-callbacks, brugerdata og bagvedliggende PDF-bytes skal forblive gyldige, indtil handlet erstattes eller destrueres, fordi lazy parsing bibeholder adapteren
Output-/resultat-callbacks findes kun under kaldet; serialisér kald for hvert handle, og undgå callback-reentry
Callbacks bruger cdecl, delvise overførsler forsøges igen, og vellykkede skrivninger skal gøre positiv fremgang; exceptions konverteres til faste statuskoder
Mutationer committer først, når både artefakt- og JSON-resultat-levering lykkes; callback-fejl eller annullering ruller ændringerne tilbage, og kaldere kasserer bytes, der allerede er leveret
Erstatningsinput indlæses før mutationstransaktionen og forbliver en separat tilstandsændring
Budgetter
Det valgfrie budgetobjekt accepterer positive eksakte integers på højst 9,007,199,254,740,991
| Key | Standard |
|---|---|
| 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 |
Generelle output-/resultatbudgetter begrænses hver til det halve af memory-budgettet; arkiveringskonverteringen anvender de strengere grænser ovenfor. De begrænser konfigurerede operationsressourcer snarere end processens samlede memory
Annullerings- og forløbet-tid-tjek er kooperative ved operations-, side-, input-læsnings- og output-skrive-checkpoints; en lang native-rutine kan fortsætte til sit næste checkpoint
Rapporter bærer schemaVersion, status og statusCode; budgetfejl bruger status 8, annullering 4, I/O-fejl 5, parsefejl 6, ugyldige argumenter 1 og eksekveringsfejl 7