Pregled projekta
HotPDF je knjižnica PDF komponenti na razini izvornog kôda za Delphi i C++Builder. Izgrađena je za desktop softver kojem treba deterministički PDF izlaz, izravno crtanje stranica, snažna RAD Studio integracija i kompaktna implementacija
Komponenta pokriva svakodnevno generiranje PDF-a, napredno sastavljanje dokumenata, uređivanje PDF-a, izlaz bogat slikama, obrasce s čuvarima dupliciranih naziva polja, napomene, omotače AcroForm polja u trenutku stvaranja, višekratno upotrebljive lance graditelja akcija za akcije otvaranja, akcije životnog ciklusa dokumenta, dodatne akcije stranica, akcije napomena, dodatne akcije napomena, dodatne akcije AcroForma, šifriranje, tijekove rada potpisivanja, optimizaciju fontova i tokovne tijekove rada iz jedne izvorne API površine
Alatnik učitanih dokumenata dodaje brisanje raspona stranica, spajanje svjesno konture i AcroForma, ograničenja višewidgetskih obrazaca, uređivanje geometrije, vidljivosti, rotacije, okvira i boja, potpuno uređivanje napomena, automatsku aktivaciju golih web i email adresa, bestdržavnu pretragu sljedećeg pogotka, potpune tipizirane snimke konture, potpisivanje Windows trgovinom certifikata, deterministički kolacionirani ispis s otkrivanjem sposobnosti papira, snimke Viewera cijele stranice, ograničene regije i ograničene pikselima, prefetč susjednih stranica svjestan predmemorije, trajna isticanja stranica, marquee odabir svjestan rotacije, ispis trenutnog prikaza, navigaciju tipkovnicom i točkićem te VCL komponente preglednika
Nedavna izdanja knjižnice proširila su HotPDF iz klasičnog PDF pisca u širi izvorni PDF alatnik koji pokriva provjere značajki specifične za verziju PDF 1.3 / 1.4 / 1.5 / 1.6 / 1.7, izvorni PDF 2.0 izlaz, sukladnost standardima PDF/A-1 / -2 / -3 / -4 + PDF/X-1a / -3 / -4 + PDF/UA-1 / -2, PAdES digitalne potpise baseline / extended / long-term-validation, cjevovod potpisivanja PFX / PKCS#12 u procesu s izvornim RSA i ECDSA plus neobaveznim OpenSSL 3 Ed25519 i Ed448, inkrementalna ažuriranja šifrirana Standard i javnim ključem koja čuvaju vjerodajnice sa stabilnim trajnim ID-jevima, rotirajućim ID-jevima izmjena, bajt-točnim izvornim prefiksima i bajt-točnim no-op spremanjima, podskupljanje fontova CFF / OpenType / CID-keyed CFF te PDF izvozne adaptere za FastReport, QuickReport, ReportBuilder i DevExpress ExpressPrinting koji usmjeravaju postojeće izvještaje kroz HotPDF kao jedini PDF pozadinski sustav. Direct File API obrađuje višegigabajtne PDF-ove s milijunima objekata iz datoteke u datoteku - brojeve stranica, kopije, prepise informacija dokumenta te AES-256 šifriranje ili dešifriranje - u sekundama, dok ograničeni oporavni učitač može preseliti valjanu xref sekciju ili ponovno izgraditi pomake izravnih objekata nakon oštećenih startxref i xref podataka bez vjerovanja ugniježđenom tekstu sličnom objektima ili binarnim podacima, te objavljuje oporavne događaje s bajtnim rasponima i eksplicitnim razinama pouzdanja
Pisac LinearizeOutput koji se sam odabire dodaje izlaz brzog web prikaza s sekcijom ovisnosti prve stranice, grupiranjem dijeljenih objekata, tablicama naznaka primarne stranice i dijeljenih objekata te ranom kompatibilnom tablicom ukrštenih referenci uz zadržavanje izravnih datotečnih i tokovnih odredišta
Filteri učitanih tokova izvršavaju se kroz višekratno upotrebljiv cjevovod čija konačna faza piše izravno u tokove u vlasništvu pozivatelja, a čije međufaze prelijevaju kroz neovisno komprimirane blokove i ograničen asinkroni red serija, sa strogim završnim oznakama ASCII85 i ASCIIHex, neovisnim stropovima dekodiranih bajtova po lancu i na razini dokumenta, ograničenjima broja filtera i dubine cjevovoda, otkrivanjem ciklusa neizravnih referenci, odbijanjem rekurzije istog toka i strukturiranom dijagnostikom za svaki uspjeh ili neuspjeh
Kodiranje prediktorom sada izlaže stroge višekratno upotrebljive TIFF i fiksne ili adaptivne PNG puteve za zapakovane, 8-bitne i 16-bitne rastre; učitane slike mogu kopirati izvorne ili generički dekodirane terete izravno u tokove pozivatelja, dok selektivna optimizacija koristi međuspremnike prelijevanja memorija-u-disk, determinističku četverostratešku zlib bazu nakon koje slijedi proračunom ograničeno dijeljenje Zopfli blokova i ograničene paralelne slikovne poslove koji predaju samo manje terete u izvornom redoslijedu
Rekompresija učitanih JPEG i JPEG 2000 slika može izvoditi ograničene probne kvalitete i birati deterministički izlaz zajedničkim ocjenjivanjem uzorkovane percepcijske greške i relativnog troška kodiranih bajtova, uz eksplicitna ograničenja vizualne greške i minimalne uštede
Veliki lokalni dokumenti koriste ograničeno prozorsko preslikavanje memorije sa zajedničkom LRU predmemorijom za čitanja parsera i nepromjenjive lijenčeve raspone tokova, dok pragovi preslikavanja i geometrija prozora ostaju konfigurabilni i neuspjesi automatski vraćaju na sigurniji put; sirovi komprimirani rasponi, dekodirane slike, kompajlirani popisi prikaza i renderirane rasterske stranice imaju neovisna ograničenja broja unosa, ukupnih bajtova i prijema po unosu, spajaju nedavnost sa starenjem prijema po fiksnoj frekvenciji kako bi odoljeli zagađivanju skeniranjem i izlažu statistiku zaposlenosti, prometa i frekvencije; pošteni dispečer vršne memorije za cijeli proces odgađa konkurentna učitavanja dokumenata, renderiranja, optimizaciju tokova i paralelnu optimizaciju slika prije nego što se njihovi glavni radni skupovi preklapaju, uz očuvanje otkazivanja i izvještavanje o pritisku prijema; serializacija nešifriranih tokova i prijenosi koje upravlja pozivatelj pišu bajtove memorije, preslikanih datoteka, lijenih datoteka, adaptivne predmemorije i predmemorije raspona bez posredne kopije cijelog toka; kratkotrajni tokeni i međuspremnici parsera koriste zadržanu arenu blokova kroz učitavanja, jednostavni rječnici i polja skeniraju nepromjenjive raspone s izravnom numeričkom konverzijom i ugniježđivanjem u jednom prolazu, konfigurabilna ograničenja bajtova, zbirnih tokena, unosa kontejnera i deformiranih tokena zaustavljaju neprijateljski ulaz s tipiziranom telemetrijom, ključevi rječnika više ne zahtijevaju privremene objekte naziva, a ponovljeni nazivi, operatori sadržaja i nepromjenjivi kratki stringovi dijele ograničeni bazen u opsegu dokumenta; izmijenjeni učitani tokovi koriste LoadedStreamMemoryThreshold za odabir memorije ili vlastitog komprimiranog privremenog toka čiji sirovi i komprimirani blokovi dijele ograničen asinkroni red pisanja; članovi objektnih tokova indeksiraju se po broju objekta i parsiraju tek pri referenciranju, dok LoadFromRandomAccessSource povezuje HTTP čitače raspona i prilagođene pohrane, spaja susjedna čitanja kroz ograničenu predmemoriju, adaptivno raste asinkrono predčitanje tijekom održivog unaprijednog parsiranja, potiskuje spekulativni transport nakon slučajnih skokova, suradnički otkazuje rad u letu za prednje traženja pozicije, oporavlja ključeve lozinki iz ograničenih raspona trailera, xrefa, ID-ja dokumenta i rječnika šifriranja bez zatraživanja potpunog izvora, hvata točne binarne unose sigurnosnog rukovaoca iz autoritativnog pomaka objekta tako da odgođeno dešifriranje ne treba ponovno čitanje izvora, izlaže prvu lineariziranu stranicu iz njezina samodovoljnog prefiksa i planira ograničene minimalne raspone pokretanja, naznaka, stranica, dijeljenih objekata i ukrštenih referenci za bilo koju kasniju stranicu uz prihvaćanje zakonitih kratkih čitanja i interoperabilnih te Priloga F rasporeda naznaka pod strogim ograničenjima memorije i strukture
Preslikane lokalne datoteke sada se prilagođavaju unutar konfiguriranog stropa bajtova: održiva unaprijedna čitanja koriste veće poglede za smanjenje ponovnog preslikavanja, održiva udaljena ili unatrag čitanja zadržavaju do 16 manjih MRU pogleda, promjene načina zahtijevaju ponovljene dokaze, a THPDFMappedFileStatistics izvještava aktivnu geometriju, vršne preslikane bajtove, brojače obrazaca pristupa i prijelaze
HotPDFABI.dll izlaže verzioniran flat C ABI s Win32 i Win64 callback strukturama provjerenima po rasporedu, validiranim neprozirnim ručicama, fiksnim statusnim kodovima, 64-bitnim čitanjima slučajnog pristupa izravno u međuspremnike parsera, ponovljivim tokovnim pisanjima, eksplicitnim duljinama bajtova, otkazivanjem, napretkom i dijagnostikom; build-HotPDF-ABI.cmd proizvodi DLL i import knjižnicu za svaku platformu
Determinističke diferencijalne regresijske probe uspoređuju imenovane motore kroz domene parsiranja, renderiranja, teksta i spremanja, ponavljaju svaki rezultat za otkrivanje nestabilnosti, izoliraju izuzetke, provode ograničenja ulaza i izlaza, pružaju ugrađene SHA-256 otiske HotPDF-a i ispisuju uređanu JSON shemu hotpdf.differential.v1
Izvorna statistička performansna regresijska pričuvka izolira Win32 i Win64 radna opterećenja učitavanja, spremanja, renderiranja i izdvajanja, bilježi zagrijavanja plus 30 sirovih uzoraka s p50, p95, varijancom uzorka, RSS-om, I/O-om procesa, determinističkim identitetom pričuvke i metapodacima okruženja te pada naspram verzioniranih JSON pragova
Kontinuirana pohrana korpusa deformiranih PDF-ova ponovno validira i ponovno minimizira svaki slučaj neuspjeha pod konfigurabilnim ograničenjima, čuva najmanji ekvivalentan-potpisu ulaz kroz pokretanja, serializira konkurentne pisce procesno-sigurnom bravom i atomski objavljuje SHA-256 adresirane PDF i hotpdf.corpus.case.v1 datoteke metapodataka
Ujedinjena telemetrija operacija odvaja rezervaciju dispečera i kašnjenje reda, zidno vrijeme od CPU vremena trenutne niti, prenosivu memoriju zadržanu komponentom od uzorkovanog radnog skupa procesa te kodirani ulaz od konačnog dekodiranog izlaza, a također izvještava o vršnim dodatnim živim alokacijama, delti I/O bajtova procesa, aktivnosti predmemorije, zbirnom radu filtera i proširenju dekodiranja
Ograničeni deterministički zapisi reprize bilježe kontrolne točke otkazivanja, dostupnost raspona slučajnog pristupa i boolean ili cjelobrojne ishode callbacka u uređanoj JSON shemi; stroga repriza validira svaki potpis događaja i zamjenjuje zabilježene odluke tako da se povremeno vanjsko vrijeme i ponašanje callbacka mogu reproducirati bez mijenjanja operacija dokumenta
Učitavanje svjesno revizija sada validira slobodne liste xrefa i prijelaze generacija uz zadržavanje ograničenih detalja za duplicirane i zasjenjene definicije objekata; destruktivna inkrementalna uređivanja spajaju postojeće i novostođene slobodne objekte u potpuni deterministički slobodni lanac, napreduju generacije sa saturacijom, čuvaju generacije prljavih objekata i izlažu statistiku ponovne izgradnje; eksplicitna stanja objekata clean, dirty, released i must-write podržavaju oslobađanje predmemorije objektnih tokova nakon spremanja uz malu memoriju, dok deterministički redoslijed rječnika, tokovne verzionirane JSON snimke grafa objekata i inkrementalna ažuriranja, uređivi QDF dijagnostički izlaz s ograničenim popravkom duljine toka i xrefa, ograničene grane ovisnosti i atribucija zadržane memorije temeljena na dominatorima čine strukturnu inspekciju reproducirljivom
Pretraživi OCR tekstualni slojevi povezuju prepoznavač kojeg bira aplikacija s ograničenim renderiranjem stranica, validiraju pouzdanost, Unicode i pikselnu geometriju, invertiraju rotaciju stranice za poravnati nevidljivi tekst, neobavezno vežu izlaz na jedan OCG i predaju svaku odabranu stranicu kroz jednu transakciju grafa; označene HotPDF OCR slojeve može se sigurno zamijeniti nakon spremanja i ponovnog učitavanja, susjedne latinične i ćirilične riječi dobivaju izričit Unicode razmak, a nativni višejezični konzolni primjer pretvara skenove u novi pretraživi PDF
Ugrađeni OCR motor prepoznaje obični, podebljani, kurzivni i podebljano kurzivni ASCII tekst, uključujući izblijedjela slova i svijetli tekst na pretežno tamnoj stranici; riječi s nesigurnim zadržanim glifama izostavljaju se u cijelosti da znakovi ne bi nečujno nestali, prazne ili neprepoznate stranice uspješno završavaju, a Windows FPC čuva 24-bitne i 32-bitne ulazne piksele
Neobavezni adapter nativne Tesseract DLL datoteke pruža konfigurabilnu segmentaciju stranica i načine motora, višejezično Unicode prepoznavanje, pouzdanost, granice riječi i osnovne linije kroz HPDFCreateTesseractDLLOCREngine u Delphi, C++Builder i Windows FPC/Lazarus izvedbama
Adapter lokalnih RapidOCR modela dodaje eksplicitne putanje ONNX modela, neobaveznu klasifikaciju kuta, lokalne rječnike i fontove, upravljanje CPU nitima, offline preflight, točan razmak prepoznatih redaka i ograničeno Unicode prepoznavanje kroz THPDFRapidOCROptions u Delphi, C++Builder i Windows FPC/Lazarus izvedbama
Adapter nativne RapidOCR DLL datoteke drži CPU ONNX modele unutar procesa i prepoznaje snimke memorije kroz HPDFCreateRapidOCRDLLOCREngine, s presetovima THPDFRapidOCRDLLOptions.ForLanguage za pojednostavljeni i tradicionalni kineski, engleski, japanski, korejski, ruski, uobičajene latinske jezike, arapski i hindi, verificiranim lokalnim paketima modela, horizontalnim redoslijedom čitanja, neobaveznom klasifikacijom kuta, Unicode tekstom, ograničenim izlazom i suradnim otkazivanjem u Delphi, C++Builder i Windows FPC/Lazarus izvedbama
Neobavezni lokalni adapteri Tesseract i RapidOCR pružaju otkazivu kinesku OCR obradu s eksplicitnim putanjama izvršnih datoteka i modela; ugrađeni zadani motor ostaje nepromijenjen, a vanjski motori, Python paketi, modeli i RapidOCRov lokalni preduvjet Arial moraju se osigurati zasebno
SetLoadedFreeTextPlainText eksplicitno zamjenjuje izgled podržane učitane FreeText napomene lijevo poravnatim ASCII Helvetica tekstom za prepis ili inkrementalno spremanje, dok SetLoadedAnnotationContents mijenja samo pohranjeni sadržaj
Dekodiranje crtičnih kodova učitane stranice renderira potpunu stranicu ili regiju sadržanu u media boxu u progresivnim ograničenim izrezima, posuđuje svaki izvorni ili četvrt-okrenuti raster dekoderu kojeg bira aplikacija, validira Unicode, sirove bajtove, pouzdanost i granice, vraća rotacije rastera i stranice u korisnički prostor PDF-a i deduplicira preklapajuće terete
Otkrivanje izbacivanja s pregledom prije spaja ugrađene PII obrasce svjesne kontrolnih zbrojeva s detektorima entiteta i lica kojeg bira aplikacija, mapira svaki prihvaćeni raspon ili rasterski pravokutnik u prostor PDF stranice, započinje svaki nalaz kao na čekanju i atomski priprema samo nalaze koji nose i eksplicitno odobrenje i identitet pregledatelja bez pepeljenja sadržaja
Preuređenje boja učitane stranice pretvara odabrano bojanje u DeviceGray, DeviceRGB ili DeviceCMYK, zadržava obični tekst i puteve uređajnih boja kao pretražive vektore, renderira slike, Oblike, uzorke, sjenčanja, prozirnost, ICC i Type 3 boje kroz jednu bezgubnu procesnu sliku kada je potrebno, po zadanim postavkama čuva stranice koje nose spot boje i atomski predaje potpunu ograničenu seriju
Strukturirani izvoz učitanih stranica zapisuje odabrane stranice kao UTF-8 HTML, XHTML, XML ili JSON iz jednog pristupačnog čitačkog modela, preferirajući označeni redoslijed i čuvajući jezik i naslov dokumenta, naslove, liste, tablice, slike, alternative, konture, oznake stranica, sigurne veze, napomene i neosjetljive kontrole obrazaca uz atomsko otkazivanje i proračune bajtova
Tipizirano izdvajanje tablica pretvara otkrivenu geometriju tablice u javnu kanoničku mrežu, spaja kompatibilne fragmente i susjedne stranice, označava ponovljena zaglavlja i spojene raspone stupaca, izvodi cjelobrojne, brojčane, boolean, datum, datum-vrijeme, valutne i postotne vrijednosti pod kontrolom localea s pouzdanošću i atomski zapisuje ograničeni CSV ili JSON bogat metapodacima
Neobavezni rukovatelji dokumenata prepoznaju XPS, EPUB i CBZ iz ispitanog sadržaja, čuvaju redoslijed fiksne stranice, spine ili prirodnih slika, pretvaraju XPS skraćene puteve i elemente svojstava punih, višestaničnih linearnih ili eliptičnih radijalnih gradijentnih četki u izvorne PDF vektore i uzorke sjenčanja, ispunjavaju puteve iz predmemoriranih ImageBrush resursa paketnih JPEG, PNG, TIFF ili JPEG XR slika s ograničenim mapiranjem viewboxa i viewporta, transformacijama lokalnima za četku, izvornim ponovljenim ili reflektiranim slikovnim uzorcima i PNG alfom mekog maske, primjenjuju vrijednosti Path.OpacityMask pune boje, gradijenta ili slike kroz savijenu alfu ili zajedničke DeviceGray grupe prozirnosti, sastavljaju preklapajuće Canvas potomke jednom kroz izolirane DeviceRGB grupe za Opacity i Canvas.OpacityMask, kompajliraju inline ili resursima poduprta XPS VisualBrush stabla u višekratno upotrebljive Form XObjecte i ograničene uzorke popločavanja, mapiraju ograničenu transformiranu i strukturiranu geometriju Canvas.Clip u ugniježđene izvorne PDF puteve isječkanja, čuvaju ograničene XPS Glyphs klastere, točne programe fontova paketa i ID-jeve glifa, eksplicitne pomake, pomake položaja, RTL ishodišta, prozirnost, ponovnu upotrebu resursa, izdvajanje Unicodea te navigaciju HTTP, HTTPS, mail, paketna-stranica i LinkTarget transformiranu kroz isječane izvorne PDF napomene, nasljeđuju Canvas-opsegom ograničenu navigaciju kroz vizuale potomaka s ugniježđenim nadjačavanjima, ispisuju pozicionirane nizove TJ, provode zajedničke proračune arhive, resursa, prelijevanja, stranica, veza, URI-ja, geometrije, sadržaja grupa, piksela, izlaza i otkazivanja te ponovno koriste jednu nepromjenjivu PDF predmemoriju za atomski izvoz i renderiranje
CSC udaljeno potpisivanje povezuje postojeći cjevovod CMS davatelja s uslugama CSC API v2 kroz HTTP transport u vlasništvu aplikacije, s OAuth obnovom, otkrivanjem lanca vjerodajnica, rukovanjem SAD-a pripinutim na točan hash, ograničenim uređanim multisign serijama, sinkronim ili asinkronim potpisivanjem, ograničenim anketiranjem, RFC 3161 vremenskim oznakama, otkazivanjem, idempotencijskim ključevima s SHA-256 adresiranjem sadržaja i konačnom predmemorijom dovršenih operacija
Ugniježđene copy-on-write transakcije grafa objekata snimaju svaki dirani neizravni korijen jednom po savepointu, čuvaju adrese korijena tijekom vraćanja, obnavljaju alokaciju brojeva objekata, uklanjaju dodane korijene, prelijevaju povijest velikih tokova izvan konfiguriranog praga i izlažu statistiku snimki u memoriji i na datoteci
Višekratno upotrebljivi elementi rasporeda podržavaju mjerenje bez nuspojava, verificirane podijeljene glave i vlasničke nastavke preljeva za odlomke, retke, kontejnere i prilagođeni sadržaj; deklarativni pozivi stranica sastavljaju pozadine, zaglavlja, sadržaj dokumenta, podnožja i prednje planove u stabilnom redoslijedu, dok neograničeni izvještaji zadržavaju stadiranje stranica podržano datotekom, ograničenja odlomaka, ograničenu dijagnostiku, semantičke pomoćnike i upravljanje bidi smjerom
Renderiranje učitanih stranica izvršava obojene i neobojene uzorke popločavanja plus aksijalna, radijalna, slobodna i rešetkasta Gouraud, Coons patch i tenzorsko-produktna patch sjenčanja za ispune i poteze, poštuje matrice uzoraka u zadanom koordinatnom sustavu roditeljskog sadržaja, podržava sva tri tipa popločavanja i predznake koraka, izolira put svake ćelije, primjenjuje neobojene osnovne nijanse na operacije ispune i poteza te ograničava rekurzivnu dubinu uzoraka, izvršavanje pločica, dekodiranje mreža i adaptivnu teturizaciju za neprijateljske resurse
Produkcijski bitmap, izravni DC, Form i repriza popisa prikaza sada dijele jedan interpreter tokena sadržaja s otkazivanjem po operatoru; kompajlirani popisi prikaza predmemoriraju indekse operatora za reprizu bez skeniranja operanda i izlažu broj naredbi kroz THPDFPageDisplayList.OperatorCount i THPDFDisplayListInfo.OperatorCount, dok renderer zadržava svoje potpuno stanje grafike i resursa
Izolirane i knockout grupe prozirnosti renderiraju kroz ograničene pločice od 768 piksela s apsolutnom kontinuitetom koordinata uređaja, alpha i meko-masknim pohranom lokalnom za pločicu, dekodiranjem i tokenizacijom Oblika u jednom prolazu, determinističkim vraćanjem stanja ugniježđenih grupa i statistikom vršnog radnog skupa dostupnom kroz GetLastTransparencyGroupTileStats
Neobavezno overprint dokazivanje čuva procesne ploče koje bojanje ne imenuje, primjenjuje /OPM 1 zaštitu nul-komponenti za DeviceCMYK, tretira DeviceGray kao crnu procesnu ploču i spaja spot nijanse Separation i DeviceN kroz njihove alternativne transformacije boja
Ponovljene Type 3 glife ponovno koriste ograničene CharProc popise prikaza ključane po fontu, glifi, linearnoj matrici i stanju boja, izbjegavajući ponovno dekodiranje i tokenizaciju tokova uz očuvanje translacije, isječkanja, ugniježđenih resursa, pravila boja d0/d1 i ograničenja rekurzije
Progresivne sesije učitanih stranica dekodiraju podobne progresivne DCTDecode slike jedan scan po ograničenoj nastavku za ranije vidljive preglede, izlažu brojače scanova i slika kroz THPDFLoadedPageRenderSession i pružaju otkazive THPDFProgressiveJPEGScanEvent obavijesti uz zadržavanje rezerve potpune slike za nepodržano stanje bojanja ili neuspjehe dekodiranja
Progresivne sesije regija alociraju samo zatraženi prozor korisničkog prostora, zadržavaju stanje grafike i teksta kroz ograničene nastavke, koriste konzervativne granice popisa prikaza za odbacivanje nepovezanih puteva, teksta, slika, Oblika i sjenčanja te izlažu brojače vidljivog i odbačenog bojanja za telemetriju
Dekodiranje JPEG 2000 validira pojedinačne pločice kodnog toka, spaja rekonstrukciju izvorne regije i razlučivosti interesa te istodobno dekodira neovisne vidljive pločice s privatnim stanje kodeka, otkazivanjem, CPU i korisničkim ograničenjima radnika, determinističkom kompozicijom i automatskim vraćanjem proračuna vršne memorije
Pogoci predmemorije učitanih slika sada vraćaju nepromjenjive dekodirane bitmap ručice s brojanjem referenci koje prežive izbacivanje i uništenje dokumenta, podržavaju nitno-sigurno izravno crtanje, čuvaju izolirane promjenjive kopije na zahtjev i uklanjaju ponovljene kopije piksela iz toplih putanja renderera
Paralelno renderiranje učitanih stranica sada preklapa kompajliranje popisa prikaza s reprodukcijom kroz dinamički uravnotežene radnike, kompajlira nepovezane stranice izvan brave predmemorije, započinje izlaz prije kompajliranja potpunog skupa ulaza, čuva redoslijed ulaza i izvještava o istodobnosti faza, upotrebi predmemorije, dovršenju i latenciji kroz THPDFParallelRenderPipelineInfo; RenderLoadedPagesParallelOrdered dodaje callbacke pozivateljeve niti s ograničenim redom dovršenih bitmapa, povratnim pritiskom uređanog prozora, suradničkim otkazivanjem callbackova i posuđenim životnim vijekovima bitmapa za poslove čiji potpuni rasterski izlaz ne smije ostati rezidentan
Oba paralelna API-ja stranica sada koriste dispečer vršne memorije za cijeli proces da smanje zatražene radnike iz konzervativnih procjena stranica, rezerviraju svaku zatraženu stranicu, pošteno odgađaju rad pod pritiskom i izvještavaju o istodobnosti izvedenoj iz memorije, vršnim rezerviranim bajtovima, prijemima, kašnjenjima i vremenu čekanja; uređani callbackovi drže izlazne rezervacije aktivnima do oslobađanja bitmape tako da red čekanja rastera i aktivni radnici dijele jedan proračun
RenderLoadedPageTilesParallel i RenderLoadedPageBandsParallel tokovno prenose jednu stranicu kroz izolirane radnike s dostavom pločica po retcima ili traka od vrha do dna, posuđenim životnim vijekovima bitmapa, suradničkim otkazivanjem, memorijom u letu pod kontrolom pozivatelja i ograničenom nepromjenjivom predmemorijom za tokene sekvenci glifa Type 3 i polutonske pragove ekrane
SaveLoadedPageToPng, SaveLoadedPageToPngStream, SaveLoadedPagesToTiffBanded i SaveLoadedPagesToTiffStreamBanded napajaju isti renderer traka u tokovne PNG ili TIFF enkodere, ispisujući komprimirane retke bez potpunog framebuffera i izvještavajući telemetriju traka, redaka, radnika, memorije, izlaza, vremena i otkazivanja
Priključivi pozadinski sustavi renderiranja učitanih stranica primaju kompajlirane popise prikaza i pristup resursima dokumenta, oglašavaju sposobnosti istodobnosti i upravljanja bojama, sudjeluju u sinkronom i paralelnom renderiranju, poništavaju zastarjele rasterske predmemorije pri zamjeni i izlažu determinističku statistiku neuspjeha, rezerve i izvršavanja; ugrađeni izvorni GDI pozadinski sustav čuva postojeći izlaz bez deklariranja ubrzanja uređaja
Prefetč učitanih stranica sada kompajlira i renderira izvan brave predmemorije sa suradničkim kontrolnim točkama otkazivanja, odmah ustupa mjesto prednjem renderiranju stranica i izvještava napredak zahtjeva, upotrebu predmemorije, neuspjehe, brojače preuzimanja i latenciju otkazivanja kroz THPDFLoadedPagePrefetchInfo
Validacija grafa segmenata JBIG2-a sada provjerava i slikovne i globalne tokove prije izvornog ili vanjskog dekodiranja, odbija deformirane ovisnosti i nevažeću ugrađenu organizaciju unutar eksplicitnih proračuna segmenata, grana, dubine i simbola te sprječava ulazak nevažećih dijeljenih rječnika u predmemoriju globala
Serije JBIG2 kodiranja sada treniraju simbole kroz potpuni skup stranica kroz vanjski statični pozadinski sustav, dijele jedan globalni rječnik kroz svaki image XObject, sažimaju točno duplicirane stranice, vraćaju se na izvorni akumulator kada je dopušteno i objavljuju telemetriju pozadinskog sustava, veličine, simbola i proračuna
ICC-om poduprto vektorsko i slikovno renderiranje primjenjuje potpune cjevovode boja izvora, provjere, izlaza i sRGB s odabirljivim namjerom renderiranja i kompenzacijom crne točke, dok nitno-sigurna ograničena LRU predmemorija ponovno koristi transformacije kroz instance dokumenata i renderera
Rekompresija učitanih slika i downsampling efektivnog DPI-ja zadržavaju kalibrirane definicije izlaza, dok poravnavanje prozirnosti ispisuje kalibrirani RGB i čuva stranice Separation ili DeviceN kao vektorski sadržaj umjesto odbacivanja identiteta spot boja
Učitane AcroForm izračun i validacijske akcije mogu koristiti ograničeni tipizirani podskup izraza s booleanima, brojevima, stringovima, null, undefined, poljima, uvjetnim i kratko-spajajućim operatorima, determinističkim UTC datumima i dopuštenim string, poljnim, konverzijskim i Math pomoćnicima, dok nepodržano aktivno skriptiranje otkazuje zatvoreno bez pokretanja JavaScript motora
Neobavezne QuickJS veze izvedbenog okruženja izvršavaju širi JavaScript pod kontrolom aplikacije kroz statične objekte ili ABI-neutralan most DLL na Win32 i Win64, s konfigurabilnim ograničenjima memorije, stoga, skripte, vremena i prekida plus eksplicitnom semantikom statusa i oporavka
XFA skriptiranje obrazaca proširuje ograničeni FormCalc uvjetnom logikom, ponovljenim numeričkim poljima i validiranim callbackovima instanci, dok eksplicitno omogućena QuickJS sandbox dodaje potpuni tok kontrole i izvorna tipizirana polja bez izlaganja objekata datoteka, procesa, preglednika ili mreže; interaktivno izvedbeno okruženje dinamičkog XFA-a dodaje host-neutralan fokus, Unicode uređivanje, testiranje pogodaka, validaciju i izračun svjestan instanci, atomsko vraćanje i ograničeno prelijevanje bez poravnavanja
SanitiseLoadedDocument primjenjuje politike samo-JavaScript, aktivnog sadržaja ili strogi nepouzdani dokument na učitane PDF-ove, uklanja nedostižne objekte tereta, sabija žive brojeve objekata i sigurno preuređuje na mjestu kroz atomsku zamjenu datoteke
Preflight JSON, HTML i veraPDF-stil nalazi izlažu stabilne identifikatore pravila s imenskim prostorima i strukturirane PDF lokacije s logičkim opsegom, putanjom, ključem i točnim koordinatama objekta, stranice ili bajta kada su dostupne, dok tekstualna i CSV kompatibilnost ostaju nepromijenjene
Ponovno upotrebljive validacijske politike sada spajaju strukturni preflight sa strogim ili WTPDF zahtjevima prijema, izvlače kanoničke metapodatke deklaracija i tvrdnji, izvršavaju uređane serije datoteka kroz ograničena ograničenja radnika i reda, čuvaju greške svjesne izvora te nude načine inspect, add-missing i synchronize za popravak XMP-a neovisno o strukturnom popravku PDF-a
Prijem Factur-X i ZUGFeRD sada unakrsno provjerava MIME tip primarne priloge fakture i nazive FileSpec-a naspram registracija EmbeddedFiles i Catalog AF, izlaže dekodirani MIME tip i URI XMP imenskog prostora te odbija nepodudarne XMP tipove dokumenta ili imenske prostore proširenja
Ugrađena validacija poslovnih pravila e-računa izvršava sve Schematron provjere specifične za profil s pregledanom XPath 2 kompatibilnošću, vanjskim bazama kodova, stabilnim identifikatorima pravila, eksplicitnim greškama vrednovanja, sigurnim XML parsiranjem i kombiniranim presudama koje otkazuju zatvoreno
PDF 2.0 izlaz sada podržava identifikaciju i validaciju PDF/A-4, PDF/A-4e, PDF/A-4f, PDF/UA-2, PDF/X-6, PDF/X-6p i PDF/X-6n, uključujući revizijama svjesni XMP razriješen po URI-ju imenskog prostora, transakcijski popravak PDF/A-4 za sigurno normaliziranje zaglavlja, trailera, metapodataka, Kataloga i prezentacije s bajt-točnim vraćanjem i očuvanim sadržajem stranica, odabirljiva pravila PDF/X-6 ISO 15930-9:2020 i razriješene errate, stvarne provjere ICC zaglavlja i kanala, output intente dokumenta i stranica, stvarnu oslikanu boju i overprint kroz polja sadržaja, ugniježđene oblike, uzorke popločavanja i sjenčanja, slike, maske slika, sjenčanja, glife Type 3, meke maske i izglede napomena, naslijeđeno stanje grafike i prozirnosti, kombiniranu kompoziciju ispune i poteza, odnose CIDFont i CMap, ograničeni rad dekodiranih bajtova i tokena sadržaja, strukturne elemente svjesne imenskih prostora, provjere metapodataka i stringova dokumenta, neobavezni sadržaj, fizičko vlasništvo nad napomenama, semantiku obrazaca, strukturne destinacije, konture, ugniježđene oznake stranica, autoriranje pridruženih datoteka, naslijeđene produkcijske kutije stranica, dijagnostiku svjesnu klauzula s podrijetlom skupa pravila, automatsku validaciju generiranja koja otkazuje zatvoreno i transakcijski popravak PDF/UA-2 za imenske prostore, atribute, liste, tablice, Ruby, Warichu, izgovor, alternativni tekst, nasljeđivanje jezika, redoslijed naslova i Artifact oznake
Tablice označenog PDF 2.0 primaju ograničeno širenje mreže, provjere presjeka i grupa redaka, asocijaciju zaglavlja lokalnu za tablicu i otkrivanje ciklusa, dok liste primaju potpune provjere numeriranja i lanca nastavka; točni slijedovi Ruby i Warichu provode se, a aplikacije mogu pisati naznake izgovora po elementu ili uređane ugrađene PLS leksikone kroz SetStructurePronunciation i AddPronunciationLexicon
Ciklus v2.119.32-51 dodao je produkcijsko oblikovanje arapskog / perzijskog / urdua (obavezna ligatura LAM-ALEF, 9 slova Arabic Presentation Forms-A), motor GSUB zamjene s potpunim značajkama koji pokriva svaki LookupType 1-8 s odabirom Script / LangSys i zatvaranjem TTF podskupljača za zamjenske glife, podršku za XFA (XML Forms Architecture) kontejnere (AddXFAPacket / ClearXFAPackets / XFAPacketCount), obitelj okidača polja AcroForma /AA /K + /F + /V + /C, registraciju više-Unicode fontova /DR putem RegisterAcroFormFont, postavljače atributa pristupačnosti strukturnih elemenata (/Lang / /E / /T) s enumeracijom standardnih strukturnih tipova Table 333 i tipiziranim preopterećenjem AddStructureElement te svojstva sekvenci označenog sadržaja na BeginTaggedContent-u
Ciklus v2.119.52-68 zatvorio je cjevovod automatskog oblikovanja Faze 8 i proširio pokrivenost skripti: Arabic Extended-A (uključujući U+0750-077F Arabic Supplement i U+08A0-08FF Arabic Extended-A) i perzijski / urdu Form-B prošireni su na potpunu tablicu spajajućih klasa U+0672-06D5 plus 26 novih Forms-A mapiranja, s postprolaskom savijanja za LAM-ALEF, parove YEH-HAMZA + samoglasnik (8 ligatura u U+FBEA-FBFB), samostalnu ligaturu Allah (U+FDF2) i frazu Bismillah od 22 kodne točke (U+FDFD). Novo neobavezno svojstvo ShapingFeatures + enumeracija THPDFShapingFeature (sfArabicGSUB / sfStandardLigatures / sfContextualLigatures / sfContextualAlternates / sfIndicShaping) natjerało je proizvođača da automatski ispisuje GSUB-om vođene zamjene rlig / liga / clig / rclt specifične za font, uz latinske Standard Ligatures (ff / fi / fl / ffi / ffl / ſt / st putem U+FB00-FB06) i devanagarsko Indic preuređenje slogova (Repha + I-matra ispred osnove) koje se pridružuje istom cjevovodu. Nove metode sposobnosti oblikovanja za sirijski (GetSyriacJoiningClass / GetSyriacPosition), mongolski (GetMongolianJoiningClass / GetMongolianPosition) i devanagari (GetDevanagariCategory / ApplyDevanagariReorder) dopuštaju pozivateljima vođenje složenih ne-arapskih skripti kroz isti GSUB motor. GetCodepointAdvance izlaže predmemoriranu em-frakciju /W-a za izračune prelamanja, a AssignSyntheticCodepointForGID / GetSyntheticCodepointForGID dopuštaju proizvođaču ispis bilo kojeg zamjenskog GID-a GSUB-a (oblici klastera devanagarija, stilističke alternative, CJK sekvence varijacija) kroz kodne točke Privatne uporabe s potpunom integracijom /CIDToGIDMap + /ToUnicode + /W. Kumulativni ToUnicode CMap sada isporučuje 35 unosa obrnutog mapiranja ligatura (8 LAM-ALEF + 18 obitelji YEH-HAMZA + 1 Allah + 1 Bismillah + 7 latinskih) tako da kopiranje / lijepljenje čitača potrošača proizvodi izvorne kodne točke. Skeleti dokumentacije ChangeLog-a sada se isporučuju na 11 jezika (EN / CN / AR / DE / ES / FR / IT / JA / KO / PT / RU) s UI odabira jezika; ograničenje zadržavanja ChangeLog-a podignuto je s 250 na 500 sekcija verzija
Ciklus v2.152-v2.190 izgradio je potpuni motor pozicioniranja OpenType GPOS-a i proširio pokrivenost složenih skripti. Neobavezne opcije oblikovanja sada primjenjuju kerning samog fonta (parni, kontekstualni i s desna na lijevo), pozicioniranje spajajućih znakova (mark-to-base, mark-to-mark i mark-to-ligature po komponenti), kurzivne sidra povezivanja i vertikalni kerning za vertikalni tekst, sve ispisano standardnim PDF tekstualnim operatorima tako da bilo koji čitač renderira isti rezultat. Produkcijsko oblikovanje sada pokriva arapski (uključujući blokove Supplement, Extended-A i Extended-B), sirijski, mongolski, N'Ko, Adlam, Hanifi Rohingya, tibetsko slježivanje suglasnika, devanagari i ostale indičke skripte kroz lanac Indic značajki fonta, javanski, tajlandski i laoški redoslijed znakova, hebrejski redoslijed samoglasničkih točaka, kmerski, myanmar, Tai Viet i Meetei Mayek. Obitelj neobaveznih OpenType tipografskih značajki - standardne, diskrecijske i povijesne ligature, kapitelice, oldstyle / lining / proportional / tabular brojke, superskripte, subskripte, redni, razlomci, znanstveni indeksi, brojitelji, nazivnici, stilističke i kontekstualne alternative, lokalizirani oblici, oblici osjetljivi na velika i mala slova, precrtana nula i vertikalne alternative - može se primjenjivati automatski tijekom tekstualnog izlaza. Kopiranje, lijepljenje i pretraga teksta oporavljaju izvorne znakove kroz sav oblikovani izlaz, uključujući ligature i ulančane zamjene značajki. Izlaz fontova postao je i manji: ugrađeni programi fontova uvijek se Flate-kompresiraju, font korišten na više stranica ugrađuje se jednom po dokumentu, oznake podskupova izvode se deterministički za reprodukcibilan izlaz, a neobavezni kompaktni način piše plain-ASCII tekst sa standardnim fontovama kao neugrađeni WinAnsi tekst