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
| Typ | Indata | Resultat |
|---|---|---|
| info | Inläst dokument | Antal sidor, objekt, formulär och signaturfält |
| render | page, dpi (18–1 200), format (png) | PNG-artefakt och dimensioner |
| export.structured | pages, format, options | Semantisk HTML/XHTML/XML/JSON-artefakt och exporttelemetri |
| tables.export | pages, format, options | Typad CSV/JSON/XLSX-artefakt och tabell-/cell-/rubriktelemetri |
| text.extract | pages, valfri layout | Unicode-sidtext och valfri UTF-8-textartefakt |
| text.replace | pages, needle, replacement, matchCase | Per-sida-räknare för träffar/ersättningar/överhopp och valfri PDF-artefakt |
| forms.read | Inläst dokument | Namn, avkodade Unicode-värden och inbyggda fälttyper |
| forms.fill | fields-array med name/value-strängar | Atomära uppdateringar; okända eller duplicerade namn avvisar operationen |
| forms.flatten | Inläst dokument | Antal utplattade fält och kvarvarande fält |
| ocr.layer | pages, engine (builtin-ascii), dpi, minimumConfidence, skipPagesWithText, replaceExisting | Sökbar PDF och antal godkända/hoppade ord |
| redact | burnIn: true, rektanglar med page/x1/y1/x2/y2 | Antal tillämpade svartningar och PDF-artefakt |
| sign | pfxFile, pfxPassword, page, fieldName, valfri rektangel och contentsBytes | PFX-signerad PDF-artefakt |
| archive.pdfa4.raster | acceptInformationLoss: true, iccProfileFile, valfri dpi och options | Validerad 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
| Alternativ | Effektiv standard och maximum |
|---|---|
| maxPages | Minimum av 1 000 och budget.pageCount |
| maxInputObjects | Minimum av 200 000 och budget.objectCount |
| maxPixelsPerPage | Minimum av 40 000 000, budget.pixels och memoryBytes / 32 |
| maxTotalPixels | Minimum av 500 000 000, budget.pixels och memoryBytes / 32 |
| maxRasterBytes | Minimum av 256 MiB och memoryBytes / 8 |
| maxOutputBytes | Minimum av 256 MiB, budget.outputBytes och memoryBytes / 8 |
| maxDecodedStreamBytes | Minimum av 64 MiB och memoryBytes / 8 |
| maxTotalDecodedBytes | Minimum 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
| Nyckel | Standardvärde |
|---|---|
| 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 |
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