JSON- und C-ABI-Dokumentoperationen

export.structured exportiert ausgewählte Seiten als semantisches HTML, XHTML, XML oder JSON; tables.export exportiert typisierte Tabellen als CSV, JSON oder XLSX und bewahrt dabei seitenübergreifende Kontinuität, verbundene Zellen und native Wertinferenz

Beide Operationen benötigen ein binäres Ausgabeziel, lassen das Dokument und vorhandene Signaturfelder unangetastet und legen begrenzte native Exportoptionen offen

Strukturierte und typisierte Tabellenexporte

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

Der strukturierte Export akzeptiert html, xhtml, xml und json (Standard); der Tabellenexport akzeptiert csv (Standard), json und xlsx

Die booleschen Optionen des strukturierten Exports sind includeCoordinates, includeStyles, includeImages, includeTables, includeAccessibilitySemantics, preferTaggedStructure, fallbackToGeometricSemantics, includeNavigation, includeAnnotations und includeFormControls; alle stehen standardmäßig auf true

imageMode akzeptiert omit, metadata und embedded-png (Standard); das semantische Modell und das Verhalten bei sensiblen Feldern beschreibt Strukturierter Export geladener Seiten

Die Ressourcenoptionen des strukturierten Exports sind maxPageCount, maxGlyphsPerPage, maxImagesPerPage, maxStructureNodes, maxOutlineItems, maxInteractionsPerPage, maxFormOptionsPerField, maxOutputBytes, maxImageBytes und maxTotalImageBytes

Die booleschen Optionen des Tabellenexports sind detectMergedCells, detectRepeatedHeaders, mergeAcrossPages und inferValueTypes; alle stehen standardmäßig auf true

dateOrder akzeptiert ymd (Standard), mdy und dmy; Trennzeichen müssen einzelne druckbare Zeichen sein, ein leerer thousandsSeparator schaltet sie ab

minimumTableConfidence akzeptiert 0 bis 1 und steht standardmäßig auf 0.55; ein positives columnTolerance liegt standardmäßig bei 12 Seiteneinheiten

Die Ressourcenoptionen des Tabellenexports sind maxPageCount, maxGlyphsPerPage, maxTableCount, maxRowCount, maxCellCount, maxTextCharacters und maxOutputBytes; das Zellmodell beschreibt Typisierte Tabellenextraktion

Unbekannte Optionsnamen, ungültige Typen, nicht unterstützte Formate und nichtpositive Limits werden zurückgewiesen; angeforderte native Limits werden durch konservative Speicher- und Objektbudgets deckeliert

Das Export-Staging ist auf den kleineren Wert aus budget.outputBytes und einem Viertel von budget.memoryBytes begrenzt; effectiveOutputLimit meldet diese Obergrenze, während ein strikteres options.maxOutputBytes zusätzlich greifen kann

Native Ressourcenfehler melden budget-exceeded, die Metrik nativeExportResources und die native Diagnose; observed=1 und limit=0 bezeichnen eine verweigerte Ressourcenbedingung statt gemessener Byte-Nutzung

Beide Operationen melden documentUpdated: false, bewahren Auto-Launch- und Dekode-Einstellungen der Quelle, stufen die Ausgabe vor der Veröffentlichung zwischen und behalten vorhandene Dateiziele nach einem fehlgeschlagenen Datei-Job bei

Frist- und ABI-Callback-Abbruchprüfungen sind an Operations- und Veröffentlichungs-Checkpunkten kooperativ; native Cancellation Tokens greifen auch innerhalb unterstützter Extraktionsphasen, und native Arbeit wird nicht gewaltsam unterbrochen

THPDFJobProcessor.ExecuteLoadedOperation und hpdf_document_execute_json_v1 teilen sich dieselbe schema-versionierte Dokumentoperations-Engine

Aktuelle Operationsnamen, Formate, das Signierprofil, das Callback-Verhalten und die Standardbudgets lassen sich über THPDFJobProcessor.Capabilities oder hpdf_capabilities_json_to_io ermitteln

Operationen

Operations-JSON verwendet UTF-8 und schemaVersion: 1; Seitenindizes sind nullbasiert, und ausgewählte Seitenarrays dürfen keine Duplikate enthalten

TypEingabeErgebnis
infoGeladenes DokumentAnzahlen von Seiten, Objekten, Formularen und Signaturfeldern
renderpage, dpi (18–1.200), format (png)PNG-Artefakt und Abmessungen
export.structuredpages, format, optionsSemantisches HTML/XHTML/XML/JSON-Artefakt und Export-Telemetrie
tables.exportpages, format, optionsTypisiertes CSV/JSON/XLSX-Artefakt und Tabellen-/Zellen-/Kopfzeilen-Telemetrie
text.extractpages, optionales LayoutUnicode-Seitentext und optionales UTF-8-Textartefakt
text.replacepages, needle, replacement, matchCaseTreffer-, Ersetzungs- und Übersprungen-Zähler pro Seite sowie ein optionales PDF-Artefakt
forms.readGeladenes DokumentNamen, dekodierte Unicode-Werte und native Feldtypen
forms.fillfields-Array mit Name/Wert-StringsAtomare Updates; unbekannte oder doppelte Namen weisen die Operation zurück
forms.flattenGeladenes DokumentAnzahl geflatteter Felder und verbleibende Felder
ocr.layerpages, engine (builtin-ascii), dpi, minimumConfidence, skipPagesWithText, replaceExistingDurchsuchbares PDF sowie Anzahl akzeptierter und verworfener Wörter
redactburnIn: true, Rechtecke mit page/x1/y1/x2/y2Anzahl angewandter Schwärzungen und PDF-Artefakt
signpfxFile, pfxPassword, page, fieldName, optionales Rechteck und contentsBytesPFX-signiertes PDF-Artefakt
archive.pdfa4.rasteracceptInformationLoss: true, iccProfileFile, optionales dpi und optionsValidiertes PDF/A-4-Raster-Artefakt, Entfernungszähler und ein explizites Verlustprofil; bewahrt die geladene Quelle

Die Textersetzung liefert einen partiellen Status, wenn die native Ersetzungs-API einen Treffer nicht kodieren kann; die Zähler pro Seite zeigen die Details

OCR stellt derzeit die eingebaute ASCII-Engine bereit; die nativen Delphi-APIs akzeptieren externe OCR-Adapter

Mutationen weisen Dokumente mit vorhandenen Signaturfeldern zurück, auch unsignierte Platzhalter; um Signaturen in solchen Dokumenten zu bewahren, die nativen Inkremental-APIs verwenden

Inkrementelle PFX-Signierung akzeptiert eine unveränderte, vorgehaltene Quelle, einschließlich unterstützter verschlüsselter PDFs mit einem expliziten Operation-Passwort, validiert jede alte und neue CMS, bewahrt Original-Bytes und Verschlüsselung, unterstützt ein vorhandenes leeres Feld, prüft Verschlüsselungsberechtigungen und weist Quell-/Ausgabedatei-Aliasse zurück

Das Signieren erzeugt ein signiertes Artefakt, stellt das ursprüngliche Handle wieder her und meldet documentUpdated: false; vorhandene Formularfelder bleiben verfügbar, temporäre Signaturfelder werden entfernt, und das Handle lässt sich nach dem Signieren weiter abfragen oder für eine weitere Operation nutzen

PDF/A-4-Raster-Archivkonvertierung

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

Dieses Objekt gehört in das operations-Array eines Datei-Jobs, oder es geht direkt über hpdf_document_execute_json_v1 mit einem geladenen Handle und binären Output-Callbacks hinein; die C-ABI ignoriert die Eingabe-/Ausgabepfade von Datei-Jobs und nutzt ihre Adapter

acceptInformationLoss muss der JSON-Boolesche Wert true sein, und iccProfileFile muss einen nichtleeren, NUL-freien Pfad zu einem unterstützten sRGB-Matrix/TRC-ICC-Profil auf dem ausführenden Host benennen; relative Profilpfade lösen sich gegen das Arbeitsverzeichnis des Prozesses auf

dpi steht standardmäßig auf 150 und akzeptiert ganzzahlige Werte von 36 bis 1.200; die Konvertierung erfasst jede Quellseite und weist jedes pages-Member zurück

Das archive-Ergebnisobjekt meldet nativeValidationSucceeded, sourcePages, pagesRendered, rasterPixels, outputBytes, removedAnnotations, removedFormFields und removedEmbeddedFiles

archive.lossy ist true, und jedes Flag in archive.lossProfile ist false: searchableText, vectorContent, interactiveContent, originalSignatures, annotationAppearances und structureIdentity

Seiteninhalt wird zu RGB-Pixeln; Anmerkungen und Widget-Darstellungen entfallen, und Originalsignaturen wandern nicht in die Ausgabe. Die geladene Quelle bleibt mit documentUpdated: false verfügbar, auch nach fehlgeschlagener Veröffentlichung; ihre bisherigen Launch-, Dekode-, Stream-Schwellen-, Abbruch- und Render-Einstellungen werden wiederhergestellt

Binäre Ausgabe ist Pflicht, und die native PDF/A-4-Validierung muss vor der Auslieferung erfolgreich sein. Für Rendering-, Farb-, Codec-, Quell-Alias- und Konformitätsgrenzen siehe Rasterkonvertierung geladener Dokumente zu PDF/A-4

Ressourcenbudgets für die Archivierung

Das optionale options-Objekt akzeptiert positive exakte Ganzzahlen, die die folgenden effektiven Obergrenzen verschärfen; unbekannte Schlüssel und Werte über einer Grenze weisen die Anfrage zurück, statt das Operationsbudget zu erhöhen

OptionEffektiver Standard und Maximum
maxPagesMinimum aus 1.000 und budget.pageCount
maxInputObjectsMinimum aus 200.000 und budget.objectCount
maxPixelsPerPageMinimum aus 40.000.000, budget.pixels und memoryBytes / 32
maxTotalPixelsMinimum aus 500.000.000, budget.pixels und memoryBytes / 32
maxRasterBytesMinimum aus 256 MiB und memoryBytes / 8
maxOutputBytesMinimum aus 256 MiB, budget.outputBytes und memoryBytes / 8
maxDecodedStreamBytesMinimum aus 64 MiB und memoryBytes / 8
maxTotalDecodedBytesMinimum aus 256 MiB und memoryBytes / 4

Die ICC-Datei ist vor der Allokation auf den kleineren Wert aus 4 MiB und memoryBytes / 16 begrenzt; diese konservativen Zuschläge decken gleichzeitiges Staging, Ausgabepuffer, Bilddaten und Decoder-Arbeit ab und stellen keine strikte Prozess-RSS-Grenze auf

Ein größeres Archivierungsvolumen erfordert erhöhte Job-Budgets auf oberster Ebene; verschachtelte Optionen verschärfen nur die effektiven Grenzen, und die nativen Maxima gelten weiterhin

Archivierungs-Checkpunkte fragen während der Konvertierung Callback-Abbruch, das ausgeliehene Abbruch-Token der Quelle, verstrichene Zeit und Objektzähler ab. Budget- und Abbruchfehler behalten ihre strukturierten Statuscodes über den nativen Konverter hinweg

Datei-Jobs

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

THPDFJobProcessor.Execute akzeptiert ein Operationsarray mit bis zu 1.024 Operationen und 4 MiB JSON; vorhandene Merge-, Split-, Optimise-, Encrypt- und Validate-Jobs bleiben verfügbar

Jede Dokumentoperation liefert einen Eingabepfad und ein optionales Passwort; render, text.replace, forms.fill, forms.flatten, ocr.layer, redact, sign und archive.pdfa4.raster benötigen einen Ausgabepfad

Artefakte werden in einer temporären Datei neben dem Ziel geschrieben, geflusht und validiert und dann atomar veröffentlicht; ein Fehlschlag bewahrt ein vorhandenes Ziel, und Ein- und Ausgabe dürfen denselben Pfad teilen

C-Callback-Vertrag

hpdf_operation_v1 nullinitialisieren, struct_size auf seine native Größe setzen, abi_version auf HPDF_ABI_VERSION_1 und die Flags auf null; seine Größe mit hpdf_abi_operation_v1_size vergleichen

Der Operations-Record trägt JSON-Bytes mit exakter Länge, eine optionale Random-Access-Eingabe, eine optionale sequenzielle binäre Ausgabe und eine erforderliche sequenzielle JSON-Ergebnisausgabe

Eingabe-Callbacks, User-Daten und die zugrundeliegenden PDF-Bytes müssen gültig bleiben, bis das Handle ersetzt oder zerstört wird, denn das Lazy-Parsing behält den Adapter

Output-/Ergebnis-Callbacks existieren nur während des Aufrufs; Aufrufe je Handle serialisieren und Callback-Reentry vermeiden

Callbacks verwenden cdecl, Teilübertragungen werden wiederholt, und erfolgreiche Schreibvorgänge müssen sichtbaren Fortschritt machen; Ausnahmen werden in feste Statuscodes umgewandelt

Mutationen committen erst, wenn Artefakt- und JSON-Ergebnislieferung erfolgreich waren; ein Callback-Fehler oder Abbruch rollt Änderungen zurück, und Aufrufer verwerfen bereits gelieferte Bytes

Ersetzungseingaben werden vor der Mutations-Transaktion geladen und bleiben eine eigene Zustandsänderung

Budgets

Das optionale Budgetobjekt akzeptiert positive exakte Ganzzahlen bis höchstens 9.007.199.254.740.991

SchlüsselStandard
memoryBytes268.435.456
outputBytes134.217.728
resultBytes16.777.216
timeMilliseconds60.000
objectCount1.000.000
pageCount1.024
pixels100.000.000

Die allgemeinen Output-/Ergebnisbudgets sind jeweils auf die Hälfte des Speicherbudgets begrenzt; die Archivkonvertierung setzt die strengeren Grenzen von oben an. Diese Grenzen betreffen die konfigurierten Operationsressourcen, nicht den gesamten Prozessspeicher

Abbruch- und Ablaufzeitprüfungen sind an Operations-, Seiten-, Eingabe-Lese- und Ausgabe-Schreib-Checkpunkten kooperativ; eine lange native Routine kann bis zu ihrem nächsten Checkpunkt weiterlaufen

Berichte tragen schemaVersion, status und statusCode; Budgetfehler verwenden Status 8, Abbruch 4, I/O-Fehler 5, Parse-Fehler 6, ungültige Argumente 1 und Ausführungsfehler 7