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
| Tip | Ulaz | Rezultat |
|---|---|---|
| info | Učitani dokument | Brojevi stranica, objekata, obrazaca i polja potpisa |
| render | page, dpi (18–1.200), format (png) | PNG artefakt i dimenzije |
| export.structured | pages, format, options | Semantički HTML/XHTML/XML/JSON artefakt i telemetrija izvoza |
| tables.export | pages, format, options | Tipizirani CSV/JSON/XLSX artefakt i telemetrija tabela/ćelija/zaglavlja |
| text.extract | pages, opciono layout | Unicode tekst stranice i opciono UTF-8 tekstualni artefakt |
| text.replace | pages, needle, replacement, matchCase | Brojači podudaranja/zamena/preskočenih po stranici i opciono PDF artefakt |
| forms.read | Učitani dokument | Imena, dekodovane Unicode vrednosti i nativni tipovi polja |
| forms.fill | niz fields sa stringovima name/value | Atomska ažuriranja; nepoznata ili duplicirana imena odbacuju operaciju |
| forms.flatten | Učitani dokument | Broj izravnanih polja i preostala polja |
| ocr.layer | pages, engine (builtin-ascii), dpi, minimumConfidence, skipPagesWithText, replaceExisting | Pretraživ PDF i brojači prihvaćenih/odbačenih reči |
| redact | burnIn: true, pravougaonici sa page/x1/y1/x2/y2 | Broj primenjenih redakcija i PDF artefakt |
| sign | pfxFile, pfxPassword, page, fieldName, opciono pravougaonik i contentsBytes | PFX-potpisan PDF artefakt |
| archive.pdfa4.raster | acceptInformationLoss: true, iccProfileFile, opciono dpi i options | Validiran 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
| Opcija | Efektivni podrazumevani maksimum |
|---|---|
| maxPages | Minimum od 1.000 i budget.pageCount |
| maxInputObjects | Minimum od 200.000 i budget.objectCount |
| maxPixelsPerPage | Minimum od 40.000.000, budget.pixels i memoryBytes / 32 |
| maxTotalPixels | Minimum od 500.000.000, budget.pixels i memoryBytes / 32 |
| maxRasterBytes | Minimum od 256 MiB i memoryBytes / 8 |
| maxOutputBytes | Minimum od 256 MiB, budget.outputBytes i memoryBytes / 8 |
| maxDecodedStreamBytes | Minimum od 64 MiB i memoryBytes / 8 |
| maxTotalDecodedBytes | Minimum 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 |
|---|---|
| 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 |
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