JSON i C ABI operacije nad dokumentima

export.structured izvozi izabrane stranice kao semantički HTML, XHTML, XML ili JSON; tables.export izvozi tipizirane tabele kao CSV, JSON ili XLSX, zadržavajući kontinuitet preko stranica, spojene ćelije i nativno zaključivanje vrednosti

Obe operacije zahtevaju binarno odredište izlaza, čuvaju dokument i postojeća polja potpisa i izlažu ograničene nativne opcije izvoza

Strukturisani izvoz i izvoz tipiziranih tabela

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

Strukturisani izvoz prihvata html, xhtml, xml i json (podrazumevano); izvoz tabela prihvata csv (podrazumevano), json i xlsx

Strukturisane boolove opcije su includeCoordinates, includeStyles, includeImages, includeTables, includeAccessibilitySemantics, preferTaggedStructure, fallbackToGeometricSemantics, includeNavigation, includeAnnotations i includeFormControls; sve su podrazumevano true

imageMode prihvata omit, metadata i embedded-png (podrazumevano); za semantički model i ponašanje osetljivih polja pogledajte Strukturisani izvoz učitanih stranica

Strukturisane opcije resursa su maxPageCount, maxGlyphsPerPage, maxImagesPerPage, maxStructureNodes, maxOutlineItems, maxInteractionsPerPage, maxFormOptionsPerField, maxOutputBytes, maxImageBytes i maxTotalImageBytes

Boolove opcije tabela su detectMergedCells, detectRepeatedHeaders, mergeAcrossPages i inferValueTypes; sve su podrazumevano true

dateOrder prihvata ymd (podrazumevano), mdy i dmy; razdelnici moraju biti pojedinačni štampljivi znakovi, a prazan thousandsSeparator ga isključuje

minimumTableConfidence prihvata 0 do 1 i podrazumevano je 0.55; pozitivan columnTolerance podrazumeva 12 jedinica stranice

Opcije resursa za tabele su maxPageCount, maxGlyphsPerPage, maxTableCount, maxRowCount, maxCellCount, maxTextCharacters i maxOutputBytes; model ćelija opisan je na Izdvajanju tipiziranih tabela

Nepoznata imena opcija, neispravni tipovi, nepodržani formati i nepozitivne granice se odbacuju; zahtevane nativne granice sužavaju konzervativni budžeti memorije i objekata

Priprema izvoza ograničena je na manju od vrednosti budget.outputBytes i četvrtine budget.memoryBytes; effectiveOutputLimit prijavljuje tu granicu, a može važiti i stroži options.maxOutputBytes

Nativni neuspesi oko resursa prijavljuju budget-exceeded, metriku nativeExportResources i nativnu dijagnostiku; observed=1 i limit=0 označavaju uskraćen resurs, a ne izmerenu potrošnju bajtova

Obe operacije prijavljuju documentUpdated: false, čuvaju podešavanja auto-launch i dekodovanja izvora, pripremaju izlaz pre objavljivanja i zadržavaju postojeća odredišta datoteka nakon neuspelog posla nad datotekama

Provere roka i otkazivanja ABI callback-ova su kooperativne na checkpoint-ima operacije i objavljivanja; nativni tokeni za otkazivanje važe i unutar podržanih faza izdvajanja, a nativni posao se ne prekida nasilno

THPDFJobProcessor.ExecuteLoadedOperation i hpdf_document_execute_json_v1 dele isti engine operacija nad dokumentima sa verzionisanom šemom

Trenutna imena operacija, formate, profil potpisivanja, ponašanje callback-ova i podrazumevane budžete otkrijte preko THPDFJobProcessor.Capabilities ili hpdf_capabilities_json_to_io

Operacije

JSON operacija koristi UTF-8 i schemaVersion: 1; indeksi stranica računaju se od nule, a nizovi izabranih stranica ne smeju sadržati duplikate

TipUlazRezultat
infoUčitani dokumentBrojevi stranica, objekata, obrazaca i polja potpisa
renderpage, dpi (18–1.200), format (png)PNG artefakt i dimenzije
export.structuredpages, format, optionsSemantički HTML/XHTML/XML/JSON artefakt i telemetrija izvoza
tables.exportpages, format, optionsTipizirani CSV/JSON/XLSX artefakt i telemetrija tabela/ćelija/zaglavlja
text.extractpages, opciono layoutUnicode tekst stranice i opciono UTF-8 tekstualni artefakt
text.replacepages, needle, replacement, matchCaseBrojači podudaranja/zamena/preskočenih po stranici i opciono PDF artefakt
forms.readUčitani dokumentImena, dekodovane Unicode vrednosti i nativni tipovi polja
forms.fillniz fields sa stringovima name/valueAtomska ažuriranja; nepoznata ili duplicirana imena odbacuju operaciju
forms.flattenUčitani dokumentBroj izravnanih polja i preostala polja
ocr.layerpages, engine (builtin-ascii), dpi, minimumConfidence, skipPagesWithText, replaceExistingPretraživ PDF i brojači prihvaćenih/odbačenih reči
redactburnIn: true, pravougaonici sa page/x1/y1/x2/y2Broj primenjenih redakcija i PDF artefakt
signpfxFile, pfxPassword, page, fieldName, opciono pravougaonik i contentsBytesPFX-potpisan PDF artefakt
archive.pdfa4.rasteracceptInformationLoss: true, iccProfileFile, opciono dpi i optionsValidiran PDF/A-4 raster artefakt, brojači uklanjanja i eksplicitni profil gubitaka; čuva učitani izvor

Zamena teksta vraća delimični status kada nativni API zamene ne može da enkoduje podudaranje; proverite njegove brojače po stranici

OCR trenutno izlaže ugrađeni ASCII engine; nativni Delphi API-ji prihvataju eksterne OCR adaptere

Mutacije odbacuju dokumente sa postojećim poljima potpisa, uključujući nepotpisane rezerve; za čuvanje potpisa u tim dokumentima koristite nativne inkrementalne API-je

Potpisivanje proizvodi potpisan artefakt i vraća originalni handle uz prijavu documentUpdated: false; postojeća polja obrazaca ostaju dostupna, privremena polja potpisa se uklanjaju, a handle se može ispitivati ili iskoristiti za sledeću operaciju nakon potpisivanja

Arhivska konverzija u PDF/A-4 raster

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

Ovaj objekat smestite u niz operations posla nad datotekama, ili ga dostavite direktno kroz hpdf_document_execute_json_v1 sa učitanim handle-om i binarnim izlaznim callback-ovima; C ABI ignoriše ulazno/izlazne putanje posla nad datotekama i koristi svoje adaptere

acceptInformationLoss mora biti boolova JSON vrednost true, a iccProfileFile mora navesti nepraznu putanju bez NUL znakova do podržanog sRGB matrix/TRC ICC profila na hostu koji izvršava; relativne putanje profila rešavaju se prema radnom direktorijumu procesa

dpi podrazumeva 150 i prihvata cele brojeve od 36 do 1.200; konverzija pokriva svaku izvornu stranicu i odbacuje svaki član pages

Rezultujući objekat archive prijavljuje nativeValidationSucceeded, sourcePages, pagesRendered, rasterPixels, outputBytes, removedAnnotations, removedFormFields i removedEmbeddedFiles

archive.lossy je true, a svaka zastavica u archive.lossProfile je false: searchableText, vectorContent, interactiveContent, originalSignatures, annotationAppearances i structureIdentity

Sadržaj stranice postaje RGB pikseli; napomene i widget izgledi se izostavljaju, a originalni potpisi se ne prenose u izlaz. Učitani izvor ostaje dostupan uz documentUpdated: false, uključujući i nakon neuspele publikacije; njegova ranija podešavanja za pokretanje, dekodovanje, prag toka, otkazivanje i rendering se vraćaju

Binarni izlaz je obavezan, a nativna PDF/A-4 validacija mora uspeti pre isporuke. Za rendering, boju, kodeke, granice aliasa izvora i usaglašenosti pogledajte konverziju učitanih dokumenata u PDF/A-4 raster

Arhivski budžeti resursa

Izborni objekat options prihvata pozitivne egzaktne cele brojeve koji sužavaju sledeće efektivne granice; nepoznati ključevi i vrednosti koje prelaze granicu odbacuju zahtev umesto da povećaju budžet operacije

OpcijaEfektivni podrazumevani maksimum
maxPagesMinimum od 1.000 i budget.pageCount
maxInputObjectsMinimum od 200.000 i budget.objectCount
maxPixelsPerPageMinimum od 40.000.000, budget.pixels i memoryBytes / 32
maxTotalPixelsMinimum od 500.000.000, budget.pixels i memoryBytes / 32
maxRasterBytesMinimum od 256 MiB i memoryBytes / 8
maxOutputBytesMinimum od 256 MiB, budget.outputBytes i memoryBytes / 8
maxDecodedStreamBytesMinimum od 64 MiB i memoryBytes / 8
maxTotalDecodedBytesMinimum od 256 MiB i memoryBytes / 4

ICC datoteka se pre alokacije ograničava na manju od vrednosti 4 MiB i memoryBytes / 16; ti konzervativni troškovi pokrivaju istovremenu pripremu, izlazne bafore, podatke slika i rad dekodera, i ne predstavljaju strogu granicu RSS-a procesa

Kada je veći arhivski posao namerna odluka, povećajte budžete posla na najvišem nivou; ugnježdene opcije samo sužavaju efektivne granice, a nativni maksimumi i dalje važe

Arhivski checkpoint-i tokom konverzije ispitivaju otkazivanje callback-ova, pozajmljeni token za otkazivanje izvora, proteklo vreme i brojače objekata. Neuspesi budžeta i otkazivanja zadržavaju svoje strukturirane statusne kodove kroz nativni konverter

Poslovi nad datotekama

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

THPDFJobProcessor.Execute prihvata niz operacija, do 1.024 operacija i 4 MiB JSON-a; postojeći poslovi spajanja, deljenja, optimizacije, šifrovanja i validacije ostaju dostupni

Svaka operacija nad dokumentom dostavlja ulaznu putanju i opcionu lozinku; render, text.replace, forms.fill, forms.flatten, ocr.layer, redact, sign i archive.pdfa4.raster zahtevaju izlaznu putanju

Artefakti se zapisuju u privremenu datoteku pored odredišta, ispiraju i validiraju, a zatim atomski objavljuju; neuspek čuva postojeće odredište, a ulaz i izlaz mogu deliti putanju

Ugovor C callback-ova

Inicijalizujte hpdf_operation_v1 na nulu, postavite struct_size na njegovu nativnu veličinu, abi_version na HPDF_ABI_VERSION_1 i flags na nulu; veličinu uporedite sa hpdf_abi_operation_v1_size

Record operacije nosi JSON bajtove i egzaktnu dužinu, opciono ulaz sa direktnim pristupom, opciono sekvencijalni binarni izlaz i obavezan sekvencijalni izlaz JSON rezultata

Ulazni callback-ovi, korisnički podaci i bajtovi PDF-a koji ih podržavaju moraju ostati važeći dok se handle ne zameni ili uništi, jer lenjo parsiranje zadržava adapter

Izlazni callback-ovi i callback-ovi rezultata postoje samo tokom poziva; serijalizujte pozive po handle-u i izbegavajte ponovni ulaz u callback

Callback-ovi koriste cdecl, delimični prenosi se ponavljaju, a uspešni upisi moraju ostvariti stvarni napredak; izuzeci se konvertuju u fiksne statusne kodove

Mutacije se potvrđuju tek kada uspe i isporuka artefakta i isporuka JSON rezultata; neuspeh ili otkazivanje callback-a vraća promene, a pozivaoci odbacuju sve već isporučene bajtove

Ulaz zamene učitava se pre transakcije mutacije i ostaje odvojena promena stanja

Budžeti

Izborni objekat budžeta prihvata pozitivne egzaktne cele brojeve ne veće od 9.007.199.254.740.991

KljučPodrazumevano
memoryBytes268.435.456
outputBytes134.217.728
resultBytes16.777.216
timeMilliseconds60.000
objectCount1.000.000
pageCount1.024
pixels100.000.000

Opšti budžeti izlaza i rezultata svaki su ograničeni na polovinu budžeta memorije; arhivska konverzija primenjuje strože granice iz tabele iznad. To ograničava konfigurisane resurse operacije, a ne ukupnu memoriju procesa

Provere otkazivanja i proteklog vremena su kooperativne na checkpoint-ima operacije, stranice, čitanja ulaza i upisa izlaza; duga nativna rutina može da se nastavi do sledećeg checkpoint-a

Izveštaji nose schemaVersion, status i statusCode; greške budžeta koriste status 8, otkazivanje 4, neuspeh I/O 5, neuspeh parsiranja 6, neispravni argumenti 1, a neuspeh izvršavanja 7