JSON- och C ABI-dokumentoperationer

export.structured exporterar valda sidor som semantisk HTML, XHTML, XML eller JSON; tables.export exporterar typade tabeller som CSV, JSON eller XLSX och bevarar sidöverskridande kontinuitet, sammanslagna celler och inbyggd värdeslutledning

Båda operationerna kräver en binär utdatadestination, bevarar dokumentet och befintliga signaturfält och exponerar avgränsade inbyggda exportalternativ

Strukturerad och typad tabellexport

{"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":"."}}

Strukturerad export accepterar html, xhtml, xml och json (standard); tabellexport accepterar csv (standard), json och xlsx

Strukturerade booleska alternativ är includeCoordinates, includeStyles, includeImages, includeTables, includeAccessibilitySemantics, preferTaggedStructure, fallbackToGeometricSemantics, includeNavigation, includeAnnotations och includeFormControls; samtliga har true som standardvärde

imageMode accepterar omit, metadata och embedded-png (standard); se Strukturerad export av inlästa sidor för den semantiska modellen och hanteringen av känsliga fält

Strukturerade resursalternativ är maxPageCount, maxGlyphsPerPage, maxImagesPerPage, maxStructureNodes, maxOutlineItems, maxInteractionsPerPage, maxFormOptionsPerField, maxOutputBytes, maxImageBytes och maxTotalImageBytes

Tabellens booleska alternativ är detectMergedCells, detectRepeatedHeaders, mergeAcrossPages och inferValueTypes; samtliga har true som standardvärde

dateOrder accepterar ymd (standard), mdy och dmy; separatorer måste vara enskilda utskrivbara tecken, och en tom thousandsSeparator inaktiverar den

minimumTableConfidence accepterar 0 till 1 och har 0.55 som standardvärde; en positiv columnTolerance har 12 sidenheter som standardvärde

Tabellens resursalternativ är maxPageCount, maxGlyphsPerPage, maxTableCount, maxRowCount, maxCellCount, maxTextCharacters och maxOutputBytes; se Typad tabellextraktion för cellmodellen

Okända alternativesnamn, ogiltiga typer, format som inte stöds och icke-positiva gränser avvisas; begärda inbyggda gränser begränsas av konservativa minnes- och objektbudgeter

Mellanlagring för export begränsas till det mindre av budget.outputBytes och en fjärdedel av budget.memoryBytes; effectiveOutputLimit rapporterar det taket, medan en strängare options.maxOutputBytes kan gälla

Inbyggda resursfel rapporterar budget-exceeded, mätvärdet nativeExportResources och den inbyggda diagnostiken; observed=1 och limit=0 betecknar ett nekat resurstillstånd i stället för uppmätt byteanvändning

Båda operationerna rapporterar documentUpdated: false, bevarar källans auto-launch- och avkodningsinställningar, mellanlagrar utdata före publicering och behåller befintliga fildestinationer efter ett misslyckat filjobb

Kontroller för tidsgräns och ABI-callback-avbrott är samarbetande vid operationens och publiceringens kontrollpunkter; inbyggda avbrottstoken gäller också inne i stödda extraktionssteg, och inbyggt arbete avbryts inte tvångsmässigt

THPDFJobProcessor.ExecuteLoadedOperation och hpdf_document_execute_json_v1 delar samma schemaversionerade dokumentoperationsmotor

Ta reda på aktuella operationsnamn, format, signeringsprofil, callback-beteende och standardbudgeter med THPDFJobProcessor.Capabilities eller hpdf_capabilities_json_to_io

Operationer

Operations-JSON använder UTF-8 och schemaVersion: 1; sidindex är nollbaserade och valda sidarrayer får inte innehålla dubbletter

TypIndataResultat
infoInläst dokumentAntal sidor, objekt, formulär och signaturfält
renderpage, dpi (18–1 200), format (png)PNG-artefakt och dimensioner
export.structuredpages, format, optionsSemantisk HTML/XHTML/XML/JSON-artefakt och exporttelemetri
tables.exportpages, format, optionsTypad CSV/JSON/XLSX-artefakt och tabell-/cell-/rubriktelemetri
text.extractpages, valfri layoutUnicode-sidtext och valfri UTF-8-textartefakt
text.replacepages, needle, replacement, matchCasePer-sida-räknare för träffar/ersättningar/överhopp och valfri PDF-artefakt
forms.readInläst dokumentNamn, avkodade Unicode-värden och inbyggda fälttyper
forms.fillfields-array med name/value-strängarAtomära uppdateringar; okända eller duplicerade namn avvisar operationen
forms.flattenInläst dokumentAntal utplattade fält och kvarvarande fält
ocr.layerpages, engine (builtin-ascii), dpi, minimumConfidence, skipPagesWithText, replaceExistingSökbar PDF och antal godkända/hoppade ord
redactburnIn: true, rektanglar med page/x1/y1/x2/y2Antal tillämpade svartningar och PDF-artefakt
signpfxFile, pfxPassword, page, fieldName, valfri rektangel och contentsBytesPFX-signerad PDF-artefakt
archive.pdfa4.rasteracceptInformationLoss: true, iccProfileFile, valfri dpi och optionsValiderad PDF/A-4-rasterartefakt, borttagningsräknare och en explicit förlustprofil; bevarar den inlästa källan

Textersättning returnerar en partiell status när det inbyggda ersättings-API:et inte kan koda en träff; granska dess per-sida-räknare

Externa OCR-jobb accepterar explicit konfigurerade Tesseract CLI/DLL- och RapidOCR CLI/DLL-motorer jämte den inbyggda ASCII-standardmotorn, med typade inställningar, motortidsgränser, pixeltak och atomär publicering

OCR exponerar för närvarande den inbyggda ASCII-motorn; inbyggda Delphi-API:er accepterar externa OCR-adaptere

Mutationer avvisar dokument med befintliga signaturfält, inklusive osignerade platshållare; använd inbyggda inkrementella API:er för att bevara signaturer i sådana dokument

Signeringen producerar en signerad artefakt och återställer det ursprungliga handtaget samt rapporterar documentUpdated: false; befintliga formulärfält förblir tillgängliga, tillfälliga signaturfält tas bort, och handtaget kan avfrågas eller användas för ytterligare en operation efter signeringen

PDF/A-4-rasterarkivering

{
  "schemaVersion": 1,
  "type": "archive.pdfa4.raster",
  "acceptInformationLoss": true,
  "iccProfileFile": "profiles/sRGB.icm",
  "dpi": 150,
  "input": "source.pdf",
  "output": "archive.pdf"
}

Lägg detta objekt i ett filjobs operations-array, eller leverera det direkt via hpdf_document_execute_json_v1 med ett inläst handtag och binära utdata-callbacks; C-ABI:n ignorerar filjobbets in-/utdatasökvägar och använder sina adaptere

acceptInformationLoss måste vara det JSON-booleska värdet true, och iccProfileFile måste namnge en icke-tom, NUL-fri sökväg till en stödd sRGB-matris-/TRC-ICC-profil på exekveringsvärden; relativa profilsökvägar löses mot processens arbetskatalog

dpi har 150 som standardvärde och accepterar heltal från 36 till 1 200; konverteringen omfattar varje källsida och avvisar varje pages-medlem

Resultatobjektet archive rapporterar nativeValidationSucceeded, sourcePages, pagesRendered, rasterPixels, outputBytes, removedAnnotations, removedFormFields och removedEmbeddedFiles

archive.lossy är true, och varje flagga i archive.lossProfile är false: searchableText, vectorContent, interactiveContent, originalSignatures, annotationAppearances och structureIdentity

Sidinnehållet blir RGB-pixlar; anteckningar och widgetutseenden utelämnas, och ursprungliga signaturer förs inte över till utdata. Den inlästa källan förblir tillgänglig med documentUpdated: false, även efter misslyckad publicering; dess tidigare launch-, avkodnings-, strömtröskel-, avbrotts- och renderingsinställningar återställs

Binär utdata krävs, och inbyggd PDF/A-4-validering måste lyckas före leverans. För gränser kring rendering, färg, kodek, källalias och överensstämmelse, se inläst PDF/A-4-rasterkonvertering

Resursbudgeter för arkivering

Det valfria options-objektet accepterar positiva exakta heltal som stramar åt följande effektiva tak; okända nycklar och värden som överskrider ett tak avvisar begäran i stället för att öka operationens budget

AlternativEffektiv standard och maximum
maxPagesMinimum av 1 000 och budget.pageCount
maxInputObjectsMinimum av 200 000 och budget.objectCount
maxPixelsPerPageMinimum av 40 000 000, budget.pixels och memoryBytes / 32
maxTotalPixelsMinimum av 500 000 000, budget.pixels och memoryBytes / 32
maxRasterBytesMinimum av 256 MiB och memoryBytes / 8
maxOutputBytesMinimum av 256 MiB, budget.outputBytes och memoryBytes / 8
maxDecodedStreamBytesMinimum av 64 MiB och memoryBytes / 8
maxTotalDecodedBytesMinimum av 256 MiB och memoryBytes / 4

ICC-filen begränsas till det mindre av 4 MiB och memoryBytes / 16 före allokering; dessa konservativa utrymmen tar hänsyn till samtidig mellanlagring, utdatabuffertar, bilddata och avkodningsarbete och utgör ingen strikt process-RSS-gräns

Öka toppnivåjobbets budgeter när en större arkiveringsarbetsbelastning är avsiktlig; kapslade alternativ stramar bara åt de effektiva taken, och inbyggda maxima gäller fortfarande

Arkiveringskontrollpunkter pollar callback-avbrott, den lånte källans avbrottstoken, förfluten tid och objekträknare under konverteringen. Budget- och avbrottsfel behåller sina strukturerade statuskoder genom den inbyggda konverteraren

Filjobb

{
  "operations": [
    {"type": "capabilities"},
    {"schemaVersion": 1, "type": "text.extract", "input": "input.pdf",
     "pages": [0, 1], "output": "text.txt"}
  ]
}

THPDFJobProcessor.Execute accepterar en operations-array, upp till 1 024 operationer och 4 MiB JSON; befintliga merge-, split-, optimise-, encrypt- och validate-jobb förblir tillgängliga

Varje dokumentoperation anger en indatasökväg och ett valfritt lösenord; render, text.replace, forms.fill, forms.flatten, ocr.layer, redact, sign och archive.pdfa4.raster kräver en utdatasökväg

Artefakter skrivs till en tillfällig fil bredvid destinationen, spolas och valideras och publiceras därefter atomärt; ett fel bevarar en befintlig destination, och in- och utdata får dela sökväg

C-callback-kontrakt

Nollinitialisera hpdf_operation_v1, sätt struct_size till dess nativa storlek, abi_version till HPDF_ABI_VERSION_1 och flaggor till noll; jämför dess storlek med hpdf_abi_operation_v1_size

Operationsposten bär JSON-byte och en exakt längd, valfri random-access-indata, valfri sekventiell binär utdata och obligatorisk sekventiell JSON-resultatutdata

Indata-callbacks, användardata och bakomliggande PDF-byte måste förbli giltiga tills handtaget ersätts eller förstörs, eftersom lat tolkning behåller adaptern

Utdata-/resultat-callbacks existerar bara under anropet; serialisera anropen per handtag och undvik callback-återinträde

Callbacks använder cdecl, partiella överföringar görs om, och lyckade skrivningar måste göra positivt framsteg; undantag konverteras till fasta statuskoder

Mutationer committas först när både artefakt- och JSON-resultatleveransen lyckats; callback-fel eller avbrott rullar tillbaka ändringarna, och anroparen kastar bort byte som redan levererats

Ersättningsindata läses in före mutationstransaktionen och förblir en separat tillståndsändring

Budgeter

Det valfria budgetobjektet accepterar positiva exakta heltal som inte överstiger 9 007 199 254 740 991

NyckelStandardvärde
memoryBytes268 435 456
outputBytes134 217 728
resultBytes16 777 216
timeMilliseconds60 000
objectCount1 000 000
pageCount1 024
pixels100 000 000

Allmänna utdata- och resultatbudgeter begränsas var och en till hälften av minnesbudgeten; arkiveringskonverteringen tillämpar de strängare tak ovan. Dessa begränsar konfigurerade operationsresurser, inte processens totala minne

Avbrotts- och förfluten-tid-kontroller är samarbetande vid kontrollpunkterna för operation, sida, indataläsning och utdataskrivning; en lång inbyggd rutin kan fortsätta till sin nästa kontrollpunkt

Rapporterna bär schemaVersion, status och statusCode; budgetfel använder status 8, avbrott 4, I/O-fel 5, tolkningsfel 6, ogiltiga argument 1 och exekveringsfel 7