JSON- en C ABI-documentbewerkingen
export.structured exporteert geselecteerde pagina's als semantische HTML, XHTML, XML of JSON; tables.export exporteert getypte tabellen als CSV, JSON of XLSX en behoudt continuïteit over pagina's heen, samengevoegde cellen en native waarde-inferentie
Beide bewerkingen vereisen een binaire uitvoerbestemming, behouden het document en bestaande handtekeningvelden en bieden begrensde native exportopties
Gestructureerde export en getypte tabelexport
{"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":"."}}
Gestructureerde export accepteert html, xhtml, xml en json (standaard); tabelexport accepteert csv (standaard), json en xlsx
De booleaanse opties van gestructureerde export zijn includeCoordinates, includeStyles, includeImages, includeTables, includeAccessibilitySemantics, preferTaggedStructure, fallbackToGeometricSemantics, includeNavigation, includeAnnotations en includeFormControls; ze staan allemaal standaard op true
imageMode accepteert omit, metadata en embedded-png (standaard); zie Gestructureerde export van geladen pagina's voor het semantische model en het gedrag rond gevoelige velden
De resource-opties van gestructureerde export zijn maxPageCount, maxGlyphsPerPage, maxImagesPerPage, maxStructureNodes, maxOutlineItems, maxInteractionsPerPage, maxFormOptionsPerField, maxOutputBytes, maxImageBytes en maxTotalImageBytes
De booleaanse opties van tabelexport zijn detectMergedCells, detectRepeatedHeaders, mergeAcrossPages en inferValueTypes; ze staan allemaal standaard op true
dateOrder accepteert ymd (standaard), mdy en dmy; scheidingstekens zijn losse afdrukbare tekens, en een lege thousandsSeparator schakelt die uit
minimumTableConfidence accepteert 0 tot en met 1 en staat standaard op 0.55; een positieve columnTolerance staat standaard op 12 pagina-eenheden
De resource-opties van tabelexport zijn maxPageCount, maxGlyphsPerPage, maxTableCount, maxRowCount, maxCellCount, maxTextCharacters en maxOutputBytes; zie Extractie van getypte tabellen voor het celmodel
Onbekende optienamen, ongeldige typen, niet-ondersteunde formaten en niet-positieve limieten worden geweigerd; aangevraagde native limieten worden ingekaderd door conservatieve geheugen- en objectbudgetten
De staging van export is begrensd op het minimum van budget.outputBytes en een kwart van budget.memoryBytes; effectiveOutputLimit rapporteert die grens, en een strengere options.maxOutputBytes kan daarnaast gelden
Native resourcefouten rapporteren budget-exceeded, de metric nativeExportResources en de native diagnostiek; observed=1 en limit=0 duiden op een geweigerde resourceconditie, niet op gemeten bytes
Beide bewerkingen rapporteren documentUpdated: false, behouden de auto-launch- en decodeerinstellingen van de bron, stagen de uitvoer vóór publicatie en laten bestaande bestandsbestemmingen intact na een mislukte file job
Deadline- en ABI-callback-annuleringscontroles zijn coöperatief op bewerkings- en publicatiecheckpoints; native annuleringstokens gelden ook binnen ondersteunde extractiestadia, en native werk wordt niet geforceerd onderbroken
THPDFJobProcessor.ExecuteLoadedOperation en hpdf_document_execute_json_v1 delen dezelfde schema-geversioneerde documentbewerkingsengine
Ontdek de huidige bewerkingsnamen, formaten, het ondertekeningsprofiel, het callbackgedrag en de standaardbudgetten via THPDFJobProcessor.Capabilities of hpdf_capabilities_json_to_io
Bewerkingen
Bewerkings-JSON gebruikt UTF-8 en schemaVersion: 1; pagina-indexen zijn zero-based en geselecteerde paginalijsten mogen geen duplicaten bevatten
| Type | Invoer | Resultaat |
|---|---|---|
| info | Geladen document | Aantallen van pagina's, objecten, formulieren en handtekeningvelden |
| render | page, dpi (18–1,200), format (png) | PNG-artefact en afmetingen |
| export.structured | pages, format, options | Semantisch HTML/XHTML/XML/JSON-artefact en exporttelemetrie |
| tables.export | pages, format, options | Getypt CSV/JSON/XLSX-artefact en tabel-/cel-/koptekstelemetrie |
| text.extract | pages, optionele layout | Paginatekst in Unicode en optioneel UTF-8-tekstartefact |
| text.replace | pages, needle, replacement, matchCase | Aantallen gevonden/vervangen/overgeslagen per pagina en optioneel PDF-artefact |
| forms.read | Geladen document | Namen, gedecodeerde Unicode-waarden en native veldtypen |
| forms.fill | fields-array met name/value-strings | Atomische updates; onbekende of dubbele namen weigeren de bewerking |
| forms.flatten | Geladen document | Aantal afgevlakte velden en resterende velden |
| ocr.layer | pages, engine (builtin-ascii), dpi, minimumConfidence, skipPagesWithText, replaceExisting | Doorzoekbare PDF en aantallen geaccepteerde/geweigerde woorden |
| redact | burnIn: true, rectangles met page/x1/y1/x2/y2 | Aantal toegepaste redactions en PDF-artefact |
| sign | pfxFile, pfxPassword, page, fieldName, optionele rectangle en contentsBytes | Met PFX ondertekend PDF-artefact |
| archive.pdfa4.raster | acceptInformationLoss: true, iccProfileFile, optionele dpi en options | Gevalideerd PDF/A-4-rasterartefact, verwijderaantallen en een expliciet verliesprofiel; behoudt de geladen bron |
Tekstvervanging geeft een partiële status terug wanneer de native vervangings-API een match niet kan coderen; controleer de aantallen per pagina
Externe OCR-jobs accepteren expliciet geconfigureerde Tesseract CLI/DLL- en RapidOCR CLI/DLL-engines naast de ingebouwde ASCII-default, met getypeerde instellingen, engine-timeouts, pixelcaps en atomische publicatie
Mutaties weigeren documenten met bestaande handtekeningvelden, ook niet-ondertekende placeholders; gebruik het incrementele signing-profiel of native incrementele API's om handtekeningen in die documenten te behouden
Incrementele PFX-signing accepteert een ongewijzigde achtergehouden bron, inclusief ondersteunde versleutelde PDF's met een expliciet operatiewachtwoord, valideert elke oude en nieuwe CMS, behoudt originele bytes en versleuteling, ondersteunt een bestaand leeg veld, controleert versleutelingsrechten en weigert bron-/uitvoerbestandsaliassen
Ondertekening produceert een ondertekend artefact en herstelt de oorspronkelijke handle, met documentUpdated: false als rapportage; bestaande formuliervelden blijven beschikbaar, tijdelijke handtekeningvelden worden verwijderd en de handle kan na het ondertekenen worden bevraagd of voor een andere bewerking worden gebruikt
PDF/A-4-rasterconversie voor archivering
{
"schemaVersion": 1,
"type": "archive.pdfa4.raster",
"acceptInformationLoss": true,
"iccProfileFile": "profiles/sRGB.icm",
"dpi": 150,
"input": "source.pdf",
"output": "archive.pdf"
}
Plaats dit object in de operations-array van een file job, of lever het rechtstreeks aan via hpdf_document_execute_json_v1 met een geladen handle en binaire uitvoer-callbacks; de C ABI negeert de input/output-paden van de file job en gebruikt zijn eigen adapters
acceptInformationLoss moet de JSON-booleaanse waarde true zijn en iccProfileFile moet een niet-lege, NUL-vrije padnaam noemen van een ondersteund sRGB-matrix/TRC-ICC-profiel op de uitvoerende host; relatieve profielpaden worden opgelost ten opzichte van de working directory van het proces
dpi staat standaard op 150 en accepteert integers van 36 tot en met 1,200; de conversie omvat elke bronpagina en wijst elke pages-member af
Het archive-resultaatobject rapporteert nativeValidationSucceeded, sourcePages, pagesRendered, rasterPixels, outputBytes, removedAnnotations, removedFormFields en removedEmbeddedFiles
archive.lossy is true en elke vlag in archive.lossProfile is false: searchableText, vectorContent, interactiveContent, originalSignatures, annotationAppearances en structureIdentity
Pagina-inhoud wordt RGB-pixels; annotaties en widget-weergaven worden weggelaten en oorspronkelijke handtekeningen gaan niet mee naar de uitvoer. De geladen bron blijft beschikbaar met documentUpdated: false, ook na een mislukte publicatie; de eerdere launch-, decodeer-, streamdrempel-, annulerings- en renderinstellingen worden hersteld
Binaire uitvoer is vereist en native PDF/A-4-validatie moet slagen vóór levering. Zie geladen PDF/A-4-rasterconversie voor de grenzen rond rendering, kleur, codecs, bron-aliassen en conformiteit
Resourcebudgetten voor archivering
Het optionele options-object accepteert positieve exacte integers die de volgende effectieve caps aanscherpen; onbekende keys en waarden boven een cap weigeren het verzoek in plaats van het bewerkingsbudget te vergroten
| Optie | Effectieve standaardwaarde en maximum |
|---|---|
| maxPages | Minimum van 1,000 en budget.pageCount |
| maxInputObjects | Minimum van 200,000 en budget.objectCount |
| maxPixelsPerPage | Minimum van 40,000,000, budget.pixels en memoryBytes / 32 |
| maxTotalPixels | Minimum van 500,000,000, budget.pixels en memoryBytes / 32 |
| maxRasterBytes | Minimum van 256 MiB en memoryBytes / 8 |
| maxOutputBytes | Minimum van 256 MiB, budget.outputBytes en memoryBytes / 8 |
| maxDecodedStreamBytes | Minimum van 64 MiB en memoryBytes / 8 |
| maxTotalDecodedBytes | Minimum van 256 MiB en memoryBytes / 4 |
Het ICC-bestand is vóór allocatie begrensd op het minimum van 4 MiB en memoryBytes / 16; deze conservatieve marges dekken gelijktijdige staging, uitvoerbuffers, beeldgegevens en decoderwerk, en vormen geen strikte grens voor het process-RSS
Verhoog de jobbudgetten op topniveau wanneer een grotere archiefwerklast bewust is bedoeld; geneste opties aanscherpen alleen de effectieve caps en native maxima blijven gewoon gelden
Archiefcheckpoints controleren tijdens de conversie callback-annulering, het geleende annuleringstoken van de bron, verstreken tijd en objectaantallen. Budget- en annuleringsfouten behouden hun gestructureerde statuscodes in de native converter
File jobs
{
"operations": [
{"type": "capabilities"},
{"schemaVersion": 1, "type": "text.extract", "input": "input.pdf",
"pages": [0, 1], "output": "text.txt"}
]
}
THPDFJobProcessor.Execute accepteert een operations-array met maximaal 1,024 bewerkingen en 4 MiB aan JSON; bestaande merge-, split-, optimise-, encrypt- en validate-jobs blijven beschikbaar
Elke documentbewerking levert een invoerpad en een optioneel wachtwoord aan; render, text.replace, forms.fill, forms.flatten, ocr.layer, redact, sign en archive.pdfa4.raster vereisen een uitvoerpad
Artefacten worden naar een tijdelijk bestand naast de bestemming geschreven, geflushed en gevalideerd, en daarna atomisch gepubliceerd; bij falen blijft een bestaande bestemming behouden en input en output mogen een pad delen
Contract voor C-callbacks
Initialiseer hpdf_operation_v1 op nul, stel struct_size in op de native grootte, abi_version op HPDF_ABI_VERSION_1 en de vlaggen op nul; vergelijk de grootte met hpdf_abi_operation_v1_size
De bewerkingsrecord bevat JSON-bytes en een exacte lengte, optionele random-access-invoer, optionele sequentiële binaire uitvoer en verplichte sequentiële JSON-resultaatuitvoer
Invoer-callbacks, user data en de onderliggende PDF-bytes moeten geldig blijven tot de handle wordt vervangen of vernietigd, omdat lazy parsing de adapter vasthoudt
Uitvoer-/resultaat-callbacks bestaan alleen tijdens de aanroep; serialiseer aanroepen per handle en vermijd callback-reentrancy
Callbacks gebruiken cdecl, gedeeltelijke overdrachten worden opnieuw geprobeerd en een geslaagde write moet werkelijke voortgang maken; exceptions worden omgezet in vaste statuscodes
Mutaties committen pas wanneer zowel het artefact als het JSON-resultaat is afgeleverd; een callback-fout of annulering rolt wijzigingen terug en aanroepers verwerpen bytes die al zijn afgeleverd
De vervangingsinvoer wordt vóór de mutatietransactie geladen en blijft een aparte statuswijziging
Budgetten
Het optionele budgetobject accepteert positieve exacte integers van hoogstens 9,007,199,254,740,991
| Key | Standaardwaarde |
|---|---|
| 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 |
De algemene output-/resultaatbudgetten zijn elk begrensd op de helft van het geheugenbudget; archiefconversie past de strengere caps hierboven toe. Deze begrenzen de geconfigureerde bewerkingsresources, niet het totale procesgeheugen
Controles op annulering en verstreken tijd zijn coöperatief op bewerkings-, pagina-, invoerlees- en uitvoerschrijfcheckpoints; een lange native routine kan doorlopen tot zijn volgende checkpoint
Rapporten bevatten schemaVersion, status en statusCode; budgetfouten gebruiken status 8, annulering 4, I/O-fout 5, parsefout 6, ongeldige argumenten 1 en uitvoeringsfout 7