PDFiumPas leidimo pastabos
Šis puslapis lokalizuotas lietuvių kalbai ir nekeičia API, failų pavadinimų bei literalinių reikšmių
PDFiumPas naudotojui matomų funkcijų, taisymų, peržiūros patobulinimų, dokumentų generavimo, PDF/A išvesties, atvaizdavimo ir dokumentacijos atnaujinimų versijų istorija
Paskutinis leidimas
- Naujausia versija: 2.57.0; Išleidimo data:
Version 2.57.0
Pridėta (Added)
TPdfThumbnailView.Orientationpalaiko vertikalius ir horizontalius miniatiūrų išdėstymus, išlaikydamas esamą vertikalią numatytąją reikšmęFirstVisiblePageIndex,LastVisiblePageIndexirEnsureCurrentPageVisibleatskleidžia ir valdo miniatiūrų peržiūros langą naudojant vienetu pagrįstus puslapių indeksus
Pakeista (Changed)
CurrentPageIndexkeitimas dabar patraukia pasirinktą miniatiūrą į rodinį abiem kryptimis- Delphi, Lazarus ir C++Builder testai dabar apima krypties numatytąsias reikšmes, perjungimą, matomus diapazonus ir pasirinkto puslapio matomumą
TPdf.AboutInfo, Lazarus paketo metaduomenys ir diegimo programos metaduomenys dabar nuosekliai praneša Version 2.57.0
Version 2.56.2
Pakeista (Changed)
HighlightSearchText,AddSearchTextHighlightirClearHighlightdabar paverčia negaliojančiais tik tuos įrenginio stačiakampius, kurie buvo pridėti arba pašalinti paieškos diapazonams, vietoj to, kad perpieštų visą peržiūros programą- Pakeičiant paryškinimus tais pačiais atitikmenimis arba pridedant dubliuotus atitikmenis, nebesuplanuoja nereikalingo perpiešimo
- Delphi, Lazarus ir C++Builder testai dabar apima ribotą negaliojimą, idempotentinius atnaujinimus, išvalymą ir neaktyvaus rodinio saugumą
TPdf.AboutInfo, Lazarus paketo metaduomenys ir diegimo programos metaduomenys dabar nuosekliai praneša Version 2.56.2
Version 2.56.1
Pakeista (Changed)
TPdfThumbnailViewdabar pakartotinai naudoja atvaizduotas rastrines diagramas puslapiams, kurie išlieka matomi tarp perpiešimų ir gretimų slinkimo pozicijų- Podėlis išlaiko tik dabartinį matomą puslapių diapazoną ir tiksliai atlaisvina įrašus, kai puslapiai palieka šį diapazoną, kai priskirtas dokumentas pasikeičia arba kai pasikeičia miniatiūrų matmenys
- Delphi, Lazarus ir C++Builder testai dabar apima podėlio pakartotinį naudojimą, peržiūros lango genėjimą, dydžio negaliojimą, dokumento pakeitimą ir komponento sunaikinimą
TPdf.AboutInfo, Lazarus paketo metaduomenys ir diegimo programos metaduomenys dabar nuosekliai praneša Version 2.56.1
Version 2.56.0
Pridėta (Added)
TPdfView.CutSelectedFormTextToClipboardirTPdfView.PasteFormTextFromClipboardsuteikia Unicode iškarpinės redagavimą sufokusuotam redaguojamam formos valdikliui
Pakeista (Changed)
- Sufokusuoti formų rengyklės dabar apdoroja standartinius copy, cut, paste ir select-all klaviatūros sparčiuosius klavišus prieš perduodami teksto įvestį į PDFium
- Cut ir paste atmeta tik skaitomus laukus ir seansus be formos užpildymo ar modifikavimo leidimo, o cut sėkmingai nukopijuoja prieš pašalindamas pasirinktą tekstą
- Delphi, Lazarus ir C++Builder testai dabar apima be-focus, sparčiojo-klavišo pakartotinio naudojimo ir tik skaitymo atmetimo elgseną
TPdf.AboutInfo, Lazarus paketo metaduomenys ir diegimo programos metaduomenys dabar nuosekliai praneša Version 2.56.0
Version 2.55.0
Pridėta (Added)
TPdfView.AddSearchTextHighlightprideda unikalius atitikmenis kitai paieškos sąvokai prie dabartinio puslapio perdangos, leisdamas kelioms užklausoms išlikti paryškintoms kartu
Pakeista (Changed)
HighlightSearchTextišlieka pakeitimo įėjimo tašku ir dabar dalijasi priedų skeneriu, o dubliuoti simbolių diapazonai yra ignoruojami, oClearHighlightpašalina visą sukauptą rinkinį- Delphi, Lazarus ir C++Builder testai dabar apima skirtingų užklausų kaupimą ir dubliuotų diapazonų slopinimą
TPdf.AboutInfo, Lazarus paketo metaduomenys ir diegimo programos metaduomenys dabar nuosekliai praneša Version 2.55.0
Version 2.54.0
Pridėta (Added)
TPdfdabar atskleidžia išsamius puslapio objektų momentines kopijas, paketinius stiliaus atnaujinimus, afiniuosius objektų transformacijas, kelio segmentus, iškirpimo kelius ir Form XObject vaikus- Simbolių tikrinimas dabar apima užpildymo ir brūkšnio spalvas, šrifto pavadinimą ir vėliavėles, laisvas glyph ribas, efektyvias matricas, teksto objektų rankenas ir simbolio-į-tekstą indekso konversiją
- Pastabos dabar round-trip krašto geometriją ir normal, rollover bei down išvaizdos srautus
- Nauji neapdoroti ir iškoduoti miniatiūrų prieigos metodai, puslapio turinio ir pastabų transformacijos bei
RenderPageWithMatrixsuteikia tiesioginius pažangius atvaizdavimo ir redagavimo kelius
Pakeista (Changed)
- Puslapio objekto stiliaus pokyčiai dabar gali būti patvirtinti kaip vienas paketas, kad PDFium regeneruoja puslapio turinį tik kartą
- Matricos atvaizdavimas naudoja esamą zero-copy rastrinės diagramos kelią, kai paskirties rastrinės diagramos išdėstymas yra suderinamas
Version 2.53.1
Pataisyta (Fixed)
- Vidinis kinų Copy meniu antraštė dabar naudoja nuo kodavimo nepriklausomus Unicode kodo taškus ir teisingai rodoma Lazarus.builduose
- Vyresni Delphi įrankių grandinės gali kompiliuoti
FPdfAsync, kai jųWinapi.Windowsmodulis praleidžiaGetTickCount64deklaraciją
Version 2.53.0
Pridėta (Added)
- Naujas
Tests.ApiCoveragetestavimo rinkinys, apimantis viešuosius TPdf API, kurie anksčiau neturėjo jokio end-to-end testų padengimo:GetPageBox/SetPageBox(MediaBox/CropBox skaitymas/rašymas, trūkstamos-dėžutės klaidos ir išsaugojimo round-trip),FlattenPage/FlattenAllPages(grąžinamoji reikšmė ir puslapių skaičiaus išlaikymas),GenerateFormAppearances(no-op ne formos dokumentuose),SaveAsEncrypted/SaveAsEncryptedToStream(AES-256 su slaptažodžio round-trip — patikrina, kad šifruotas failas atsisako atidaryti be slaptažodžio ir atidaromas su juo),DeletePageribų tikrinimas (0 puslapis ir už diapazono iškeliaEPdfError), bei v2.38.0 įvestosHasContents/HasAuthorpastabų sargybinių reikšmės (patikrinant, kadDefault(TPdfAnnotation)palieka jasFalse)
Version 2.52.0
Pridėta (Added)
TPdfView.CopySelectedFormTextToClipboardkopijuoja teksto pasirinkimą sufokusoto AcroForm valdiklio viduje į Windows iškarpinę kaipCF_UNICODETEXT
Pakeista (Changed)
- Puslapio teksto ir sufokusuotos formos kopijavimo operacijos dabar dalijasi tuo pačiu gynybiniu Unicode iškarpinės rašytuvu ir palieka iškarpinę nepakeistą, kai jų pasirinkimas tuščias
- Delphi, Lazarus ir C++Builder testai dabar apima neaktyvius arba nefokusuotus formos kopijavimo iškvietimus ir sufokusuotos formos pasirinkimo round-trip per Windows iškarpinę
TPdf.AboutInfo, Lazarus paketo metaduomenys ir diegimo programos metaduomenys dabar nuosekliai praneša Version 2.52.0
Version 2.51.0
Pridėta (Added)
TPdfView.SelectLineAtpasirenka vaizdinę teksto eilutę, apimančią vienetu pagrįstą puslapį ir nuliu pagrįstą simbolių indeksą, nereikalaudama pelės įvesties
Pakeista (Changed)
- Programinis eilutės pasirinkimas, trigubu paspaudimu pasirinkimas ir
Shift+HomearbaShift+Enddabar dalijasi vienu simbolių-langeliais pagrįstu eilutės ribos modeliu - Delphi, Lazarus ir C++Builder testai dabar apima stabilų eilutės pasirinkimą ir netinkamus puslapių arba simbolių indeksus
TPdf.AboutInfo, Lazarus paketo metaduomenys ir diegimo programos metaduomenys dabar nuosekliai praneša Version 2.51.0
Version 2.50.0
Pridėta (Added)
TPdf.LoadDocumentdabar priima nuliu pagrįstąIndexirCountlangą įTBytesbuferį, leisdamas įterptiems PDF įkelti nepriskiriant laikino baitų-masyvo segmento
Pakeista (Changed)
- Baitų-diapazono įkėlimas atmeta neigiamus arba už-diapazonio langus prieš keičiant dokumento būseną ir išlaiko esamas buferizuotas ir pasiskolinto-buferio gyvavimo trukmės parinktis
- Delphi, Lazarus ir C++Builder testai dabar apima įterptų PDF langus ir netinkamus baitų-diapazono argumentus
TPdf.AboutInfo, Lazarus paketo metaduomenys ir diegimo programos metaduomenys dabar nuosekliai praneša Version 2.50.0
Version 2.49.1
Pridėta (Added)
TPdfView.FitModedabar palaikopfmFitHeightesamam puslapiui pritaikyti prie matomo peržiūros lango aukščio, leidžiant horizontalų slinkimą prireikus
Pataisyta (Fixed)
- Pritaikymo režimai dabar konverguoja po to, kai slankjuostės matomumo pasikeitimas pakeičia kliento sritį, išlaikydamas fit-page, fit-width ir fit-height rezultatus nuoseklius tarp VCL ir LCL
- Delphi, Lazarus ir C++Builder peržiūros testai dabar apima
pfmFitHeightpasirinkimą ir išvardijimo keliones atgal TPdf.AboutInfo, Lazarus paketo metaduomenys ir diegimo programos metaduomenys dabar nuosekliai praneša Version 2.49.1
Version 2.49.0
Pridėta (Added)
- Viešas PDFium susiejimo paviršius dabar apima visas 470 eksportuotų funkcijų peržiūrėtose antraštėse, įskaitant priedų aprašymų prieigą per
FPDFAttachment_SetDescriptionirFPDFAttachment_GetDescription TPdfdabar atskleidžia priedų aprašymus, kryžinių nuorodų tinkamumą, priekabos pabaigos poslinkius, saugumo tvarkyklės reviziją, 64 bitų atminties įkėlimą, parašo baitų diapazonus, saityno nuorodų teksto diapazonus ir išplėstinius vaizdo duomenų, filtro, metaduomenų ir ICC profilio momentines kopijas- Formų pagelbinkliai dabar palaiko natyvų lauko fokusavimą, sufokusuotų pasirinkimo parinkčių užklausas ir atnaujinimus, pelės ratuko persiuntimą, rašomus rašalo brūkšnius ir formų perdangas po progresinio atvaizdavimo
Pakeista (Changed)
FormFieldCount, formos laukų indeksai ir tabuliatoriaus tvarka dabar aprašo tik valdiklių anotacijas vietoj to, kad įtrauktų nesusijusias puslapio anotacijas- Be galvos
TPdfpuslapiai dabar įeina ir išeina iš formos užpildymo puslapio gyvavimo ciklo, kad natyvus fokusavimas ir sufokusuotų laukų API veiktų beTPdfView - Priedų aprašymų eksportas yra apribotas galimybėmis, kad programos, naudojančios senesnę PDFium buildą, vis dar galėtų įkelti biblioteką ir aptikti neprieinamą funkciją
Pataisyta (Fixed)
- Progresinis puslapio atvaizdavimas dabar piešia formos valdiklius, kai formos užpildymas įjungtas
- Delphi, Lazarus ir C++Builder testai dabar apima naują dokumentų diagnostiką, priedų aprašymus, rašalo kelius, formos elgseną, parašo baitų diapazonus, saityno nuorodų diapazonus ir vaizdo metaduomenis
TPdf.AboutInfo, Lazarus paketo metaduomenys ir diegimo programos metaduomenys dabar nuosekliai praneša Version 2.49.0
Version 2.48.0
Pridėta (Added)
TPdfMatrixdabar atskleidžia gamyklias, klonavimą ir priskyrimą, baigtinės būsenos ir invertuojamumo diagnostiką, tolerancijomis pagrįstą palyginimą, transliacijos prieigą, determinanto ataskaitą ir afininį skaidymą- Prepended kompozicija, į atramos tašką orientuotas sukimas, mastelio keitimas, pasvirimas ir apvertimai, plius stretch, contain ir cover stačiakampių atvaizdavimas palaiko vietinės erdvės ir pritaikytų išdėstymų darbo eigas be rankinio koeficientų aritmetikos
- Nemutuojanti atvirkštinė prieiga, atvirkštinis taškų atvaizdavimas, vektorių ir keturkampių transformacijos, dinaminiai taškų ir stačiakampių paketai, vietoje variantai ir vienos eilutės transformuotos ribos išplečia daugkartinai naudojamą geometrijos paviršių
Pakeista (Changed)
- Transliacija, mastelio keitimas ir ašių apvertimai dabar atnaujina tik paveiktus koeficientus vietoj maršruto per bendrą afininį dauginimą
- Stačiakampio transformacija normalizuoja savo įvestį vieną kartą, naudoja specializuotą tikslų ašių lygiavimo kelią, kai įmanoma, ir apskaičiuoja bendras pasuktas ribas be laikinų taškų įrašų
- Taškų ir stačiakampių paketų transformacijos paskiria vieną rezultatų masyvą arba pakartotinai naudoja iškvietėjo saugyklą, o transformuotos taškų ribos kaupiamos vienoje eilutėje be tarpinio masyvo
Pataisyta (Fixed)
- Stačiakampių atvaizdavimas atmeta nulinio dydžio, ne begalinius ir
Singleperpildančius rezultatus prieš paskelbiant nenaudojamą matricą - Delphi, Lazarus ir C++Builder testai dabar patikrina kompozicijos tvarką, atramos taško invariantus, atvirkštines keliones atgal, pritaikytus stačiakampius, skaidymą ir masinės geometrijos elgseną
TPdf.AboutInfo, Lazarus paketo metaduomenys ir diegimo programos metaduomenys dabar nuosekliai praneša Version 2.48.0
Version 2.47.0
Pridėta (Added)
FPdfAsyncdabar teikia struktūrizuotas atšaukimo priežastis ir pranešimus, pašalinamus atšaukimo registracijas, laiko limitu grįstus šaltinius, atšaukimo laukimą ir atomines try-cancel operacijas per išplėstines sąsajas, kurios išsaugo originalų APITPdfFuture<T>.RunExprideda konfigūruojamą atsakymų išsiuntimą ir darbuotojo prioritetą, o rezultatų vokai atskleidžia operacijų ID, reikšmių tinkamumą, išimčių klasių pavadinimus, užbaigimo laiko matavimą ir daugkartinai naudojamus užbaigimo pagelbinkliusTPdfAsyncExecutorprideda daugkartinai naudojamą fiksuotą darbuotojų telkinį su keturiais FIFO prioriteto takeliais, pasirinktiną ribinės eilės atvirkštinį slėgimą, atšaukiamus užduočių rankenas, laiko limitą žinantį laukimą, užduočių momentines kopijas, agreguotą statistiką ir grakštų išjungimą
Pakeista (Changed)
- Pasikartojančios asinchroninės užduotys gali pakartotinai naudoti darbuotojų gijas ir O(1) eilės operacijas, užuot kūrusios giją kiekvienai užduočiai, o sinchronizuotas užbaigimas išlieka prieinamas UI priegloboms
- Vykdytojo ir future gedimai išsaugo išimties klasės ir pranešimo diagnostiką, atšaukimas išsaugo savo originalią priežastį, o atšaukimo išimtys lieka izoliuotos nuo darbuotojo gyvavimo ciklo ir išjungimo
- Delphi, Lazarus ir C++Builder testai dabar apima išplėstinį atšaukimo, future metaduomenų, užduočių valdymo, atvirkštinio slėgimo, prioritetų rūšiavimo, statistikos, gedimų ir išjungimo paviršių
Pataisyta (Fixed)
- Gretimi atšaukimo savininkai dabar gauna deterministinį pirmojo rašytojo rezultatą, užuot pasikliovę atskira stebėjimo ir atšaukimo seka
- Pagrindinės gijos neaktyvumo laukimas apdoroja sinchronizuotas užduočių atsakymus, neleisdamas užbaigtam darbuotojui palikti vykdytojo visam laikui neaktyvų koordinuoto išjungimo metu
TPdf.AboutInfo, Lazarus paketo metaduomenys ir diegimo programos metaduomenys dabar nuosekliai praneša Version 2.47.0
Version 2.46.0
Pridėta (Added)
FPdfAsn1dabar atskleidžia identifikatorių klases, 64 bitų aukšto žymos numerio kodavimą ir dekodavimą, išanalizuotus TLV įrašus, nulio kopijavimo antrinių skaitytuvų langus, tipizuotus primityvius dekoderius bei turinio ar koduotų reikšmių riešutus- DER rašytojai dabar palaiko pilną beženklį 64 bitų INTEGER diapazoną, patikrintą savavališką INTEGER turinį, ENUMERATED, automatinį UTCTime ar GeneralizedTime pasirinkimą, application ir private žymas, daugiareikšmę SEQUENCE ir kanoniškai rūšiuotą SET OF išvestį
ValidateDergrąžina poslinkį žinančius tikrinimo klaidas, taikydamas konfigūruojamus lizdymo, mazgų skaičiaus, turinio ilgio, klaidų skaičiaus, šaknies ir pasirinktinio SET rūšiavimo limitus
Pakeista (Changed)
- DER sujungimas ir daugiareikšmė kompozicija naudoja vieną išvesties paskirstymą, rašytojo buferiai atskleidžia reserve, count, capacity ir nuosavybės perdavimo operacijas, o SET OF rūšiavimas dabar naudoja
O(n log n)suliejimo rūšiavimą - BOOLEAN, INTEGER, BIT STRING, OBJECT IDENTIFIER, NULL, UTF8String, PrintableString, IA5String, UTCTime ir GeneralizedTime reikšmės gauna kanoninės formos patikrinimus kodavimo, tipizuoto dekodavimo ar tikrinimo metu
- Lazarus vykdymo paketas dabar eksportuoja
FPdfAsn1, o Delphi, Lazarus ir C++Builder testų rinkiniai praktikuoja tą patį viešą DER paviršių
Pataisyta (Fixed)
- Kontekstiškai specifiniai žymos numeriai, didesni nei 30, nebebetrumpinami į žemo penkių bitų identifikatorių
- Blogai suformuoti aukšto žymos identifikatoriai, neminimalūs apibrėžti ilgiai, netinkamas UTF-8, nenulinis BIT STRING užpildas, netinkami laiko laukai, šakniniai elementai pabaigoje ir išteklių limitų pažeidimai atmetami deterministiškai
TPdf.AboutInfo, Lazarus paketo metaduomenys ir diegimo programos metaduomenys dabar nuosekliai praneša Version 2.46.0
Version 2.45.0
Pridėta (Added)
FPdfPreflightReportdabar priskiria Info, Warning ar Error sunkumą kiekvienai problemai ir atskleidžia sunkumo, būsenos, kategorijos, problemos kodo, peržvalgos, paieškos, suplokštinimo ir filtravimo API standarto ir ataskaitos lygiu- Priešskrydžio ataskaitos dabar eksportuoja SARIF 2.1.0, JUnit XML, NDJSON ir gimtąjį XML per atitinkančius
To*irSave*ToFilemetodus CI, automatizavimo ir srautinio perdavimo konvejeriams - Stabilūs SHA-256 ataskaitų pirštų atspaudai identifikuoja lygiavertiškus tikrinimo rezultatus nepriklausomai nuo šaltinio kelių ir generavimo laiko žymų
Pakeista (Changed)
- JSON, CSV, text, Markdown ir HTML ataskaitos dabar apima sunkumą ir išplėstinius būsenos santraukos; HTML prideda prieinamas lentelių antraštes ir būsenos santrauką
- Problemų ir standartų kolekcijų konstravimas naudoja geometrinį pajėgumo augimą, užklausų rezultatai yra iš anksto apibrėžto dydžio, JSON kaitos rašo į vieną ribotą išvesties buferį, o visi ataskaitų failai naudoja vieną tiesioginį UTF-8 rašytoją
- Problemų kategorijų santraukos naudoja deterministinį rūšiavimą, laiko žymos apima milisekundes, JSON neša
formatVersion: 2, o CSV langeliai neutralizuoja skaičiuoklės formules
Pataisyta (Fixed)
- JSON eksportas dabar išsaugo galiojančias papildomas Unicode poras ir pakeičia izoliuotus UTF-16 surogatinius kodo vienetus, užuot išleidęs blogai suformuotus skaliarinius duomenis
- HTML eksportas dabar pakeičia apostrofus, o filtruoti ataskaitos rodiniai turi nepriklausomus problemų masyvus, užuot dalijęsi kintama rezultatų saugykla
TPdf.AboutInfo, Lazarus paketo metaduomenys ir diegimo programos metaduomenys dabar nuosekliai praneša Version 2.45.0
Version 2.44.0
Pridėta (Added)
- Žymės ir paskirtys atskleidžia atverti būseną, palikuonių skaičių, veiksmų tikslus, paskirties rodinio režimus ir iki keturių rodinio parametrų
Metadata,GrantedPermissions,UserGrantedPermissions,HasPermissionirUserHasPermissionpateikia tipizuotas dokumento patikros momentines kopijas ir leidimų užklausasExtractThumbnail(PageNumber)atvaizduoja pageidaujamą puslapį nekeisdamas aktyvaus puslapio, o RFC 3161 laiko žymos rezultatai atskleidžia politiką, generavimo laiką ir nonce informaciją
Pakeista (Changed)
- Žymių, JavaScript, metaduomenų, paskirčių ir miniatiūrų keliai naudoja patvirtintus dviejų perėjimų buferius, geometrinį rinkinių augimą ir ciklams saugų kelių perėjimą
- Įrašymo galutinis apdorojimas išsprendžia aktyvų katalogą, puslapių medį ir atverti veiksmą per esamą xref reviziją, talpina dekoduotus objektų srautus ir skenuoja PDF žodynus su leksinėmis ribomis
- Bendras PDF analizavimas dabar reikalauja tikslių objektų antraščių, kartų, žodyno raktų, srautų ilgių, prediktorių geometrijos, sveikųjų skaičių rėžių bei komentarų, literalinių eilučių ir šešioliktainių eilučių ribų
- RFC 3161 atsako patikrinimas dabar susieja nonce ir SHA-256
messageImprint, reikalauja struktūriškai tinkamo pasirašytojo ir taiko griežtas DER ilgio, OID, INTEGER ir GeneralizedTime taisykles
Pataisyta (Fixed)
- Priedeliniai dokumentai nebeatsirenka neaktyvių dvipusų katalogų ar neteisingai suformatuotų nuorodų priesagų pridedant numatytąjį atverti veiksmą
- Laiko žymos priežodžiai su ilgojo pavidalo DER ilgiais išlaiko visą užkoduotą priežodį, o neteisingai išdėstyti CMS pasirenkamieji laukai ir tušti pasirašytojų rinkiniai atmetami
- Švarios Delphi paklotės dabar rašo PAdES nonce sėklos laukus per lygiuotėms saugius baitų kopijimus ir perduoda XFA atsako baitus su tiksliu vietiniu rodyklės tipu
Version 2.43.0
Pridėta (Added)
- XFDF laukų ir anotacijų įrašai dabar atskleidžia buvimo požymius, kurie atskiria praleistą XML reikšmę nuo eksplicitiškai tuščios reikšmės
Pakeista (Changed)
- XFDF importas priima vardų erdvės priešdėlio elementus ir atributus, mišrų tekstinį ir CDATA turinį, esencių nuorodas ir tarpų reikšmingas reikšmes, atmesdamas neteisingus Unicode skaliarų nuorodas
- XFDF importas ir eksportas naudoja indeksuotą laukų atitikimą ir apribotus geometrinius buferius, pagerindamas pralaidumą ir didžiausią paskirstymo elgseną giliai įdėtoms formoms, didelioms anotacijų kolekcijoms, rašalojimų sąrašams, viršūnėms ir žymėjimo keturikampiams
- PDF/A ir PDF/UA patikra naudoja apribotą didėjimą dideliems puslapių, srautų, struktūros pavadinimų ir RoleMap rinkiniams; PDF/UA RoleMap išsprendimas dabar seka tiesioginius masyvus bei tikslios kartos netiesioginius pavadinimo ar masyvo objektus
Pataisyta (Fixed)
- XFDF pakartotiniai ciklai dabar išlaiko giliai įdėtus laukų kelius, eksplicitiškai tuščias laukų reikšmes, eksplicitiškai tuščią anotacijų turinį bei skirtumą tarp nėra ir tuščia turinio
- Neteisingi atminties buferių įkėlimai ir už rėžių esančios puslapių priskyrimai atmetami nepaliekant dalinės dokumento ar puslapio būsenos, o nesėkmingas vietinis puslapio įkėlimas išlaiko anksčiau aktyvų puslapį
- Dideli žymimojo turinio identifikatoriai ir parašo metaduomenų buferiai yra apriboti ir patvirtinti prieš paskirstymą ar vietinę prieigą
Version 2.42.0
Pridėta (Added)
TPdfMatrixdabar pateikiaInvert,TryInvert,TransformPointirTransformRectkoordinačių susiejimui, pataikymo tikrinimui, normalizuotoms riboms ir eksplicitiškam singuliariosios matricos apdorojimuiTPdf.WrapTextgavoBreakLongWordsperkrovimą, kuris skaido CJK ir kitą tekstą be tarpų, išlaikydamas galiojančius UTF-16 pakaitų poras kartuTPdfAnnotation.AttachmentPointSetsatskleidžia kiekvieną keturikampį kelių eilučių žymėjimo anotacijose, o esamasAttachmentPointslaukas lieka pirmojo rinkinio slapyvardžiu
Pakeista (Changed)
- Teksto ištraukimas, skaitomo turinio konstravimas, žodžių paieška ir sakomojo teksto poslinkių susiejimas dabar naudoja apribotą paskirstymą ir dvejetainės paieškos kelius, mažindami pasikartojančius paskirstymus ir tiesinius skenavimus dideliuose puslapiuose
- ASN.1 serializacija ir šifruoto PDF generavimas dabar naudoja geometrinius išvesties buferius; šifruotų objektų išdėstymas naudoja
O(n log n)rūšiavimą, o xref eilutės tiesiogiai rašomos į galutinį buferį WrapTextišlaiko CR, LF ir CRLF eilučių ribas ir visai operacijai pakartotinai naudoja vieną vietinį matavimo objektą- XFDF importas ir eksportas išlaiko kiekvieną žymėjimo keturikampį; importas taip pat taiko RGB/vidinius dažus ir analizuoja dešimtaines koordinates nepriklausomai nuo proceso lokalės
Pataisyta (Fixed)
- Paveldėtieji kvietėjai vėl gali atnaujinti anotacijos turinį ir autorių priskirdami netuščias eilutes nenurodant naujesnių
HasContentsirHasAuthorsargybinių - Eksplicitiškai tuščios anotacijų eilutės dabar naudoja galiojantį nuliu baigtą vietinį buferį, todėl
/Contents,/Tir kitų pasirenkamų teksto raktų valymas nebeperduoda nil rodyklės į PDFium
Version 2.41.0
Pakeista (Changed)
- Pirminio patikrinimo ataskaitos
SaveJsonToFile,SaveMarkdownToFileirSaveTextToFiledabar Delphi aplinkoje rašo UTF-8 formatu (atitinkant esamąSaveHtmlToFile), o ne sistemos ANSI kodų lentelę; ne ASCII simboliai failų keliuose, rekomendacijose ir taikymo srities pastabose Delphi aplinkoje buvo sugadinami, kai buvo įrašomi šiais metodais SaveCsvToFiledabar rašo UTF-8 su BOM prefiksu, kad Excel, skirtas Windows, automatiškai aptiktų kodavimą; be BOM prefikso Excel traktuoja UTF-8 CSV kaip 1252 kodų lentelę ir sugadina visus ne ASCII simbolius
Pataisyta (Fixed)
ExtractImagesdemonstracinis projektas nutekino talpykloje esančiusTBitmapobjektus, esančiusFExtractedImages, kai forma buvo uždaryta prieš tai jų aiškiai neišvalius; forma dabar perrašoDestroy, kad iškviestųClearExtractedImagesir atlaisvintų kiekvieną talpykloje esantį rastrinį vaizdą
Version 2.40.0
Pakeista (Changed)
TPdf.RenderPage(HDC, ...)dabar maskuoja FPU/SSE išimtis aplinkFPDF_RenderPageiškvietimą, atitinkantTPdfView.RenderPage(HDC)(ištaisyta v2.25.0 versijoje) ir kiekvieną atvaizdavimo įvesties tašką, grąžinantį rastrinį vaizdą;TPdflygio tiesioginis DC perkrovimas anksčiau palikdavo FPU išimtis nemaskuotas senesnėse nei D12 kompiuterio programose
Pataisyta (Fixed)
ColorToARGBdabar grąžina visiškai skaidrų pikselį (alfa 0), kai naudojamosclNoneirclDefaultreikšmės, užuot traktavęs šią sargybinę reikšmę kaip tiesioginę RGB spalvą; ankstesnis elgesys sukurdavo tamsų, beveik nepermatomą užpildymą, kai iškvietėjas nurodydavoclNonetikėdamasis „jokios spalvos“
Version 2.39.1
Pataisyta (Fixed)
- Eksplicitiniai PDF 1.3 įrašymai dabar pašalina
/SMask /None,/AIS falseir/TK trueįrašus, kurie tik pakartoja pradinę grafikos būseną, kartu toliau atmesdami ne numatytąją skaidrumo būseną
Version 2.39.0
Pakeista (Changed)
CreatePDFirImageToPDFdabar naudoja patvirtintas įrašymo vietas ir praneša apie sėkmę tik tada, kaiSaveAssėkmingai baigiamaBatchExport,PDFtoJpgirSplitPDFdabar paskiria unikalius išvesties katalogus, kad pakartotiniai paleidimai ir vienodai pavadintos įvestys išsaugotų ankstesnius rezultatusSplitViewdabar vieną kartą apgaubia paiešką nepalikdamas paslėptos puslapio būsenos po atšaukimo ar nesuradus atitikmenų, ir nutraukia nebaigtas spausdinimo užduotis, užuot pateikęs dalinę išvestį
Pataisyta (Fixed)
MergePDFdabar atmeta neteisingai suformatuotus puslapių rėžių leksems ir išvesties kelius, perrašančius šaltinį, skaičiuoja verčių importuotus puslapius ir atsisako įrašyti tuščią rezultatą- Delphi ir C++Builder
Attachmentdemonstraciniai projektai dabar patvirtina to paties kelio įrašymus per saugų failų pakeitimą, kad nepavykęs pervadinimas negalėtų pašalinti originalaus PDF failo
Version 2.38.0
Pakeista (Changed)
SetAnnotationDatadabar saugo/Contentsir/Authorįrašymus užHasContents/HasAuthorsargybinių reikšmiųTPdfAnnotationstruktūroje, atitinkant esamąHasName/HasSubject/HasIconšabloną; anksčiau šie du laukai buvo įrašomi besąlygiškai, todėl priskiriantDefault(TPdfAnnotation)įrašą tik spalvai ar vėliavėlėms atnaujinti, esamas anotacijos turinys ir autorius buvo tyliai perrašomi tuščiomis eilutėmis;GetPageAnnotationdabar nustato sargybinius, kad skaitymo-keitimo-rašymo ciklas išsaugotų pradines reikšmes
Pataisyta (Fixed)
GenerateFormAppearancesdabar nuskaito žymimojo langelio / radijo mygtuko reikšmę perFPDFAnnot_GetFormFieldValue(kuris eina į tėvinį lauko žodyną pagal ISO 32000-1 §12.7.5), o ne perFPDFAnnot_GetStringValue(Annot, 'V', ...)(kuris nuskaito valdiklio žodyną); valdiklis paprastai netriki/Vįrašo, todėl/ASniekada nebuvo sinchronizuojamas su pažymėta būsena, o suplokštintas žymimasis langelis / radijo mygtukas buvo atvaizduojamas kaip nepažymėtas
Version 2.37.0
Pakeista (Changed)
ParseTsaUrldabar apriboja prievadą iki1..65535po analizavimo; kitaip per didelė prievado reikšmė būtų sutrumpinta dėlDWORDir galėtų atsidurti galiojančiame prievade- XFDF
ParseFielddabar priima gylio parametrą (pagal nutylėjimą 0, apribotą iki 64) ir grąžina tuščią lauką pasiekus ribą, kad kenkėjiškai įdėtinė 100 000 gylio<field>grandinė nebegalėtų perpildyti steko
Pataisyta (Fixed)
- TSA HTTP užklausa dabar apsaugo nuo tuščio užklausos kūno prieš perduodant
@ReqDer[0]įWinHttpSendRequest; nulinio ilgio dinaminio masyvo nukreipimas pasiektų nepagrįstą rodyklę;BuildTimeStampReqvisada grąžina ne tuščią SEQUENCE, bet iškvietimo vieta dabar gina kontraktą
Pastabos (Notes)
FPdfTsaWinantraštės komentaras apie HTTPS atšaukimo tikrinimą buvo ištaisytas: WinHttp pagal nutylėjimą patvirtina serverio sertifikatų grandinę, bet neatlieka CRL/OCSP atšaukimo tikrinimo, nebent tai aiškiai įjungta perWinHttpSetOption; ankstesnė formuluotė teigė, kad atšaukimo tikrinimas „yra nemokamas“, o tai klaidino
Version 2.36.0
Pakeista (Changed)
- TSA HTTP užklausos dabar siunčia aiškią
Content-Lengthantraštę papildomai prieContent-TypeirAcceptantraščių; WinHttp ją sukuria iš bendro ilgio, tačiau kai kurie RFC 3161 įgaliotieji serveriai reikalauja aiškių antraščių ir be jos atmeta užklausą su klaida411 Length Required - XFDF eksportavimas dabar atmeta C0 valdymo simbolius (išskyrus TAB/LF/CR, kurie jau yra apsaugoti), užuot generavęs negaliojančią pasvirojo brūkšnio ir šešioliktainę seką; ankstesnis
\-01Fapsaugojimas nėra galiojantis XML (pasvirasis brūkšnys XML neturi ypatingos reikšmės), zodžiu bet kuris reikalavimus atitinkantis skaitytuvas būtų atmetęs dokumentą kaip sugadintą InjectAssociatedFilesdabar įrašo/SubtypeEmbeddedFile srauto žodyne, kai iškvietėjas pateikiaTAssociateFile.MIMEType; šis laukas buvo deklaruotas ir dokumentuotas, tačiau injektorius anksčiau kodavo tik/Type /EmbeddedFileir jį ignoravo (ISO 32000-2 §7.11.4 leidžia naudoti/Subtypesraute)
Pataisyta (Fixed)
- XFDF importavimas praleido pirmąjį turinio baitą po UTF-8 BOM ir pirmąjį baitą, kai BOM nebuvo:
BytesToAnsi(Bytes, 4, ...)(su BOM) irBytesToAnsi(Bytes, 1, ...)(be BOM) naudojo viena pozicija nutolusius pradinius poslinkius, nesBytesToAnsipriima 0 indeksu pagrįstą masyvo indeksą; dabar iškvietimai naudoja3ir0 ExtractSignatureValueturėjo dvi kabančiasifįtraukų klaidas, kurR.Position:= CNveikė besąlygiškai pasirenkamomscertificates [0]irsignedAttrs [0]šakoms; dabar šios šakos yra apgaubtosbegin/endkonstrukcija, todėl pozicija pastumiama tik tada, kai pasirenkamas TLV was actually read (tokios pačios klasės klaida ištaisytaAddSignatureTimestampToCmsv2.22.0 versijoje)
Version 2.35.0
Pakeista (Changed)
TFPDFAvail_IsDocAvail,TFPDFAvail_IsPageAvailirTFPDFAvail_IsFormAvaildabar priimahints: PFX_DOWNLOADHINTSvietojvar hints: FX_DOWNLOADHINTS, kad dokumentuotas tik užklausosnullptrrežimas (tikrinti esamą pasiekiamumą neužklausiant daugiau duomenų) būtų pasiekiamas iš Delphi; PDFium antraštė aiškiai leidžiahintsbūti nuline reikšme, o ankstesnisvarsusiejimas padarė tai neįmanomuTFPDF_SetSystemFontInfodabar priimapFontInfo: PFPDF_SYSFONTINFOvietojvar pFontInfo: FPDF_SYSFONTINFO, kad iškvietėjai galėtų perduotinilnurodydami PDFium nustoti naudoti anksčiau įregistruotą sistemos šriftų sąsają (dokumentuotas išjungimo kelias)TPdfThumbnailView.Paintdabar skaičiuojaVisibleRowspagal tą pačią formulę kaip irUpdateScrollBarRange(ClientHeight div RowHeight), kad nupieštų eilučių skaičius atitiktų slinkties juostos puslapio dydį; ankstesnė tik piešimui skirta formulė ((ClientHeight - FMarginY) div RowHeight + 1) galėjo skirtis viena eilute kraštiniuose aukščiuose, taip prarandant atvaizdavimą už puslapio ribų esančioje eilutėje arba praleidžiant paskutinę matomą eilutę
Version 2.34.0
Pridėta (Added)
TPdf.SaveAsEncrypted/SaveAsEncryptedToStream— aukšto lygio API, kuris įrašo dokumentą ir užkoduoja jį naudodamas PDF 2.0 AES-256-CBC (V=5/R=5/R=6); priimaTPdfEncryptOptionssu naudotojo / savininko slaptažodžiu, leidimais ir revizija bei deleguoja įEncryptDocumentBytes- StrF pažodinių eilučių šifravimas:
EncryptDocumentBytesdabar šifruoja(...)pažodines eilutes ne srautiniuose objektuose (informacijos žodyne ir kt.) į AES-256-CBC šešioliktaines eilutes, atitinkančias srauto šifravimo formatą (16 baitų IV + PKCS7 šifruotas tekstas); šešioliktainės eilutės<...>paliekamos nepaliestos
Version 2.33.0
Pridėta (Added)
- Pilnas dokumento AES-256-CBC šifravimo injektorius
FPdfEncrypt.pasfaile;EncryptDocumentBytespriima atvirojo teksto PDF ir slaptažodį, užšifruoja kiekvieną netiesioginį srauto objektą (16 baitų IV + AES-256-CBC PKCS7 su failo raktu), pataiso/Length, prideda/Encryptžodyno objektą ir atkuria pilną klasikinę kryžminių nuorodų lentelę ir pabaigą su/Encryptir/ID; užbaigia PDF 2.0 šifravimo steką (AES blokas + GCM + SHA-512/384 + R6 rakto išvestinė + žodynas + dokumento nuskaitymas) EncryptStreamPayloadpagalbinė funkcija — PDF 2.0 AES-256 srauto formatas (IV pridedamas prieš AES-CBC-PKCS7 šifruotą tekstą), kurį gali pakartotinai naudoti iškvietėjai, valdantys savo objektų išdėstymą
Version 2.32.0
Pridėta (Added)
- SHA-512 / SHA-384 maiša (FIPS 180-4) naujame
FPdfSha512.pasmodulyje; grynas Pascal, perkeltas iš HotPDF; reikalingas PDF 2.0 R6 slaptažodžio maišos iteracijai, kuri šakojasi pagal 128 bitų mod-3 reikšmę, kad kiekviename raunde pasirinktų SHA-256/384/512; patvirtintas FIPS-180-4 B.1 žinomais atsakymais - PDF 2.0 šifravimo rakto išvestinė ir šifravimo žodyno kūrėjas naujame
FPdfEncrypt.pasmodulyje; įgyvendina ISO 32000-2 §7.6.4.3 algoritmą 2.B (R6 maišos skaičiavimas: AES-128-CBC + pasikartojantis SHA-256/384/512 parinkimas), išveda 32 baitų failo šifravimo raktą ir/O,/U,/OE,/UE,/Permsįrašus bei sukuria V=5/R=5/R=6 šifravimo žodyną su/CFM /AESV3; perkelta iš PDFlibPas, pritaikyta TBytes stiliui
Version 2.31.0
Pridėta (Added)
- AES bloko šifravimo primityvai (FIPS 197) naujame
FPdfAes.pasmodulyje; grynas Pascal AES-128 ir AES-256 bloko šifrai bei CBC režimo pagalbiniai įrankiai ir CSPRNG posistemė, perkelta iš HotPDF; FIPS-197 priedo C.2 / C.3 žinomų atsakymų testai patvirtina teisingumą; tai yra kriptografinis pagrindas PDF 2.0 šifravimo stekui - AES-GCM autorizuotas šifravimas (NIST SP 800-38D) naujame
FPdfAesGcm.pasmodulyje; įgyvendina GHASH (GF(2^128) daugybą), GCTR ir GCM AEAD konstrukciją ant AES bloko primityvų; NIST GCM testai 1 ir 3 (AES-128) tiksliai atitinka autoritetingą šifruotą tekstą ir žymą; testo atvejis 13 (AES-256) atlieka pilną ciklą; GCM yra ISO/TS 32003 režimas, skirtas PDF 2.0 - PDF/A A lygio ParentTree ir ClassMap vientisumo patvirtinimas (ISO 19005-1 §6.8.3);
pvaiParentTreeMissingpažymi StructTreeRoot be/ParentTreenumerio medžio;pvaiClassMapUnresolvedpažymi/Cklasės nuorodą be/ClassMap
Version 2.30.0
Pridėta (Added)
- Susijusių failų įterpimas (
InjectAssociateFiles/TPdf.SaveAsWithAssociateFiles, ISO 32000-2 §7.11.4); naujasFPdfAssocFilesmodulis prideda failų specifikacijų nuorodų/AFmasyvus prie katalogo arba bet kurio puslapio žodyno, apimdamas visas aštuonias ISO 32000-2 45 lentelės/AFRelationshipreikšmes; pakartotinai naudoja laipsniško atnaujinimo šabloną, pasitvirtinusį suInjectPadesDssMarkers - PDF/X-6 (ISO 15930-9:2020) palaikymas;
TPdfXConformancepridedapxc6; injektorius ir patvirtintojas perkelia tai perpdfxid:GTS_PDFXVersionidentifikavimą; PDF/X-6 yra PDF 2.0 pagrįstas PDF/X-4 įpėdinis pilnam apsikeitimui - PDF/A draudžia
/Threadveiksmą (ISO 19005-1 §6.6.1 leidžiamų veiksmų sąrašo spraga); draudžiamų veiksmų sąrašas dabar apima Thread kartu su Launch, ResetForm, ImportData, SetOCGState, SetState, GoTo3DView, Rendition ir Hide
Pataisyta (Fixed)
- PDF/A-4e patvirtinimo kelias dabar atsižvelgia į tuos pačius pažymėtos struktūros, MarkInfo ir žodžių perkėlimo tikrinimus kaip ir A lygis; v2.29.0 įrašymo pusės pažeminimas apėmė
PdfAIsLevelE, tačiau trysValidatePdfACompliancevartai tikrino tikPdfAIsLevelA, todėl PDF/A-4e dokumentas be pažymėtos struktūros praeidavo tyliai - OCG
/BaseStatetesto nuokrypis: v2.28.0 PostProcess praleidimas teisingai išplėtė priėmimą iki/ONarba/OFF(ISO 32000-1 lentelė 8.70), tačiau Delphi ir C++ testai vis dar tikėjosi, kad/OFFbude atmesta; dabar testai naudoja tikrai negaliojančią reikšmę (/Undefined), o naujas teigiamas testas užfiksuoja/OFFpriėmimą - Geoerdvinis
/Subtype /GEOperteklinis atitikimas:ContainsDictionarySubtype('GEO')atitiko bet kurį žodyną, turintį šį ženklą, įskaitant nesusijusius, pvz., atsitiktinį/ViewerPreferences << /Subtype /GEO >>; naujasisContainsMeasureDictionarySubtypepapildomai reikalauja/Type /Measurearba išskirtinio Measure antrinio rakto, todėl ne Measure žodynai nebepažeidžia ADBE ExtensionLevel 3 reikalavimo
Version 2.29.0
Pridėta (Added)
- PDF/A-4 (ISO 19005-4:2020) palaikymas patvirtintojo, XMP injektoriaus ir Pdfium objekto modelio sluoksnyje;
TPdfAConformancepridedapac4base,pac4firpac4e; bazinis lygis yra PDF 2.0 (ISO 32000-2) ir pakeičia senus A/B/U lygius baziniu + F (forma) + E (prieinamumas);ValidatePdfAnuskaitopdfaid:part=4XMP paketą (bazinis praleidžia atitikties elementą),SaveAsPdfAjį sugeneruoja, oSignPadesWithPdfApriimapac4basekaip ilgalaikį archyvo konteinerį FPDFBookmark_GetColorsusiejimas — paskutinis nesusietas PDFium viešasis eksportas (469/469);TBookmarkįgyjaHasColorirColorlaukus, užpildytus iš skirtuko/Cmasyvo (ISO 32000-1 §12.3.3); susiejimas naudoja tolerantišką įkėlimą, todėl senesnės DLL, sukurtos prieš šį eksportą, toliau veikia- PDF/E-1 (ISO 24517-1 §5) antraštės versijos tikrinimas
pveiBadPdfVersion— PDF/E-1 yra pagrįstas PDF 1.6, o ne 1.6 antraštė dabar pažymima - PDF/R-1 (ISO 23504-1)
pvriEncryptVersionMismatch— šifravimas leidžiamas tik%PDF-2.0antraštėje; 1.x kūnas, turintis/Encrypt, dabar pažymimas (anksčiau tai buvo nevykdomas teiginys) - PDF/R-1
pvriBadMediaBox— kiekvieno puslapioMediaBoxturi būti[0 0 w h];PdfRHasNonZeroMediaBoxOriginyra nepriklausomas nuo regiono nustatymų ASCII skaitytuvas, kuris praleidžia netiesioginės nuorodos MediaBoxes - PDF/A A lygio
pvaiRoleMapUnresolved(ISO 19005-1 §6.8.3.4) — dabar pažymimas esantis, bet nebaigtas RoleMap, kuris palieka pasirinktinius/Sstruktūros tipus nesusietus, taip užpildant spragą, kurią paliko esamas tik buvimą tikrinantispvaiRoleMapMissingtikrinimas
Pataisyta (Fixed)
PdfVersionToName(20)grąžino"1.0"vietoj"2.0", taip sugadindamas katalogo/Versionįrašą ir patvirtintojo pranešimus kiekvienam PDF 2.0 įrašymui; dabar formatavimo priemonė aiškiai išskiria major.minor versijos kodams>= 20FPdfAsn1.pasneigiamų INTEGER kodavimo įrenginys nesusikompiliavo Delphi 12 aplinkoje (E2015tiesInteger(-(V<0))), blokuodamas visą bandomąjį projektą; ištaisyta naudojantInt64(-Ord(V<0))ženklo pratęsimo kaukėms- PDF/A draudžiamų anotacijų sąrašas dabar apima
/RichMediavisose dalyse (anksčiau buvo praleista; ISO 32000-1 §12.5.6.35 draudžia tai PDF/A)
Version 2.28.0
Pridėta (Added)
TPdfVersiondabar apimapv20, skirtą PDF 2.0 (ISO 32000-2);DecodePdfVersion(20)grąžinapv20vietojpvUnknown, oEncodePdfVersion(pv20)išveda 20, kad PDF 2.0 dokumento versija nebūtų prarasta skaitant atgal ir galėtų būti įrašyta aiškiai
Pakeista (Changed)
DecodeDatedabar analizuoja PDF datos eilutes su pasirenkamais papildomais laukais pagal PDF Reference 3.8.3, užuot reikalavęs pilnos 23 simboliųD:YYYYMMDDHHmmSSOHH'mm'formos; dabar priimamos atitinkamos sutrumpintos datos, tokios kaipD:20260712,D:20260712153000irD:20260712153000Z; anksčiau jas atmesdavo griežtiLength=23vartai; laiko juostos valandos poslinkis dabar tikrinamas pagal realų UTC-12..UTC+14 rėžį vietoj> 23FPdfMeasure.MeasureTextdabar koduoja šrifto pavadinimą kaip FPCAnsiString/ DelphiUTF8Encode, atitinkant kitas bibliotekosFPDF_BYTESTRINGiškvietimo vietas, o ne paprastąAnsiStringliejimą, kuris sugadindavo ne ASCII šriftų šeimų pavadinimus per esamą kodų lentelę
Pataisyta (Fixed)
TDerWriter.Integerneigiamų reikšmių kelias nulūždavo arba sukurdavo sugadintą DER: ciklaswhile V <> -1 do V := V shr 8palikdavoInnertuščią, kaiValue = -1(rėžio klaida vėlesniameInner[Length(Inner)-1]), ir per daug gamino baitų kitoms neigiamoms reikšmėms; dabar kodavimo įrenginys išskiria dviejų papildinių baitus su ženklo pratęsimo poslinkiais ir teisingai sustoja, kai likutis yra grynas ženklo pratęsimas; CMS/PAdES INTEGER laukai yra teigiami, todėl tai veikia tik iškvietėjus, perduodančius neigiamas reikšmes, tačiau kelias dabar yra teisingasTPdf.GetCharacterOriginirTPdfView.GetCharacterOriginignoravoFPDFText_GetCharOrigingrąžinamą reikšmę ir klaidos atveju grąžindavo neinicializuotą tašką; rezultatas dabar yra inicializuojamas nuliu, o nesėkmingas nuskaitymas grąžina pradinį tašką (atitinkantGetCharacterRectanglekontraktą)
Version 2.27.0
Pakeista (Changed)
- Delphi, C++Builder ir Lazarus
PDFViewerbeiMultiPageViewerdemonstracijos cikliškai ieško dokumentuose, naudojaEnter/F3kitam rezultatui, pakeitus parinktis iš naujo nustato paieškos kontekstą, oEscskirtas aktyviai paieškai ar spausdinimui atšaukti - Peržiūros spausdinimas laikosi dabartinio pasukimo ir parenka vertikalų arba horizontalų išvesties formatą
- Trys
ViewerInteractionLabdemonstracijos palaikoCtrl+A,Ctrl+C,Enter,F3,Escsparčiuosius klavišus neperimdamos vietinio redagavimo valdiklių komandų
Pataisyta (Fixed)
- C++Builder ir Lazarus spausdinimo atšaukimas dabar nutraukia spausdintuvo užduotį, o Lazarus aiškiai išeina iš įdėtų kopijavimo, puslapių ir rūšiavimo ciklų
- Delphi
MultiPageVieweratšaukimo mygtukas prijungtas prie apdorotuvo, o C++Builder/Lazarus paieškos laukai išlaiko rodyklių, Home ir End redagavimą
Version 2.26.0
Pakeista (Changed)
TPdf.GetObjectBitmap,TPdf.GetBitmap,TPdf.GetThumbnailirTPdfViewatitikmenys dabar ima atvaizdavimo užraktą aplink PDFium iškvietimus, kaipRenderPage/RenderTileTPdf.RenderPageThumbnailgerbia/Rotateir pasukto puslapio matmenims perskaičiuoja pritaikymą
Pataisyta (Fixed)
TPdfView.GetCharacterRectangledabar inicializuoja stačiakampį nuliu ir klaidos atveju grąžinaRect(0,0,0,0)GetLinkAnnotationsnaudojasize-1kelio buferio ilgiui, kad neperžengtų paskirtos atminties
Version 2.25.0
Pakeista (Changed)
TPdf.AddText,SetText,AddPathirInsertFormObjectFromXObjectprieš turinio atkūrimą anuliuoja talpykloje esančius teksto puslapius ir nuorodų anotacijasTPdfView.RenderPage(HDC, ...)ima atvaizdavimo užraktą ir maskuoja FPU/SSE išimtis aplinkFPDF_RenderPage- Delphi
PrintPDFdemonstracija atšaukus iškviečiaPrinter.Abort
Pataisyta (Fixed)
TPdf.GetCharacterirGetCharcodenebesutrumpina virš U+FFFF esančių simbolių, o grąžina U+FFFDGetWebLinksnebesukeliaEOutOfMemorygavus neigiamą stačiakampių skaičiųTPdf.Destroyprieš atlaisvindama atmintį ištrinaPasswordperUniqueString+FillChar
Version 2.24.0
Pridėta (Added)
TPdf.DeletePage, priedų prieigos metodai irDeleteAttachmenttikrina indeksus ir už ribų keliaEPdfError
Pataisyta (Fixed)
TPdf.AddText,AddBitmapirAddJpegImageklaidos atveju sunaikina nutekėjusius puslapio objektusTPdf.UnloadPagesunaikina neperduotąFPathTPdf.InsertFormObjectFromXObjectpo įterpimo iškviečiaUpdatePage
Version 2.23.0
Pataisyta (Fixed)
- Pasirinktinio turinio
/BaseStatetikra dabar priima/OFFkartu su/ON /Intenttikra priima/Designir pavadinimų masyvus, pavyzdžiui[/View /Design]- Geografinio Measure žodyno PDF 1.7
/Extensions /ADBEvartai nebereikalauja/Type /Measureir aptinka/Subtype /GEO
Version 2.22.0
Pakeista (Changed)
TPdfViewpritaikymo mastelio skaičiavimai naudojaClientWidth/ClientHeight, todėl puslapis telpa matomame peržiūros langeAddSignatureTimestampToCmskelia aiškiąExceptionsu neperskaitomu CMS SignerInfo lauku ir pataisosignedAttrs [0]begin/endšaką
Pataisyta (Fixed)
ResolveWinSignerklaidos atveju atlaisvina CNG raktą perNCryptFreeObjectEcDsaP1363ToDeratmeta visiškai nuliniusrarbas
Version 2.21.12
Pataisyta (Fixed)
- Eksplicitinis įrašymas į PDF 1.5–PDF 1.7 dabar atmeta neteisingai suformatuotas katalogo
/OCPropertiesstruktūras, įskaitant trūkstamus privalomus/OCGsar/Dįrašus, negaliojančias numatytąsias konfigūracijos reikšmes ir nemasyvines būsenos įrašus
Version 2.21.11
Pataisyta (Fixed)
- Eksplicitinis PDF versijos įrašymas dabar atmeta tiesioginius ar netiesioginius puslapių
/Annotsįrašus, kurių anotacijų žodynuose trūksta reikalingo/Subtypear/Rectįrašo
Version 2.21.10
Pataisyta (Fixed)
- Eksplicitinis įrašymas į PDF 1.7 dabar reikalauja, kad geoerdviniai
/Type /Measure /Subtype /GEOžodynai ir Projekcijos anotacijos deklaruotų/Extensions /ADBEsu/BaseVersion /1.7ir/ExtensionLevel 3ar naujesniu
Version 2.21.9
Pataisyta (Fixed)
- Eksplicitinis įrašymas į PDF 1.7 dabar reikalauja, kad RichMedia anotacijos ir
RichMediaExecuteveiksmai deklaruotų/Extensions /ADBEsu/BaseVersion /1.7ir/ExtensionLevel 3ar naujesniu
Version 2.21.8
Pataisyta (Fixed)
- Eksplicitinis įrašymas į PDF 1.7 dabar reikalauja, kad PRC 3D srautai deklaruotų
/Extensions /ADBEsu/BaseVersion /1.7ir/ExtensionLevel 1ar naujesniu, užuot traktuojant PRC kaip pagrindinę PDF 1.7 funkciją
Version 2.21.7
Pataisyta (Fixed)
- Eksplicitinis įrašymas į PDF 1.4 ir senesnes versijas dabar atmeta vaizdo XObject
/SMaskInDataįrašus, įskaitant aiškią0reikšmę, nes įterptiniams JPEG 2000 minkštojo kaukės kanalams reikalingas PDF 1.5 ar naujesnis
Version 2.21.6
Pataisyta (Fixed)
- Eksplicitinis įrašymas į PDF 1.4 ir senesnes versijas dabar atmeta 16 bitų vaizdo XObjectus, kuriems reikalingas PDF 1.5 ar naujesnis, o PDF 1.5–PDF 1.7 tikslai išsaugo jų
/BitsPerComponent 16vaizdo duomenis
Version 2.21.5
Pataisyta (Fixed)
- Eksplicitinis įrašymas į PDF 1.4 ir senesnes versijas dabar atmeta dokumento katalogo
/PageLayout /TwoPageLeftir/TwoPageRightreikšmes, kurioms reikalingas PDF 1.5 ar naujesnis, o PDF 1.5–PDF 1.7 tikslai išsaugo prašomą dviejų puslapių išdėstymą
Version 2.21.4
Pataisyta (Fixed)
- Eksplicitinis įrašymas į PDF 1.3 dabar atmeta dokumento katalogo
/Langįrašus, kuriems reikalingas PDF 1.4 ar naujesnis, o PDF 1.4–PDF 1.7 tiksluose kalbos identifikatorius išsaugomas
Version 2.21.3
Pataisyta (Fixed)
- Eksplicitinis įrašymas į PDF 1.3 dabar atmeta dokumento
/EmbeddedFilesvardų medžius, kuriems reikalingas PDF 1.4 ar naujesnis, neatmesdamas įterptų failų srautų, referenotų per senesnes failų specifikacijas
Version 2.21.2
Pataisyta (Fixed)
- Paskutinis leidimas: 2.21.2; Leidimo data:
Version 2.21.1
Pataisyta (Fixed)
- Hibridinių nuorodų tikrinimas dabar taiko papildomus
/XRefStmįrašus prieš tos pačios revizijos klasikinius xref vietos rezervuotojus, todėl suglaudinti komentarai ir kiti versijų riboti objektai nebepraleidžiami
Version 2.21.0
Pakeista (Changed)
- Visi Delphi, C++Builder ir Lazarus peržiūros pavyzdžiai dabar gali atidaryti PDF, pateiktą kaip pirmąjį komandinės eilutės argumentą, o C++Builder ir Lazarus
MultiPageViewerpavyzdžiai teikia aiškius spartuošiuosius klavišus viskam pasirinkti ir kopijuoti
Pataisyta (Fixed)
- Paskutinis leidimas: 2.21.3; Leidimo data:
Version 2.20.0
Pakeista (Changed)
- Visi Delphi, C++Builder ir Lazarus peržiūros pavyzdžiai dabar teikia nuoseklius spartuošiuosius klavišus atidarymui, ieškojimui, įrašymui, spausdinimui, priartinimui ir puslapio navigacijai, o kiekvienas
ViewerInteractionLabvariantas taip pat palaiko puslapio šuolius, patikrintą 10–600 % rankinį priartinimui, nuolatinius sveikos veiksmų žurnalus ir klikėlimų koordinačių tikrinimus
Version 2.19.1
Pataisyta (Fixed)
- Paskutinis leidimas: 2.21.4; Leidimo data:
Version 2.19.0
Pakeista (Changed)
- Paskutinis leidimas: 2.21.12; Leidimo data:
Pataisyta (Fixed)
- C++Builder
CJKTextLabdabar matuoja tekstą per eksportuotas PDFium redagavimo funkcijas, oMergePDFišvengia dviprasmiško VCL pranešimų perkrovimo, atkuriant švarią RAD Studio 37 versiją
Version 2.18.3
Pataisyta (Fixed)
- PAdES B-LTA dokumento laiko žyma dabar registruojama kaip aptinkamas parašo laukas — nematomasis Widget pasiekiamas per pirmojo puslapio
/Annotsir AcroForm/Fields(ETSI EN 319 142-1 §5.4.3) — o ne kaip nepasiekiamas našlaitis, kurio parašo laukų skaičiavimo tikrintuvai negalėjo rasti; esamos anotacijos ir laukai išsaugomi
Version 2.18.2
Pataisyta (Fixed)
- PAdES pasirašymas ir klasikinis kryžminio nuorodos rašymas dabar iškelia aiškią klaidą, kai baitų poslinkis viršija fiksuoto 10 skaitmenų lauko plotį (~9,3 GB), vietoj to, kad tyliai paliktų
/ByteRangežymeklį neįrašytą (sukuriant neteisingą parašą) arba viršytų 20 baitų xref eilutę (ISO 32000-1 §7.5.4); kryžminio nuorodos srauto išvestis naudoja 8 baitų dvejetainius laukus ir tai jos neveikia
Version 2.18.1
Pataisyta (Fixed)
- PAdES pasirašymas dabar išsprendžia netiesiogines pirmojo puslapio
/Annots,/AcroFormir/Fieldsnuorodas pagal visą objekto antraštę (ISO 32000-1 §7.5.3) ir pagal tikrąjį nuorodos kartos numerį; ankstesnė paprasta eilutės paieška galėjo atitikti objekto numerį ilgesniame numeryje (pvz.,5 0 Rrasta kaip15 0 obj), o koduotu kartos numeriu buvo praleistigen>0objektai, sugadinant parašo laukų masyvus arba atmetant tinkamus dokumentus - Kai katalogas, pirmasis puslapis,
/Annots,/AcroFormarba/Fieldsyra objekto sraute, pasirašymas dabar bandys iš naujo su išplėstos kopijos, prieš pateikiant klaidą, vietoj to, kad tiesiog atmestų dokumentą
Version 2.18.0
Pridėta (Added)
ReadPdfVersionInfopraneša antraštės versiją, efektyvią pagrindinę versiją, katalogo perrašymą ir Adobe kūrėjo plėtinių lygį iš PDF srauto
Pakeista (Changed)
- Aiški PDF 1.3–1.7 išsaugojimų tikrinimas dabar tikrina katalogo, puslapio išteklių, XFA, redagavimo ir kūrėjo plėtinių struktūras savo turančio objekto kontekste; šifruota aiški versijos išvestis ir PDF 1.3 palaipsniui normalizavimas atmetami siekiant išsaugoti dokumento vientisumą
- Failo keliu grindžiamas išsaugojimas dabar rašo į šalia esantį laikiną failą ir pakeičia paskirties vietą tik po to, kai visi suspaudimo, normalizavimo ir versijų tikrinimai sėkmingai baigiami
Pataisyta (Fixed)
- PDF 1.3 išvestis dabar turi reikiamą pilną
/ProcSetišteklių ir pašalina PDF 1.4 skaidrumo raktus, kai jie tik kartoja PDF 1.3 pradines grafikos būsenos reikšmes - Hibridinės nuorodos, xref srauto ir objektų srauto failai nebeperrašomi klasikine xref kompresoriumi, išvengiant suglaudintų objektų įrašų praleidimo
- Pavadinimai, primenantys skaidrumo ar katalogo funkcijų raktus eilutėse, komentaruose arba nesusijusiuose išteklių žemėlapiuose, nebegeneruoja klaidingų tikslinės versijos klaidų
Version 2.17.0
Pridėta (Added)
- PAdES parašai dabar registruojami kaip nematomosios Widget anotacijos pirmojo puslapio
/Annotsmasyve ir AcroForm/Fieldsmasyve, išsaugant esamas anotacijas ir formos laukus
Pakeista (Changed)
- Palaipsniški PDF/A, PDF/X, PDF/E, PDF/R, PDF/UA, PDF/VT ir PAdES atnaujinimai dabar išsaugo šaltinio kryžminio nuorodos atvaizdavimą: xref-srauto dokumentai gauna xref-srauto atnaujinimą, kaip reikalauja ISO 32000-1 §7.5.8.1, o klasikiniai dokumentai ir toliau gauna xref lentelę
- Kryžminio nuorodos poslinkiai,
startxref,/Prev, PAdES ByteRange reikšmės ir SHA-256 diapazono apdorojimas dabar naudoja 64 bitų pozicijas su suskirstytu maiša, leidžiant failams, didesniems nei 2 GB, 64 bitų versijose - Sugeneruoti rašytini XMP paketai dabar rezervuoja 2048 baitų paminkštinimą prieš uždarymo paketo instrukciją
Version 2.16.10
Pataisyta (Fixed)
- Objektų srauto išplėtimas nebeatkuria pasenusių objektų kopijų, kurias palaipsniški atnaujinimai perkėlė iš objektų srauto į paprastą apibrėžimą (ISO 32000-1 §7.5.7); atitikties tikrinimai ir žymeklių įterpimas anksčiau išsprendė pasenusį katalogą ar metaduomenų žodyną tokiuose failuose
Version 2.16.9
Pataisyta (Fixed)
- Free Pascal atveju, tekstinės eilutės, kurių įvestis nėra tinkama UTF-8, plečiamos baitas po baito kaip Latin-1 ir įrašomos kaip UTF-16BE šešioliktainės eilutės; anksčiau neapdoroti aukšti baitai patekdavo į literalinę eilutę, kuri nėra teisėtas PDF 1.7 teksto eilutės kodavimas
- Srauto dekodavimas dabar atpažįsta žalius deflate duomenis be RFC 1950 zlib apvalkalo (dažnas sugedusių rašytuvų defektas) ir dekompresija vykdoma žaliu režimu, todėl atitikties nuskaitymai nebetyli apie tokius srautus
Version 2.16.8
Pataisyta (Fixed)
- Palaipsniški atnaujinimai, parašyti išsaugojimo po apdorojimo keliu, dabar atnaujina antrąjį (kintantį) antraštės
/IDelementą, kaip reikalauja ISO 32000-1 §14.4; anksčiau abu elementai buvo kopijuojami pažodžiui, todėl talpyklos ir sinchronizavimo priemonės matė nepakitusį identifikatorių po kiekvieno atnaujinimo
Version 2.16.7
Pataisyta (Fixed)
- Srauto turinio užtušavimas, naudojamas atitikties nuskaitymuose, dabar reikalauja, kad
streamraktažodžio sektų eilutės pabaiga (ISO 32000-1 §7.3.8.1); žodis literalinėje eilutėje, pvz.,(downstream), anksčiau užtušuodavo visą sekančią struktūrą iki kitoendstream, slėpdamas tikrus pažeidimus nuo baitų lygio tikrinimų - PDF/X ir PDF/E draudžiamų funkcijų nuskaitymai papildomai užtušuoja literalines eilutes ir komentarus (§7.2.2), todėl reikšmė, pvz.,
/Title (see /JavaScript docs)ar komentuotas žetonas, nebegeneruoja klaidingųJavaScript,AcroFormarLZWDecoderadimų
Version 2.16.6
Pataisyta (Fixed)
- PDF/VT DPM įrašai dabar tikrinami rašymo metu, kaip dokumentuota: raktų pavadinimai, pažeidžiantys ISO 16612-2 §6.6 NMTOKEN taisyklę arba Priedo E registruotojo prefikso taisyklę, ir dublikatai atmetami, vietoj to, kad būtų įrašyti į DPart žodyną — pavadinimas, turintis tarpą, anksčiau buvo skaidomas į apgaulingą raktą/reikšmę ir sugadindavo žodyną
Version 2.16.5
Pataisyta (Fixed)
- Žodyno įrašo, kurio reikšmė yra šešioliktainė eilutė (pvz.,
/Check <...>), pašalinimas dabar pašalina visą įrašą; anksčiau įterpėjai paliko našlaitę šešioliktainę reikšmę, sukurdami sintaksiškai sugedusį žodyną - Įrašo, kurio netiesioginė nuoroda naudoja naujų eilučių simbolius tarp žetonų (ISO 32000-1 §7.3.10 leidžia bet kokius tarpo simbolius), pašalinimas nebepalieka kartos numerio ir
Rraktažodžio
Version 2.16.4
Pataisyta (Fixed)
- Maksimalaus objekto numerio nuskaitymas nebereikalauja, kad objektų antraštės prasidėtų eilutėje (ISO 32000-1 §7.5.3 leidžia bet kokius tarpo simbolius ar skirtukus prieš jas), todėl įterpėjai nebegali priskirti objekto numerio, kuris susidurtų su eilutėje esančia
N G objantrašte ir tyliai sugadintų failą; objektų numeriai yra ribojami Priedo C viršutine riba - Srautai, kurių
/Lengthyra netiesioginė nuoroda, dabar išsprendžia nurodytą sveikojo skaičiaus objektą ir naudoja jo reikšmę, kai ji sutampa su uždarymoendstream; anksčiau tokie srautai buvo ribojami modelio paieška, kuri sutrumpindavo turinį, teisėtai turintįendstreambaitų seką — tipišką įdėtiems PDF priedams
Version 2.16.3
Pataisyta (Fixed)
- Srauto suspaudimo eiga praleidžia kryžminio nuorodos srauto dokumentus (PDF 1.5+ failai be klasikinio
trailerraktažodžio) nepakeistus; anksčiau atstatymo kelias neteisingai analizuodavostartxrefkaip lentelės vietą ir sintetino spėjamą antraštę, kuri galėjo sukurti neatidaromą failą - Kompresorius praleido XMP metaduomenų srautus, kad PDF/A dokumentas išsaugotų privalomą nefiltrą metaduomenų srautą (ISO 19005-1 §6.7.2), ir nepaliečia išorinių failų srautų (
/Fsu/FFilter) - Atstatytos kryžminio nuorodos lentelė nuskaito iš srauto išvalytą dokumento kopiją, todėl dvejetainio srauto turinys nebegali imituoti objektų antraščių ar išpūsti lentelę; atstatytos antraštės
/Sizedabar atspindi tikrąją lentelę, o objektų numeriai yra ribojami Priedo C viršutine riba - Pradinės kryžminio nuorodos lentelės radimas priima tik CR eilučių pabaigos (ISO 32000-1 §7.5.1) ir nebegali sutapti su
xrefraidėmisstartxrefviduje; srauto raktažodžio nuskaitymas gavo tą patįendstreamuodegos apsaugą, naudojamą kitur, ir dabar tęsiamas praleisto srauto kūno atžvilgiu
Version 2.16.2
Pataisyta (Fixed)
- Sveikojo skaičiaus analizė visame baitų lygio PDF skaitytuvetuose dabar priima aiškų
+ženklą, leidžiamą ISO 32000-1 §7.3.3, ir atmeta skaitmenų sekas, dėl kurių galėtų kilti perpilda, todėl priešiški ar sugadinti dokumentai nebegali apvynioti analizuotų ilgių ir poslinkių į klaidinančias reikšmes
Version 2.16.1
Pataisyta (Fixed)
- PDF/UA įterpėjas įrašo katalogo
/Langreikšmę kaip tinkamą PDF tekstinę eilutę; anksčiau reikšmė buvo apdorojama per XML ekranizavimo priemonę, todėl kalbos žyma, turinti&ar skliaustus, sukurdavo sugadintą įrašą, o ne ASCII įvestis buvo įrašomos kaip neapdorotas UTF-8 - PDF/E
/ISO_PDFEVersionInfo įrašas naudoja bendrą teksto eilutės koduotoją, todėl ne ASCII reikšmės yra teisėtos PDF 1.7 - XML ekranizavimas XMP paketams pašalina valdymo simbolius, kurie yra neteisėti XML 1.0, todėl metaduomenys iš sugadinto šaltinio dokumento nebegali padaryti viso metaduomenų srauto netinkamai suformatuotu
- PDF į XMP datų konvertavimas tikrina, ar datų laukai yra skaitiniai, ir papildo trūkstamą minučių lauką, užkertant kelią neteisingai suformatuotoms ISO 8601 datoms sugeneruotame XMP; ne Windows platformose atsarginis laiko žymuo dabar apima dienos laiką, o ne tik datą
Version 2.16.0
Pridėta (Added)
- Srauto dekodavimas dabar atkuria
/DecodeParmsprognozavimo priemones (PNG prognozavimo priemonės 10–15 ir TIFF prognozavimo priemonė 2, ISO 32000-1 §7.4.4.4) po FlateDecode, gerb./Colors,/BitsPerComponentir/Columns; objektų srautai, suspausti su prognozavimo priemone — dažnas PDF 1.5+ rašytojo pasirinkimas — anksčiau grąžindavo diferencijuotus baitus, todėl juose esantys objektai buvo tyliai nematomi atitikties nuskaitymuose ir žymeklių įterpime
Pataisyta (Fixed)
- FlateDecode aptikimas dabar analizuoja
/Filterreikšmę kaip pavadinimą ar masyvą, o ne kaip eilutės paiešką, todėl kaskados filtrų grandinės ir žodžio pasirodymai nesusijusiose reikšmėse nebeatlieka netikros išpūtimo; nepalaikomi grandinės grįžta prie žalių baitų kaip anksčiau
Version 2.15.1
Pataisyta (Fixed)
- Žodyno skaitytuvas dabar praleido literalines eilutes, šešioliktaines eilutes ir komentarus, balansuodamas
<</>>(ISO 32000-1 §7.2.2), todėl žodynai, turintys reikšmes, pvz.,(A >> B)ar šešioliktainę eilutę, gretimą prie uždarymo skirtuko, nebebūna sutrumpinti analizuojant antraštes, katalogus ir atitikties nuskaitymus - Literalinių eilučių ištraukimas dabar dekoduoja visą §7.3.4.2 3 lentelės pabėgimų rinkinį —
\n \r \t \b \f, aštuonainis\ddd, eilučių tęsinius ir neišvengtą eilutės normalizavimą — vietoj to, kad kopijuotų pabėgimo simbolį pažodžiui, atkuriant teisingus/Producer,/GTS_PDFXVersionir/ISO_PDFEVersionpalyginimus rašytuvams, naudojantiems aštuonainius pabėgimus - Literalinės eilutės, įrašytos žymeklių įterpėjų, dabar ekranizuoja CR, LF ir kitus valdymo simbolius, kad reikšmės išgyventų skaitytuvo eilučių normalizavimą baitas po baito
Version 2.15.0
Pataisyta (Fixed)
- Palaipsniški atnaujinimai, parašyti PDF/A, PDF/X, PDF/E, PDF/R, PDF/UA, PDF/VT ir PAdES žymeklių įterpėjų bei PAdES pasirašymo ir DSS keliais, dabar išsaugo šaltinio dokumento nuolatinį failų identifikatorių: pirmasis antraštės
/IDelementas perkeliamas pažodžiui, kaip reikalauja ISO 32000-1 §14.4, ir atnaujinamas tik antrasis (kintantis) elementas; anksčiau abu elementai buvo pergeneruojami, todėl išorinės nuorodos ir ilgalaikio tikrinimo darbo eigos matė skirtingą dokumento tapatybę po kiekvieno išsaugojimo - PAdES parašai, DSS įterpimas ir B-LTA dokumento laiko žymos dabar perkelia šaltinio antraštės
/Infonuorodą į priekį (ISO 32000-1 §7.5.6), todėl dokumento savybės nebedingsta iš skaitytuvų skydelių po pasirašymo; dokumento laiko žymos antraštė taip pat gauna/IDmasyvą - Antraštės
/Infoatsarginis variantas kryžminio nuorodos srauto dokumentams dabar teisingai suranda XRef srauto žodyną ir išsaugo nuorodos kartos numerį; anksčiau jis niekada nesutapdavo su atitinkančiais PDF 1.5+ failais, tyliai praleidžiant/Info
Version 2.14.4
Pataisyta (Fixed)
- Parašo žodyno
/Mdata, įrašytaTPdf.SignPadesirSignPadesBytes, dabar turi privalomąD:prefiksą irZUTC poslinkio žymeklį, kurio reikalauja ISO 32000-1 §7.9.4; griežti tikrintuvai anksčiau atmetė pasirašymo laiką kaip neteisingai suformatuotą datos eilutę
Version 2.14.3
Pataisyta (Fixed)
- Žodyno raktų paieška bendrame PDF skaitytuve dabar atitinka ištisus pavadinimų žetonus (ISO 32000-1 §7.3.5); anksčiau srautas, kurio žodyne buvo
/Length1prieš/Length(tipiškas FontFile srautams), buvo sutrumpinamas iki neteisingo baitų skaičiaus, tyliai apakinant PDF/A, PDF/UA ir kitus atitikties nuskaitymus, kurie skaitė šriftų, CMap ar metaduomenų srautus /Encrypt,/Root,/Sizeir/Infoantraštės paieškos nebeatitinka ilgesnių raktų, turinčių tą patį prefiksą (pvz.,/EncryptMetadata)- Objektų srauto išplėtimas nebepaiso sugadinto ar priešiško
/Nreikšmės: ne sveikojo skaičiaus reikšmės dabar grąžina 0 vietoj neinicializuoto skaičiaus, o viršutinė riba, išvesta iš/First, apsaugo nuo per didelių išskyrimo kiekių nuskaitant neteisingai suformatuotus dokumentus
Version 2.14.2
Pataisyta (Fixed)
- PDF/X, PDF/VT, PDF/UA, PDF/E ir PDF/R žymeklių įterpėjai dabar praleidžia šifruotus šaltinio dokumentus nepakeistus, vietoj to, kad pridėtų atvirojo teksto atnaujinimo sekcijas; ankstesnis elgesys sukūrė failus, kurių naujausioje antraštėje trūko
/Encryptįrašo (ISO 32000-1 §7.5.6), todėl atitinkantys skaitytojai neteisingai skaitė šifruotą turinį kaip atvirąjį tekstą TPdf.SignPades,SignPadesBytesirInjectPadesDssMarkersdabar iškeliaEPadesCrypto, kai šaltinio dokumentas yra šifruotas, vietoj to, kad tyliai išvestų sugadintą ar nepatikrinimą failą; prieš pasirašydami ar įterpdami DSS medžiagą pašalinkite šifravimą
Version 2.14.1
Pataisyta (Fixed)
TPdf.SignPadesirSignPadesBytesdabar užpildo visus keturis parašo žodyno/ByteRangelaukus; anksčiau paskutiniai trys laukai likdavo jų nuliniais žymekliais, todėl sukurti parašai deklaravo tuščią baitų diapazoną ir nesėkmingai tikrino atitinkančiuose tikrintuvuose- PAdES B-LTA dokumento laiko žymos žodynai gauna tą patį
/ByteRangeužpildymo korekciją ValidatePadesCompliancedabar priima standartinį parašo išdėstymą, kai baitų diapazono tarpas turi šešioliktainę/Contentsreikšmę, ir tikrina, kad antrasis diapazono segmentas baigiasi tiksliai failo pabaigoje; anksčiau tik be tarpo diapazono eigos praeidavo draudimo tikrinimą
Version 2.14.0
Pridėta (Added)
TPdf.ExportXFDFserializuoja kiekvieną formos lauko reikšmę ir anotaciją visuose puslapiuose į XFDF dokumentą (ISO 19444-1), išvedant<fields>hierarchinėms formos reikšmėms ir<annots>visiems palaikomų anotacijų potipių (teksto, paryškinimo, pabraukimo, perbraukimo, banginio pabraukimo, linijos, apskritimo, kvadrato, karetės, daugiakampio, daugiakampio linijos, antspaudo, rašalo, laisvo teksto, priedų, garso, nuorodos, redagavimo) anotacijomsTPdf.ImportXFDFnuskaito XFDF dokumentą atgal į įkeltą PDF, atkurdamas anotacijas atitinkamuose puslapiuose ir taikydamas lauko reikšmes jų valdiklių anotacijomsTPdfAnnotationįrašas gavoName(NM),Subject,ModificationDate(M),CreationDate,Icon,Opacity(CA), linijų galuosius taškus, daugiakampių/daugiakampių linijų viršūnes ir rašalo sąrašo gestų laukus, kad XFDF apskritimai išsaugotų visus anotacijų metaduomenis- Naujas
XfdfLabpavyzdys Delphi, C++Builder ir Lazarus demonstracinių rinkinių demonstracijoms rodo eksporto/importo apskritimą
Version 2.13.6
Pataisyta (Fixed)
ValidatePdfAdabar laiko katalogo/Metadatasrautus be/Type /Metadataar/Subtype /XMLkaip trūkstamus XMP metaduomenis perpvaiMissingXmpMetadata- PDF/A išankstinio tikrinimo ataskaitos dabar klasifikuoja
pvaiMissingXmpMetadatakaip Metaduomenis ir rekomenduoja katalogo/Metadatasrautą su/Type /Metadata,/Subtype /XML, nefiltruotu XMP irpdfaidžymekliais
Version 2.13.5
Pataisyta (Fixed)
ValidatePdfAdabar praneša apie Widget anotacijas be išvaizdos žodyno ir PDF/A-2 / PDF/A-3 anotacijas, kurioms reikia, bet trūksta/AP, perpvaiAnnotationApDictViolation- PDF/A išankstinio tikrinimo ataskaitos dabar kategorija
pvaiAnnotationApDictViolationkaip turinys, kurį žymeklių įterpimas negali pataisyti
Version 2.13.4
Pataisyta (Fixed)
ValidatePdfAdabar praneša apie PDF/A-2 ir PDF/A-3 eilutinių vaizdų/Iar/InterpolatereikšmętrueperpvaiImageDictionaryViolation, atitinkantis esamą Image XObject žodyno draudimą- PDF/A išankstinio tikrinimo ataskaitos dabar kategorija
pvaiImageDictionaryViolationkaip turinys, kurį žymeklių įterpimas negali pataisyti
Version 2.13.3
Pataisyta (Fixed)
ValidatePdfAdabar praneša apie PDF/A-1 eilutinių vaizdų, naudojančių/LZWDecodear sutrumpintus/LZWfiltrus turinio srautuose, pažeidimus perpvaiInlineImageLzwForbidden, atitinkantis esamą PDF/A-2 ir PDF/A-3 eilutinių vaizdų draudimą- Eilutinių vaizdų filtrų skaitytuvas dabar tęsiamas pro pirmuosius išteklių pavadinimus, pvz.,
/GS1, išvengiant sustojimų plačiau skenuojant PDF/A-1 turinio srautus
Version 2.13.2
Pridėta (Added)
TPdf.SetFocusedFormFieldTextįrašo tekstą į šiuo metu sufokusuoto formos lauko redagavimo buferį perFORM_ReplaceSelection, simetriškaFocusedFormFieldText. AcroForm teksto/combo laukai vykdo reikšmę į/Vprarandant fokusą ir išsaugo; XFA teksto laukams įrašas patenka tik į atmintyje esantį buferį (PDFium neatskleidžia viešo API, kad suderintų XFA reikšmes su duomenų rinkinių paketu, todėl jis neišlieka išsaugojus)- JavaScript prieglobos platforma dabar prijungiama kiekvieną kartą, kai V8 variklis yra prieinamas, nepriklausomai nuo to, ar dokumentas yra XFA — taigi įterptasis AcroForm JavaScript (doc lygio skriptai, lauko skaičiavimai,
app.alert) gali vykdytis. Anksčiaum_pJsPlatformbuvo sujungtas tik XFA dokumentams, tyliai išjungiant AcroForm JS
Pakeista (Changed)
- JavaScript platformos prijungimas dabar yra nepriklausomas nuo XFA sprendimo
InitializeFormFill—m_pJsPlatformlentelė sukuriama kiekvieną kartą, kaiV8FeaturesAvailableyra tiesa, taikoma po XFA versijos/atgalinio skambučio sujungimo, o ne įterpta jame
Version 2.13.1
Pridėta (Added)
- Nauji prieglobos įvykiai pateikia informaciją, kurią v2.13.0 formos pildymo atgaliniai skambučiai anksčiau nuryjo:
OnXfaUriAction,OnXfaPageCountChanged,OnXfaFocusChange,OnXfaEmail,OnXfaHttpRequest,OnXfaOpenFile,OnJavaScriptBeep,OnJavaScriptPrint,OnJavaScriptMail,OnJavaScriptSubmitForm. Kiekvienas įvykis pagal nutylėjimą naudoja esamą neveikiamą elgseną, kai nepriskirtas, todėl esami prieglobos subjektai nėra paveikti TPdf.XfaFormPacketstik skaitymo savybė grąžina vienkartinį visų XFA paketų momentinį vaizdą (TXfaPacketList), įgyvendinantTXfaPacket/TXfaPacketListtipus, anksčiau deklaruotus, bet nenaudojamus- XFA specifiniai PDFium klaidų kodai
FPDF_ERR_XFALOAD/FPDF_ERR_XFALAYOUTdabar susieti ir pateikiami perLastPdfError, pakeičiant bendrą „Nežinoma klaida" XFA įkėlimo/išdėstymo klaidoms
Pakeista (Changed)
FFI_DoURIActionWithKeyboardModifierdabar konsultuojasi suOnXfaUriActionprieš vykdydamas URI iš XFA lauko apvalkale, suteikdamas priegloba veto teisę (sauga: piktybinis XFA laukas anksčiau galėjo neribotai paleisti bet kokius URL). Nepriskirti tvarkikliai išsaugo ankstesnįShellExecuteWnumatytuosius nustatymusDecodeFormFieldTypedabar nukreipia XFA lauko tipus perIsXfaFormField, o ne per aiškų 8 šakų atvejį, išlaikant sąrašą suderintą suFPDF_FORMFIELD_XFA_*pagal eilės numerio poslinkį
Pataisyta (Fixed)
ValidatePdfAdabar praneša apie PDF/A-1 pretenzijas, naudojančias PDF 1.5 kryžminio nuorodos srautus ar objektų srautus, naujupvaiPdfA1Pdf15Structureklausimas, tęsiant leisti objektų srautus PDF/A-2 ir PDF/A-3
Version 2.13.0
Pridėta (Added)
- Pilnas XFA (XML Forms Architecture) vykdymo laiko palaikymas:
TPdf.InitializeFormFilldabar sujungia visus 14 versijos 2FPDF_FORMFILLINFOatgalinių skambučių (FFI_DisplayCaret,FFI_GotoURL,FFI_PageEvent,FFI_PopupMenu,FFI_OpenFile,FFI_EmailTo,FFI_UploadTo,FFI_GetPlatform,FFI_GetLanguage,FFI_DownloadFromURL,FFI_PostRequestURL,FFI_PutRequestURL,FFI_OnFocusChange,FFI_DoURIActionWithKeyboardModifier) ir prijungiaIPDF_JsPlatform, kad XFA palaikomaspdfium.dllgalėtų atvaizduoti ir skriptuoti dinamines XFA formas - Nauja
Lib\FPdfXfa.pasvienetas, deklaruojantis XFA konstantas (FXFA_PAGEVIEWEVENT_*,FXFA_MENU_*,FXFA_SAVEAS_*,FPDF_FORMFIELD_XFA_*) irTXfaPacket/TXfaSaveFormattipus, anksčiau nurodytus tik komentaruose - XFA statinis paketų skaitytuvas
TPdf:GetXfaPacketCount/GetXfaPacketName/GetXfaPacketContent/GetXfaPacketByNameirGetXfaTemplate/GetXfaDatasets/GetXfaConfigištraukia XFAtemplate,datasetsirconfigpaketus kaip neapdorotą XML be XFA vykdymo laiko — naudinga atitikties auditui ir duomenų migracijai - Galimybių zondai: pasaulinis
XfaFeaturesAvailableir per dokumentąTPdf.XfaRuntimeAvailable(arFPDF_LoadXFAiš tikrųjų pavyko) irTPdf.XfaStaticReadable(ar paketų skaitytuvų eksportai išsprendžiami) TPdfFormFieldTypeišplėstas sufiXfa,fiXfaCheckBox,fiXfaComboBox,fiXfaImageField,fiXfaListBox,fiXfaPushButton,fiXfaSignature,fiXfaTextField, suDecodeFormFieldTypežemėlapiu naujomsFPDF_FORMFIELD_XFA_*reikšmėms- JavaScript prieglobos įvykiai
TPdf:OnJavaScriptAlert,OnJavaScriptResponse,OnXfaGotoUrlirOnXfaRuntimeMissingleidžia prieglobia tinkinti JS dialogo langus ir XFA navigaciją arba reaguoti, kai XFA dokumentas negali paleisti variklio - Naujas
XfaLabDelphi pavyzdys, demonstruojantis XFA aptikimą, paketų ištraukimą, galimybių zondavimą ir vykdymo laiko trūkumo atsarginį kelią
Pakeista (Changed)
TPdf.LoadDocumentdabar iš anksto nuskaito įvestį XFA žymeklių (/XFAAcroForm žodyne arba katalogo/NeedsRendering), ir radus, automatiškai pasirenkapdfium.v8.dllnustatantEnableV8Engine := Trueprieš pirmą singleton bibliotekos įkėlimą; kai paprastapdfium.dllyra įkelta, procesas negali perjungti, todėlOnXfaRuntimeMissingsignalizuoja apie tą atvejįTPdf.GetPageCountdabar atspindi puslapių skaičių, kurį XFA variklis praneša perFFI_PageEventpo dinaminio puslapiavimo, o ne tik statinį PDF puslapių medį- Kai XFA dokumentas atidarytas, bet vykdymo laikas neprieinamas,
InitializeFormFilldabar nustatoversion=1irxfa_disabled=1, vietoj to, kad prašytų 2 versijos su nepristytais atgaliniais skambučiais, kurie anksčiau galėjo sukelti blogą atgalinio skambučio rodyklės nukreipimą
Version 2.12.2
Pataisyta (Fixed)
ValidatePdfACompliancedabar praneša apie naudojamus pasirinktinių XMP vardų sritis bepdfaExtension:schemas, vis dar priimant standartinępdfaidmetaduomenis be plėtinio deklaracijų- PDF/A-3 įdėtų failų tikrinimas dabar reikalauja tiek aukščiausio lygio
/F, tiek/UFįrašų failo specifikacijos žodynuose ir ignoruoja įdėtus/EFsrauto raktus tikrinant tuos pavadinimus
Version 2.12.1
Pataisyta (Fixed)
ValidatePdfACompliancedabar dekoduoja pabėgusius PDF pavadinimų žetonus prieš atitikdama JavaScript, LZWDecode, Type1 ir susijusius draudžiamus pavadinimus, todėl užmaskuoti, bet semantiškai identiški pavadinimai praneša teisingai- PDF/A eilutinių vaizdų tikrinimai dabar atmeta
/Filterir/Freikšmes, naudojančias/LZWDecode, sutrumpintą/LZWar/Crypt, įskaitant masyvo ir pabėgusio pavadinimo formas - PDF/A tikrinimas dabar praneša apie metaduomenų srautus su draudžiamais srauto filtrais, OutputIntent ICC profilius, kurių
/Nkomponentų skaičius trūksta arba nenuoseklus, ir PDF/A-3 įdėtų failų specifikacijas su trūkstamu ar netinkamu/AFRelationship
Version 2.12.0
Pridėta (Added)
- TSA HTTP užklausos dabar nustato aiškius 30 s laiko limitą kiekvienai fazei (išsprendimui/prisijungimui/siuntimui/gavimui) per
WinHttpSetTimeouts, todėl lėta ar nepasiekiama laiko žymos institucija negali amžinai sustabdyti pasirašymo gijos, o ne pasikliauti WinHttp numatytosiomis vertėmis - Kiekvienai užklausai priskirtas nonce išvedimas PAdES B-T / B-LTA laiko žymų užklausoms, kai kvietėjas praleido
TPadesSignOptions.Nonce: monotoninio skaitiklio + sieninio laikrodžio +GetTickCount64+ proceso ID SHA-256 sulankstymasis pakeičia ankstesnį fiksuotą$100000000atsarginį variantą, todėl dvi užklausos, išduotos tuo pačiu milisekundu, nebepernaudoja to paties apsaugos nuo pakartotinio naudojimo nonce PdfInflatedabar riboja išskleidžiamą išvestį iki 256 MiB, kad sustabdytų zlib suglaudintą srautą nuo atminties išeikvojimo priešiškoje ar sugadintoje įvestyje (“zlib bomba”); riba yra dosni bet kokiam tikram PDF srautui
Pakeista (Changed)
TPdfViewperdangos maišymas (paieškos paryškinimas, teksto pasirinkimas, skaitymo žodis, pasklidimo pasirinkimas) nebedaro pikselių lygioGetPixel/SetPixelV; stačiakampis dabar maišomas per 32 bpp ekraneTBitmapirScanLinevienu perėjimu, pašalinant tūkstančius GDI branduolio kirtimų per piešimą ir padarant didelius pasirinkimus greitusFPdfAsn1.TDerReader.ReadIntegerdabar atmeta INTEGER laukus, ilgesnius nei 8 baitai (ir 8 baitų neigiamus, kurių ženklo bitas reikalautųshl >= 64), grąžindamas 0 vietoj neteisingos reikšmės apskaičiavimo per neapibrėžtą postūmio elgseną CMS/PAdES ASN.1 įvestyjeParseTimeStampRespnebeatgarsina užklausos nonce kaipTPadesTimestamp.Nonce; kol TSTInfo skaitytuvas, tikrinantis grąžintą nonce, neįgyvendinamas, laukas lieka 0, signalizuodamas “netikrintas”, o ne suteikdamas kvietėjams klaidingą pasitikėjimą, kad laiko žymos atsakas yra šviežias
Pataisyta (Fixed)
PointsToPixelsgrąžino savo įvestį nepakitusią kiekvienam DPI: daliklis buvoPointsPerInch(72 konstanta), o ne literalinis 72, sutraukdamas formulę ikiResult := Points. Bet koks išorinis kvietėjas, atliekantis taškų→įrenginio pikselių dydžio nustatymą per šį pagalbininką, dabar gauna teisingąPoints × PixelsPerInch / 72PdfMaxObjNumnepakankamai suskaičiavo dokumentuose, naudojančiuose objektų srautus (PDF 1.5+ ObjStm): objektai, suglaudinti/ObjStmviduje, neturiN 0 objžymeklio, todėl neapdorotų baitų nuskaitymas jų praleido, o įterpėjai, priskiriantysMaxObj+1naujiems objektams, susidūrtų su paslėptais ObjStm nariais ir tyliai sugadintų failą. Nuskaitymas dabar pirmiausia išplečia objektų srautus, kad kiekvienas objekto numeris būtų matomasInjectPdfAMarkersdaugiau nesuklastoja PDF/A atitikties pretenzijos šifruotame dokumente: PDF/A (ISO 19005-1 §7.1) draudžia šifravimą, o įterpėjas anksčiau kopijavo šaltinį su žymekliais net tada, kai pats kitas tikrinimas jį atmestų. Kai nustatytaHasEncrypt, šaltinis dabar praleidžiamas nepakeistas. ĮprastasTPdf.SaveAsPdfAkelias jau pašalina šifravimą (saRemoveSecurity) prieš įterpimą, todėl tai veikia tik tiesioginius kvietėjusPdfReadStreamBytesdabar atsisako/Lengthdidesnio nei visas failas prieš paskirdamas rezultato buferį, uždarant ankstyvo paskyrimo kelią ant sugadintos ar priešiškos netiesioginės ilgio reikšmės
Version 2.11.0
Pridėta (Added)
- PDFium
FPDF_FILEHANDLERįrašas dabar deklaruoja savo šešis atgalinius skambučius (Release,GetSize,ReadBlock,WriteBlock,Flush,Truncate) kaip tikrus laukus, o ne komentarus, atitinkančius C antraštės išdėstymą. XFA FFI failo perdavimo atgaliniai skambučiai (FFI_OpenFile/FFI_EmailTo/FFI_UploadTo/FFI_DownloadFromURL), grąžinantys ar vartojantysPFPDF_FILEHANDLER, vis dar neįgyvendinti Pascal formos pildymo sluoksnyje, tačiau tipas dabar yra struktūriškai teisingas bet kokiam būsimam XFA pateikimo/įkėlimo keliui - PDFium bibliotekos įkėlimas ir iškėlimas (
LoadLibrary/UnloadLibrary) dabar serializuojami proceso lygio kritiniu skyriumi, todėl duTPdfFuture<T>darbiniai gijos (arba darbinis, bėgantis su pagrindiniu) negali abu stebėtiPDFiumLibrary=0ir dvigubai susieti arba paleisti DLL kol kita gija yra susiejimo viduryje initialization/finalizationskyrius dabar iškviečiaUnloadLibraryvieneto iškėlimo metu, užtikrinant, kadFPDF_DestroyLibraryvykdoma (darbinių gijų sujungimas, V8 izoliacijos pašalinimas, šriftų/talpyklos nušlavimas), vietoj to, kad pasikliaujant OS DLL susigrąžinimu
Pakeista (Changed)
TPdf.SetActivedabar nuryja bet kokią išimtį įkėlimo metu (anksčiau tikEPdfError), todėl srauto klaida ar prieigos pažeidimas formos/puslapio sąrankos metu paliekaActive=False, o ne iš dalies įkeltą komponentą su neapibrėžta būsena- Nuoseklus simbolių kodavimas PDFium metaduomenų rakto argumentams:
TPdf.GetMetaTextdabar naudoja tą patį FPCAnsiString/ DelphiUTF8Encodepadalijimą kaipGetViewerPreferenceir įkėlimo keliai, vietoj plikoAnsiString(Tag)pavertimo - Dublikatai
BytesToAnsi,AnsiToBytes,WriteBytesirWriteStrpagalbininkų pašalinti:FPdfCompressdabar juos importuoja išFPdfPdfCommon(joWriteBytesToStream/WriteAnsiToStreampseudonimai atsisakyti) ir perteklinis trijų argumentųBytesToAnsiperkrovimasFPdfPdfayra pašalintas.FPdfAsn1sąmoningai išlaiko savo vietinę kopiją, kad kriptografijos sluoksnis liktų laisvas nuo atitikties sluoksnio vieneto
Pataisyta (Fixed)
- Išteklių nutekėjimas
TPdf.LoadDocument(failas, atmintis,TBytes,TMemoryStream, pasirinktinis srautas) irTPdf.CreateDocument: jeiInitializeFormFillarReloadPageiškildavo po to, kaiFPDF_LoadDocument/FPDF_CreateNewDocumentpavyko, gimtasisFPDF_DOCUMENTrankenas buvo nutekamas, nesFActivevis dar buvo False tuo metu. Kiekvienas kelias dabar apgaubia po įkėlimo sąrankątry/exceptir nesėkmės atveju uždaro dokumentą, palikdamas komponentą švariai neaktyvų - Patogesni PDFium DLL įkėlimo diagnostika:
CheckLoadLibraryaptinkaERROR_BAD_EXE_FORMAT(193) ir praneša apie 32/64 bitų architektūros neatitikimą, nurodant atitinkamąDLLs/Win32arDLLs/Win64versiją, vietoj to, kad perduotų tik bendrą OS klaidą.CheckGetProcAddressdabar nurodo, kad įdiegtaspdfium.dllyra senesnis nei susiejimas, kai trūksta reikalingo eksporto, o ne perduodamas plynasis OS „procedūra nerasta" tekstas
Version 2.10.1
Pataisyta (Fixed)
- PAdES SignerInfo sid standartizavimas: pasirašytojo identifikatorius dabar naudoja RFC 5652 §5.3
issuerAndSerialNumberformą (issuer Name + serialNumber, abu ištraukti žodis žodin iš pasirašytojo sertifikato DER), pakeičiant ankstesnį nestandartinįsubjectKeyIdentifier+ pilno sertifikato SHA-256 vietos žymeklį, kurį Adobe Acrobat ir kiti atitinkami tikrintuvai atmetė. Naujas TbsCertificate DER ėjikas (ExtractIssuerAndSerial) nuskaito issuer SEQUENCE ir serial INTEGER kaip neapdorotus TLV baitus — serijos numeriai dažnai viršijaInt64ribą, todėl neapdorotas TLV yra privalomas.subjectKeyIdentifierforma lieka tik kaip atsarginis variantas, kai sertifikato DER analizė nesėkminga
Pakeista (Changed)
TCmsSignerId.SerialNumber: Int64pakeistas įSerialDer: TBytes(neapdorotas serialNumber TLV). CMS kūrėjas įdeda supjaustytą TLV žodis žodin įIssuerAndSerialNumber, išvengdamasInt64perpildos 20 baitų CA serijos numeriams (RFC 5280 §4.1.2.2 viršutinė riba)
Version 2.10.0
Pridėta (Added)
- PAdES B-LT ilgalaikis tikrinimas: kai
TPadesSignOptions.Level >= plB_LT,SignPadesBytesprideda prieauginę atnaujinimą, nešančią/DSSžodyną su pasirašytojo sertifikatu ir pilna tarpine grandine (pasirašytas root išskiriamas pagal RFC 5652 §10.2.3), plius/Extensions /ESICLevel 1 žymeklį (EN 319 142-1 §5.4.2) - PAdES B-LTA archyvavimo laiko žyma: kai
Level >= plB_LTAirTsaUrlnustatyta, pridedama Document Time-stamp parašo žodynas (/SubFilter /ETSI.RFC3161), kurio/ByteRangeapima visą failą; ESIC žymeklis paaukštinamas iki Level 2. Tai užbaigia keturis PAdES bazinius lygius (B-B, B-T, B-LT, B-LTA) - Sertifikatų grandinės rinkimas:
ResolveWinSignerdabar iškviečiaCertGetCertificateChainir užpildoTPadesResolvedSigner.ChainCertDertarpiniais CA sertifikatais, kad B-LT/DSS /Certsneštų kiekvieną sertifikatą, reikalingą parašui patikrinti be išorinių paieškų.CertFreeCertificateContextdabar susieta, uždarant viena-kontekstas-vienam-parąšui nutekėjimą, pastebėtą v2.8.0 - PDF/A integracijos darbo eiga:
TPdf.SignPadesWithPdfApirmiausia konvertuoja dokumentą į PDF/A (aukščiausias lygis, kurį biblioteka šiandien išveda), tada pritaiko pageidaujamą PAdES parašą — ilgalaikio archyvavimo konteinerio modelį, kurį EN 319 142-1 Priedas A.7 rekomenduoja
Version 2.9.0
Pridėta (Added)
- PAdES B-T patikima laiko žyma:
TPadesSignOptionsgaunaLevel,TsaUrlirNoncelaukus. KaiLevel >= plB_TirTsaUrlnustatyta,SignPadesBytesištraukia parašo reikšmę iš sukurto CMS, prašo RFC 3161 laiko žymos per ją ir įdeda grąžintą TimeStampToken kaip SignerInfo nepasirašytą atributąsignature-time-stamp— B-T patikimo laiko žingsnis (EN 319 142-1 §6.3 req o) FPdfTsa: kelių platformų RFC 3161 klientas —BuildTimeStampReq(versija 1, SHA-256 messageImprint per parašo reikšmę, nonce, certReq=true),ParseTimeStampResp(priima PKIStatus 0/1, atmeta 2+, ištraukia TimeStampToken ContentInfo žodis žodin) irRequestTimestamp(vieno veiksmo kūrimas+POST+analizė).PadesTsaAvailableriboja funkciją platformose be HTTP posistemėsFPdfTsaWin: Windows WinHttp posistemė, dinamiškai susieta iš winhttp.dll (naujų kompiliavimo laiko priklausomybių nėra; HTTPS derama Windows sertifikatų saugyklos). AtspindiFPdfCryptoWindinaminio susiejimo modelįFPdfCms:ExtractSignatureValueeina per sukurtą CMS, kad atgautų neapdorotus parašo oktetus (TSA maišos įvestis), oAddSignatureTimestampToCmsatkuria ContentInfo su naujuunsignedAttrs [1](0xA1), nešančiu laiko žymos atributą. 1-osios pakopos tikrintuvas atpažįsta rezultatą kaip B-T parašą
Version 2.8.0
Pridėta (Added)
- PAdES B-B parašų dėklas: keturi nauji grynosios Pascal/kelių platformų statybos blokai (
FPdfSha256,FPdfAsn1,FPdfCms,FPdfCrypto) plius Windows CNG posistemė (FPdfCryptoWin) leidžiaTPdf.SignPades/SignPadesToStreampagaminti PAdES B-B parašą nuo pradžios iki pabaigos. Pasirašytojo sertifikatas nustatomas pagal SHA-1 kontrolinį antspaudą iš Current User “MY” saugyklos; RSA-PSS (rekomenduojamas), RSA PKCS#1 v1.5 ir ECDSA visi palaikomi perNCryptSignHash FPdfSha256: savarankiškas FIPS 180-4 SHA-256 (Init/Update/Final + vieno veiksmo pagalbininkai). FPC 3.2.2 neturi SHA-2 modulio, todėl biblioteka turi vieną, kad kiekvienas CMS kodo kelias išliktų vienameTSHA256Digesttipe be RTL šakojimosiFPdfAsn1: DER koduotuvas (TDerWriter) ir skaitytuvas (TDerReader), apimantis SEQUENCE/SET/OID/INTEGER/OCTET STRING/UTCTime/GeneralizedTime/kontekstinio specifiškumo žymes, su galutinio-ilgio kodavimu ir IMPLICIT-žymių apdorojimu, kurio CMS reikalaujaFPdfCms: CAdES SignedData kūrėjas (BuildSignedData), išvedantis content-type, message-digest ir signing-certificate-v2 pasirašytus atributus, kuriuos PAdES bazinis lygis reikalauja, su pasirinkiniais signing-time ir commitment-type-indication. SignedAttrs maiša apskaičiuojama per SET-žymėtą (0x31) formą ir pakartotinai išvedama su IMPLICIT [0] (0xA0) žyme pagal RFC 5652 §5.4FPdfCrypto+FPdfCryptoWin: kriptografinės posistemės abstrakcija suPadesCryptoAvailable/ResolvePadesSigner, o Windows realizacija susieja crypt32.dll / ncrypt.dll dinamiškai (jokios naujos kompiliavimo laiko DLL priklausomybės). ECDSA parašai perkoduojami iš Windows IEEE P1363 r¦s formos į DERECDSA-Sig-Valueformą, kurios CMS reikalaujaSignPadesBytes: baitų lygmens parašo įterpimas — rezervuoja fiksuoto pločio/Contentsšešioliktainę vietą, apskaičiuoja apimantį/ByteRange, sudaro dokumento maišą, sukuria ir įdeda CMS bei prideda prieauginį atnaujinimą. Tikrintuvas (v2.7.0) atpažįsta išvestį kaip PAdES B-B parašą
Version 2.7.0
Pridėta (Added)
- PAdES struktūrinis tikrintuvas (ETSI EN 319 142-1 V1.2.1): naujas
FPdfPadesmodulis irTPdf.ValidatePadesmetodas tikrina parašo reikšmių žodynus, pasiekiamus iš/ByteRange, eina per CMSSignedDataviduje/Contentspakankamai toli, kad patvirtintų CAdES detached formą, ir aptinka keturis bazinius lygius (B-B, B-T, B-LT, B-LTA) bei Document Time-stamp žodynus (/SubFilter /ETSI.RFC3161) - PAdES punkto lygmens problemų rinkinys: 26
ppei*išvardijimai apima/SubFilterpriimtinumą (adbe.pkcs7.sha1iradbe.x509.rsa_sha1pažymėti kaip drausti),/ByteRangefailo aprėptį,/Certdraudimą, CMSSignedDataformą (vienas pasirašytojas, detached eContent, versijų intervalas), reikiamus pasirašytus atributus (content-type,message-digest,signing-certificate/v2), draustus maišos algoritmus (MD5, SHA-1),/Reasonvscommitment-type-indicationtarpusavio išimtinumą (req d), B-T patikimo laiko reikalavimą, B-LT/DSS+/Certs+ ESIC Level 1 žymeklį ir B-LTA Document Time-stamp + ESIC Level 2 žymeklį - DSS įšvirkštuvas:
TPdf.SaveAsPadesDss/SaveAsPadesDssToStreamprideda prieauginį atnaujinimą, nešantį/DSSžodyną (su/Certs,/OCSPs,/CRLssrautų masyvais) ir/Extensions /ESICžymeklį (Level 1 arba 2) dokumento kopijoje, išlaikant pradinius baitus — B-LT/B-LTA tikrinimo medžiagos įterpimo žingsnis (punktas 5.4.2) - Kelių platformų, nulinės priklausomybės etapas: tikrintuvas ir įšvirkštuvas yra gryna Pascal ir veikia kiekvienoje palaikomoje IDE (Delphi, Lazarus, FPC, C++Builder); šiam leidimui nereikia kriptografinės posistemės ir neįvedama jokia nauja DLL priklausomybė
Version 2.6.0
Pakeista (Changed)
- Kelių standartų dubliavimo šalinimas: dar septynios pasikartojančios pagalbinės funkcijos (PdfEnclosingObjNum, PdfDictRefNum, PdfExpandObjectStreams, PdfTextStr, ExtractLiteralString, ExtractXmpAttr) pašalintos iš atskirų standartinių modulių ir sujungtos į
FPdfPdfCommon, sumažinant apie 300 eilučių kopijuoti-įklijuoti priežiūros naštą - PreflightReport kokybė: PDF/X ir PDF/E turinio klasės problemos, kurios anksčiau patekdavo į bendrąją “trūkstamas žymeklis” kategoriją, dabar turi tikslias Content/Metadata/Security kategorijas ir punkto specifinius rekomendacijas (apie 15 išvardijimų abiejuose standartuose)
- PDF/E ir PDF/R testų padengimas: dar šeši nulinio padengimo išvardijimai gavo teigiamus testus (
pveiLzwForbidden,pveiJavaScriptForbidden,pveiFormFieldsForbidden,pveiEmbeddedFilesForbidden,pvriBadHeader,pvriProhibitedInfoEntry) - Lazarus kompiliavimo pataisymas:
Tests.PdfVT(tik Delphi DUnitX modulis, pridėtas v2.5.x) dabar neįtraukiamas iš Lazarus projekto, siekiant atkurti kompiliavimą
Version 2.5.3
Pridėta (Added)
- OutputIntent išsamumas (PDF/X-4 §6.2.4):
pvviOutputIntentSchemepažymi OutputIntent, kurio/Snėra/GTS_PDFX;pvviOutputIntentMissingIdentifierpažymi trūkstamą/OutputConditionIdentifier - PDF/VT-2 Reference XObject išimtis (§6.2.2):
pvviReferenceXObjectForbiddennebesuveikiaPDF/VT-2failui, kuris gali teisėtai naudoti Reference XObject X-5g/5pg bazėje - MIME ribos simbolių tikrinimas (RFC 2046 §5.1.1):
vtmviBoundaryInvalidCharpažymi ribą, kurios simboliai patenka už bchars rinkinio ribų arba kurios ilgis viršija 70
Pataisyta (Fixed)
InjectPdfVTMarkersdabar rašo Info/CreationDateir/ModDateiš išsaugojimo parinkčių, kad pagamintas failas sėkmingai pereitųValidatePdfVTCompliancebe klaidingopvviInfoModDateMismatch(įšvirkštuvas anksčiau perrašinėjo XMP datas, bet paliko Info žodyno datas pasenusiomis)
Version 2.5.2
Pridėta (Added)
- Info
/ModDatenuoseklumas (§6.3 NOTE 2, PDF/X-4 bazė):pvviInfoModDateMismatchpažymi Info žodyno/ModDate, kuris po PDF-datos-į-XMP-datą normalizavimo nelygusxmp:ModifyDate - PDF/VT-2s vidinio bloko atitiktis (Priedas A.2): MIME tikrintuvas dabar paleidžia
ValidatePdfVTCompliancekiekvienai vidinėsapplication/pdfdaliai ir pažymi ne PDF/VT turinį pervtmviInlinePdfNotPdfVT
Version 2.5.1
Pridėta (Added)
- DParts dalijimo tikrinimas (ISO 16612-2 §6.5 Lentelė 4):
pvviDPartsBadChunkingpažymi/DPartsmasyvą, kurio ne paskutiniai pomasiaviai neturi tiksliai 8192 įrašų arba kurio paskutinis pomasyvis patenka už 1..8192 ribų - RecordLevel tarp-srautų nuoseklumas (Priedas A.2): PDF/VT-2s MIME tikrintuvas dabar ištraukia kiekvienos vidinės PDF
/RecordLevelir pažymi nesutarimą pervtmviRecordLevelMismatch, papildant esamą NodeNameList tikrinimą - Pasikartojantys grafinio objekto patarimai (§6.7):
pvviGtsScopeInvalidValuepažymi/GTS_Scopeuž rinkinio {SingleUse, Record, File, Stream, Global, Unknown};pvviGtsScopeRecordWithoutRecordLevelpažymi/Recordbe/RecordLevel;pvviGtsXidNotUuidpažymi/GTS_XID, kuris nėra RFC 4122 uuid: URI;pvviGtsEnvMissingpažymi trūkstamą/GTS_Env, kai/GTS_Scopeyra Stream arba Global (§6.7.4) - MIME išankstinės nuorodos aptikimas (Priedas A.2):
vtmviForwardReferencepažymi vidinę PDF, kuri cituoja failo vardą (per/EF /F), neįvestą ankstesnio priedėlio dalies sraute
Pataisyta (Fixed)
ExtractNodeNameListFromPdfirExtractRecordLevelFromPdfmodulyjeFPdfPdfvtMimeišsprendė pasikartojantį off-by-one, kai 1-pagrindo poslinkis, grąžintasAnsiFindKey, buvo traktuojamas kaip absoliutus baito poslinkis į išplėstą PDF
Version 2.5.0
Pridėta (Added)
- PDF/VT Document Part Metadata (DPM, ISO 16612-2 §6.6):
TPdfVTSaveOptionsgavoDpmEntriesirDpmTarget, kad rašytojas galėtų pridėti/DPMžodyną sintetizuotam DPart mazgui, su rakto vardo tikrinimu pagal Priedo E second-class-prefix taisyklę ir §6.6 NMTOKEN / unikalumo /GTS_Managed-formos taisykles tikrintuvo pusėje - PDF/VT-2s srautinė mainų sąsaja (Priedas A): naujas
FPdfPdfvtMimemodulis suteikiaBuildPdfVT2sStreamirValidatePdfVT2sStreammultipart/mixedMIME vokui, nešančiam vidinius PDF/VT blokus ir priedų ICC profilius, suX-PDFVT-Stream-version: 1antraštės eiliškumo taisykle ir tarp-srautųNodeNameListnuoseklumo tikrinimu TPdf.ValidatePdfVTdabar atlieka patikimą JavaScript-veiksmų skaičiavimą perFPDFDoc_GetJavaScriptActionCount, papildant baitų lygmens/JavaScriptvardo skenavimą
Pataisyta (Fixed)
- PDF/VT
Trappedteisingumas PDF/X-4 bazėje:ptvUnknownišvardijimo reikšmė pašalinta (PDF/X-4 draudžia/Unknown),ptvUnspecifiednormalizuojama į/Falserašymo metu (trūkstamas/Trappedtaip pat draudžiamas), o naujapvviTrappedInvalidproblema pažymi nebuvusią arbaUnknownreikšmę ValidatePdfVTCompliancedabar išplečia objektų srautus (PdfExpandObjectStreams) prieš skenavimą, kad katalogas, OutputIntent arba Metadata žodynas, saugomas suspausto ObjStm viduje (PDF 1.5+, tipiška PDF/X-4 gamintojams), būtų pasiekiamas baitų lygmens paieškoms
Pakeista (Changed)
- PDF/VT-1 dabar paveldi visus PDF/X-4 turinio draudimus:
pvviAcroFormForbidden(/AcroFormarba/XFA),pvviAdditionalActionsForbidden(katalogas/AA),pvviMissingTrimBoxirpvviReferenceXObjectForbidden(Reference XObject, tik X-5g/5pg) - Kelių standartų dubliavimo šalinimas:
BuildDictObj,IccComponentCount, integruotas sRGB ICC profilis (GetSrgbIccProfile),PdfTextStr,PdfEnclosingObjNum,PdfDictRefNumirPdfExpandObjectStreamsbuvo paaukštinti iš trigubų vietinių kopijųFPdfPdfa/FPdfPdfx/FPdfPdfvtį vieną kanoninę vietąFPdfPdfCommon; 3144 baitų ICC literalo dabar egzistuoja tiksliai vieną kartą kodų bazėje
Version 2.4.0
Ištaisyta (Fixed)
InjectPdfUaMarkersnebemeta trailer/Infonuorodos kryžminių nuorodų srauto (cross-reference-stream) bazėje: vietinėSourceTrailerInfoRef(kuriai trūko xref-stream atsarginio varianto) pakeista bendraPdfSourceTrailerInfoRef(perkelta iš PDF/A kopijos, kuri turėjo atsarginį variantą nuo v2.0.0)- Bendroji
PdfReadStreamBytesdabar palaiko netiesiogines/Length N G Rnuorodas (perkelta iš vietinės PDF/A kopijos), todėl PDF/VT, PDF/R ir PDF/E tikrintuvai nebepraleidžia ir teisingai nuskaito XMP metaduomenų srautus, sukurtus įrankių, naudojančių netiesioginį Length (Acrobat, Ghostscript)
Pakeista (Changed)
- Kelių standartų dubliavimosi šalinimas: vietinės
PdfReadTrailerkopijos, esančiosFPdfPdfairFPdfPdfx, vietinėsSourceTrailerInfoRefkopijos, esančiosFPdfPdfairFPdfPdfua, bei vietinėPdfReadStreamByteskopija, esantiFPdfPdfa, buvo ištrintos — dabar visur taikomos bendrosiosFPdfPdfCommonversijos, kas pašalina apie ~330 eilučių dubliuojamo kodo ir sumažina kopijų sinchronizavimo priežiūros naštą - PDF/X testų padengimo didinimas: septyni anksčiau nulinio padengimo turinio klasės enum gavo teigiamus testus (
pvxiLzwForbidden,pvxiJavaScriptForbidden,pvxiFormFieldsForbidden,pvxiAdditionalActions,pvxiEmbeddedFilesForbidden,pvxiMissingTrimBox,pvxiTrappedNotSet)
Version 2.3.0
Pakeista (Changed)
- Tęsiamas PDF/A testų padengimo didinimas: dar trys nulinio padengimo enum gavo teigiamus testus;
pvaiForbiddenRenderingIntent(§6.2.9) pažymi nestandartinį rendering-intent pavadinimą turinio sraute;pvaiJpeg2000Violation(§6.2.2) pažymi JPXDecode vaizdą, kurio/NumComponentsyra už {1,3,4} ribų ties Part 2;pvaiInlineImageLzwForbidden(§6.1.10) pažymi vidinį vaizdą, naudojantį LZW filtrą ties Part 2
Version 2.2.0
Pakeista (Changed)
- Kryžminių nuorodų srautų (angl. cross-reference stream) regresiniai testai: esamas
Validate_XrefStreamTrailer_DetectsConformancedabar taip pat patikrina, ar katalogo/Metadatanuoroda yra išsprendžiama ir XMPpdfaid:partyra nuskaitomas kryžminių nuorodų srauto pagrindu (ne tik/Root+/ID); naujasInjectPdfA_XrefStreamBase_RoundTripstestas apsaugo v2.0.0 versijoje pridėtą injektoriaus kryžminių nuorodų srauto kelią; du tarpstandartiniai testai (PdfE_XrefStreamBase_NotRejectedAsUnparsable,PdfR_XrefStreamBase_NotRejectedAsUnparsable) patvirtina, kad PDF/E ir PDF/R tikrintuvai nebeatmeta kryžminių nuorodų srauto PDF failų kaip neanalizuojamų - PDF/A testų skolos panaikinimas:
Validate_MinimalPdf_FlagsRequiredMarkerspatvirtina, kad visiškai minimalus PDF failas sukeliapvaiMissingPdfAIdentifier,pvaiMissingOutputIntent,pvaiMissingIccProfile,pvaiMissingXmpMetadatairpvaiMissingXmpDatesklaidas — taip panaikinant simetrijos atotrūkį nuo PDF/E ir PDF/X tikrintuvų, kurie jau turėjo atitinkamus testus; dar du anksčiau testais nepadengti išvardijimai (angl. enums) gavo teigiamus testus:pvaiUnembeddedFontirpvaiSubsetMissingCidSet
Version 2.1.0
Pataisyta (Fixed)
- PDF/E buvo per klaidą praleistas v2.0.0 kryžminių nuorodų srauto pataisyme: tiek
InjectPdfEMarkers, tiekValidatePdfECompliancevis dar kvietėPdfReadTrailerbeAcceptXrefStream, todėl PDF/E injektorius tyliai nesuveikdavo su PDF 1.5+ išvestimi (pagal nutylėjimą naudojamu pdfiumSaveAsCopy); dabar abi iškvietimo vietos perduodaTrue - Bendroji
PdfReadTrailerkryžminių nuorodų srauto atsarginė funkcija dabar turi/Type /XRefapsaugą, kurią vietinės PDF/A ir PDF/X kopijos jau turėjo, todėl sugadintasstartxrefposlinkis, rodantis į nesusijusį žodyną, švariai pateikia klaidą, užuot klaidingai jį išanalizavus kaip trailer - Netiesioginės nuorodos
/Langišsprendimo funkcija kodeValidatePdfUaCompliance(v2.0.0) buvo nepasiekiama:PdfFindObjDictranda tik<<žodynus, o/Langeilutės objektas yra(...)arba<...>be jokio žodyno; pakeista tiesioginiu objekto kūno nuskaitymu, kuris suranda eilutės žetoną (angl. token)
Pakeista (Changed)
- Septynios dubliuojančios pagalbinės funkcijos (PdfStructureBytes, PdfHasName, PdfCountName, BuildStreamObj), kurios buvo baitiškai identiškos bendrosioms
FPdfPdfCommonversijoms, buvo pašalintos išFPdfPdfairFPdfPdfua— dabar visur naudojamos bendrosios versijos peruses
Version 2.0.0
Pataisyta (Fixed)
- Tylus sutrikimas keliuose standartuose: bendroji pagalbinė funkcija
PdfReadTrailer(naudojama PDF/UA, PDF/X, PDF/VT ir PDF/R žymenų injektorių bei tikrintuvų) dabar priimaAcceptXrefStreamparametrą ir naudoja kryžminių nuorodų srauto objekto žodyną kaip atsarginį variantą, kai nėra raktažodžiotrailer(PDF 1.5+); anksčiau pdfiumSaveAsCopyišvestis (kuri naudoja kryžminių nuorodų srautą) lėmė, kad kiekvienas žymenų injektorius tyliai nesuveikdavo — šaltinio baitai būdavo nukopijuojami nepakeisti, o iškvietimas vis tiek grąžindavo sėkmingą rezultatą; PDF/R-1.0 tikrintuvas (kurio PDF 2.0 pagrindas visada yra kryžminių nuorodų srautas) buvo neaktyvus (veikė kaip no-op); brandi PDF/A tikrintuvo realizacija buvo perkelta į bendrąją pagalbinę funkciją, kad ja pasinaudotų visi standartai - Trailer žodyno nuskaitymas funkcijose
InjectPdfUaMarkersirInjectPdfAMarkersdabar naudoja gylį įvertinantįPdfDictEndvietoj paprastos>>paieškos, todėl trailer, kuriame yra įdėtasis žodynas (pvz.,/Encrypt << ... >>), nebėra nukerpamas per anksti prieš sekantį/Infoįrašą
Pakeista (Changed)
TPdf.ValidatePdfUadabar slopina apytikslį baitų lygiopvuaiFontNotEmbeddedpranešimą, kai tikslus Pdfium objekto modeliopvuaiPdfiumFontNotEmbeddedjau suveikė, todėl patikros (preflight) ataskaitoje nebėra dviejų beveik vienodų eilučių „embed your fonts“ tam pačiam defektuipvuaiLangInvalidFormat(§7.2) dabar išsprendžia netiesioginės nuorodos/Lang(N 0 R) reikšmę į jos eilutės objektą ir patikrina jo turinį, todėl netiesioginė kalbos žyma nebėra aklasis taškas
Version 1.99.0
Pataisyta (Fixed)
pvuaiLangInvalidFormat(§7.2) nebeteikia išskirtinių sąlygų šešioliktainiu kodu užkoduotoms/Langeilutėms: UTF-16BE poros (suFE FFBOM) ir grynosios ASCII šešioliktainės eilutės dabar yra iškoduojamos ir joms taikomas tas pats BCP 47 gramatikos patikrinimas kaip ir tiesioginėms (angl. literal)(...)eilutėms, todėl klaidinga šešioliktainė/Langreikšmė yra aptinkama, o taisyklingai (pvz., UTF-16BEen-US) nebekyla pavojus būti pažymėtai kaip klaidingai
Pakeista (Changed)
pvuaiFontMissingToUnicode(§7.21.7) dabar netaiko reikalavimo/MacExpertEncodingkartu su/WinAnsiEncodingbei/MacRomanEncoding, atitinkant keturias išimties sąlygas, nurodytas punkte
Version 1.98.0
Pridėta (Added)
pvuaiNeedAppearancesTrue(§7.18.4) pažymi AcroForm, kurios/NeedAppearancespožymis (angl. flag) yra true, todėl valdiklio (angl. widget) išvaizda nėra patikimai užrakinama ir pagalbinė technologija negali jos susieti su struktūros medžiu; perkelta iš PDF/A tikrintuvo ir apribota/AcroFormbuvimu, siekiant susiaurinti nuskaitymo sritį
Pakeista (Changed)
- veraPDF rinkinio (angl. corpus) regresija: susietos §7.20 Reference-XObject teigiamos ir neigiamos (angl. pass+fail) poros bei §7.21.4.2 poaimio CharSet/CIDSet teigiamos ir neigiamos poros kode
Live_Corpus_ValidatePdfUaMatchesConformance; §7.21.7 ToUnicode-forbidden-value ir §7.18.6.2 media-clip teigiami pavyzdžiai taip pat buvo susieti kaip apsauga nuo klaidingų teigiamų rezultatų (jų neigiami pavyzdžiai naudoja žodyno išdėstymus, kurių baitų lygio nuskaitymas neaptinka, todėl susieta tik teigiama pusė) - Rinkinio teigiamų kelių teiginių (angl. assertion) sąrašas papildytas 15 naujų apsaugų nuo klaidingų teigiamų rezultatų, todėl kiekviena aktyvi
pvuai*baitų lygio ir struktūros patikra dabar yra išbandoma su atitinkančiais pavyzdžiais (anksčiau buvo apsaugota tik apie 30 iš 60 aktyvių problemų);pvuaiLangInvalidFormatapsauga buvo sąmoningai praleista, nes baitų lygio tikrintuvas atsargiai pažymi šešioliktainiu kodu užkoduotas/Langeilutes, kurių negali iškoduoti
Version 1.97.0
Pataisyta (Fixed)
ValidatePdfUaStructureElementssustiprinimas: tėvinės grandinės paieškaEnclosingTabledabar turi žingsnių skaitiklį (ribojamą elementų skaičiaus), todėl neteisingai suformuotasParentIndexciklas sintetiniame struktūros elementų masyve nebegali pakabinti kviečiančiosios programos;ValidatePdfUaPageContentTaggingpažymėto turinio ID masyvo paskirstymas dabar ribojamas iki vieno milijono įrašų, taip išvengiant kelių GB atminties paskirstymo esant neteisingam arba kenkėjiškamMarkedContentID
Pakeista (Changed)
pvuaiOrderedListMissingListNumberingišvardijimo (angl. enum) dokumentacijos komentaras dabar tiksliai aprašo, ką atlieka ši patikra: ji pažymiLelementą, kurioListNumberingreikšmė nepatenka į ISO 32000-1 347 lentelės rinkinį (nesant šio atributo, jis nėra pažymimas); ankstesnis komentaras užsiminė, kad ji taip pat aptinka numeruotus sąrašus, kuriuose trūksta šio atributo, ko realizacija iš tikrųjų nedaro- Du
7.21.3.3-t02WMode-mismatch rinkinio neigiami pavyzdžiai dabar yra susieti kodeLive_Corpus_ValidatePdfUaMatchesConformance— nuo v1.95.0 CMap srautas yra išskleidžiamas naudojant FlateDecode, todėl žodyno ir turinio palyginimas dabar vykdomas su skaitomu turiniu; pasenęs komentaras „nesusietas“ pašalintas
Version 1.96.0
Pridėta (Added)
- Tarpstandartinis nuoseklumas:
TPdf.ValidatePdfUapapildytas dviem patikromis, perkeltomis iš PDF/A tikrintuvo:pvuaiAnnotationFlagsViolation(§7.18.1) pažymi neapmokestinamą anotaciją su Hidden / Invisible / NoView požymiu, kuris sutrikdo pagalbinės technologijos skaitymo eigą;pvuaiActionTargetMissing(§7.18.5) pažymi GoToR / URI / SubmitForm veiksmą, kuriam trūksta privalomo tikslo rakto (/F+/D, /URI, /F), todėl nuoroda tampa nenaudojama pagalbinėms technologijoms
Pataisyta (Fixed)
- Kelių puslapių struktūros medžio sujungimas:
AllElemskaupimo ciklas metodeTPdf.ValidatePdfUadabar perkelia kiekvieno elementoParentIndexiš vietinio puslapio masyvo į sujungtąjį masyvą; be šio pakeitimo, antrojo puslapio vaikiniai elementai išlaikydavo vietinio puslapio indeksą, kuris rodydavo į pirmojo puslapio dalį, taip nepastebimai sugadindamas visas nuo ParentIndex priklausomas patikras (lentelių/sąrašų struktūrą, §7.4.4 H-child skaičių, EnclosingTable) - RoleMap analizavimas:
PdfReadRoleMapPairsnebenutraukia viso raktų/reikšmių nuskaitymo, kai reikšmė yra netiesioginė nuoroda (N 0 R) arba masyvas ([...]) — abi šios formos yra leistinos RoleMap pagal ISO 32000-1 14.8.5.1; dabar praleidžiamas tik tas įrašas (Continue) vietoj ciklo nutraukimo (Break), taip pašalinant klaidingus teigiamuspvuaiRoleMapUnresolvedrezultatus tipams, susietiems po netiesioginės nuorodos ar masyvo įrašo
Pakeista (Changed)
FPdfPreflightReport: 18 aktyviųTPdfUaValidationIssuereikšmių, kurios anksčiau patekdavo į bendrąją „trūksta žymeklio“ kategoriją ir rekomendaciją, dabar turi tikslias kategorijas (Struktūra / Turinys / Metaduomenys / Saugumas) ir konkrečiam punktui priskirtas rekomendacijas; taip pat ištaisyta spausdinimo klaidapuaNone / pua1→pucNone / puc1failePDFSpecComplianceMatrix.md
Version 1.95.0
Pakeista (Changed)
TPdf.ValidatePdfUaperžiūra ir patikimumo gerinimas: §7.21.3.3pvuaiCMapWModeMismatchpatikra ir §7.21.7pvuaiToUnicodeForbiddenValuepatikra dabar išskleidžiaFlateDecodesuspaustus CMap / ToUnicode srautus prieš juos nuskaitydamos (anksčiau buvo tikrinami tik nesuspausti srautai, o tai buvo žinomas klaidingai neigiamų rezultatų šaltinis); bendrieji pagalbiniai metodaiPdfInflate/PdfReadAndDecodeStreambuvo perkelti išFPdfPdfa/FPdfPdfxįFPdfPdfCommon, kad visi atitikties moduliai naudotų tą pačią kopiją
Pridėta (Added)
pvuaiSubsetCharSetEmpty(§7.21.4.2) pažymi Type 1 poaimioFontDescriptor, kuris turi/CharSetraktą su tuščia eilutės reikšme — esamaspvuaiSubsetMissingCharSetaptikdavo tik trūkstamą raktą; tuščias/CIDSetnėra pažymimas, nes šriftas be CID gali teisėtai turėti tuščią bitų žemėlapį
Version 1.94.0
Pridėta (Added)
- Antrojo etapo
TPdf.ValidatePdfUaauditas pašalino šešias ISO 14289-1 spragas, kurios buvo pastebėtos atliekant punktų peržiūrą ir pakartotinai nuskaitant vietines Pdfium API, kurios jau buvo apgaubtos, bet nenaudojamos PDF/UA procese:pvuaiHeadingFormatInvalid(§7.4.3) pažymi naudotojo apibrėžtas antraščių žymas, kurios prasideda raide H, bet turi skirtukus, tarpus ar romėniškus skaitmenis vietoj grynų arabų skaitmenų;pvuaiMissingDocumentOutline(§7.17, rekomendacija) pažymi kelių puslapių dokumentą, kuris neturi skirtukų (angl. bookmark) struktūros (vieno puslapio dokumentams tai netaikoma);pvuaiStructElementLangInvalid(§7.2) pažymi struktūros elemento/Langreikšmę, kuri nėra galiojanti BCP 47 žyma;pvuaiWidgetMissingPrintField(§7.14 / §7.18.4) pažymi Widget struktūros elementą, kuriam trūksta PrintField atributo savininko;pvuaiLinkNotInStructureTree(§7.18.5) pažymi dokumentą, kurio/Subtype /Linkanotacijos nėra pateikiamos kaip Link struktūros elementai;pvuaiPdfiumAnnotationMissingContentsirpvuaiPdfiumLinkMissingContents(§7.18.1 / §7.18.5) prideda tikslų anotacijų nuskaitymą pagal Pdfium objektų modelį, kuris neapima paslėptų, už CropBox ribų esančių, iššokančiųjų (angl. Popup) ir Widget anotacijų — taip pašalinami klaidingi teigiami rezultatai iš baitų lygio heuristikos, kuri negali perskaityti/Fpožymių arba/Rect
Version 1.93.0
Pridėta (Added)
TPdf.ValidatePdfUadabar naudoja Pdfium objektų modelio lygmenį ant baitų lygio tikrintuvo, atkartodamas PDF/A 7-ojo etapo architektūrą: eina per kiekvieno puslapio teksto objektus perFPDFTextObj_GetFont→FPDFFont_GetIsEmbedded(pvuaiPdfiumFontNotEmbedded, §7.21.4) ir nuskaito kiekvieną simbolį perFPDFText_HasUnicodeMapError(pvuaiPdfiumUnicodeMapError, §7.21.7) beiFPDFText_GetUnicode(pvuaiPdfiumNotDefGlyph, §7.21.8) — tai yra daug tiksliau nei baitų lygio heuristika, kuri suveikia tik tada, kai nėra nei vienos šrifto programos arba išvis nėra/ToUnicode; paieška nutraukiama trimis lygiais: puslapių ciklas baigiamas, kai visos trys Pdfium lygmens problemos jau yra nustatytos, atskirų objektų ciklas baigiamas ties pirmuoju neįdėtuoju šriftu, o simbolių nuskaitymas praleidžia.notdefetapą, kai jau buvo aptiktaUnicodeMapError; PDF/UA buvo paskutinis PDF standartų tikrintuvas, neturėjęs Pdfium objektų modelio lygmens
Version 1.92.0
Pridėta (Added)
- Sukurtas failas
Tests.PdfR— pirmasis testų failas, skirtas PDF/R-1 tikrintuvui (FPdfPdfr), apimantis antraščių tikrinimą, ObjStm draudimą, rastrinių žymeklių aptikimą bei švaraus failo apsaugą nuo klaidingų teigiamų rezultatų; visi šeši PDF standartų testavimo rinkiniai dabar turi atskirus testų failus: PdfA(80), PdfUa(101), PdfX(7), PdfE(5), PdfVT(15), PdfR(4) = iš viso 212 testų
Version 1.91.0
Pridėta (Added)
ValidatePdfEirValidatePdfVTgavo turinio lygio patikras, kurios anksčiau buvo prieinamos tik PDF/A, PDF/UA ir PDF/X tikrintuvuose:pveiLzwForbidden,pveiJavaScriptForbidden,pveiFormFieldsForbidden(tik PDF/E),pveiEmbeddedFilesForbidden(tik PDF/E),pveiOpiForbidden,pvviLzwForbidden,pvviJavaScriptForbidden,pvviEmbeddedFilesForbidden,pvviOpiForbidden;TPdf.ValidatePdfEirTPdf.ValidatePdfVTtaip pat gavo Pdfium objektų modelio lygmenį (pveiPdfiumFontNotEmbedded/pvviPdfiumFontNotEmbedded), kuris eina per puslapio teksto objektus naudojantFPDFFont_GetIsEmbeddedir nutraukia darbą ties pirmuoju neįdėtuoju šriftu
Version 1.90.0
Pridėta (Added)
TPdf.ValidatePdfXdabar naudoja Pdfium objektų modelio lygmenį ant baitų lygio tikrintuvo: eina per kiekvieno puslapio teksto objektus perFPDFTextObj_GetFont→FPDFFont_GetIsEmbeddedir praneša apie neįdėtąjį šriftą kaippvxiPdfiumFontNotEmbedded— tai yra daug tiksliau nei baitų lygio heuristika, kuri suveikia tik tada, kai nėra nei vienos šrifto programos; paieška nutraukiama ties pirmuoju rastu neįdėtuoju šriftu
Pakeista (Changed)
TPdf.ValidatePdfUastruktūros medžio perėjimas: vienam puslapiui skirtas iškvietimasValidatePdfUaPageContentTagging(kuris sukuria pažymėto turinio ID atitikimo žemėlapį ir kryžmiškai patikrina kiekvieną teksto/paveikslėlio objektą) dabar yra praleidžiamas vėlesniuose puslapiuose, kai tik randamaspvuaiUntaggedContent— struktūros elementai vis tiek surenkami kelių puslapių patikroms (Note unikalaus ID, antraščių sekos), tačiau brangus vieno puslapio turinio žymėjimo etapas sustabdomas anksčiau
Version 1.89.0
Pakeista (Changed)
TPdf.ValidatePdfAPdfium objektų modelio lygmens našumas: puslapio/objekto perėjimas dabar nutraukiamas trimis lygiais — puslapių ciklas baigiamas, kai jau randamos visos taikomos Pdfium lygmens problemos, atskirų objektų ciklas baigiamas, kai nustatomos abi objektų problemos (šrifto įdėjimas + permatomumas), o tekstinio puslapio simbolių nuskaitymas praleidžia.notdefetapą, kai jau buvo aptiktaUnicodeMapError;Assigned()API prieinamumo patikros ir atitikties požymiai yra vieną kartą prieš ciklą išsaugomi vietiniuose loginio tipo kintamuosiuose, o ne iš naujo vertinami kiekviename puslapyje, objekte ar simbolyje; dideliame neatitinkančiame reikalavimų dokumente perėjimas dabar gali sustoti po pirmojo puslapio, o ne nuskaityti visus puslapius; atitinkančiame dokumente puslapio pridėtinės išlaidos yra mažesnės (nėra pakartotiniųAssignediškvietimų)
Version 1.88.0
Pridėta (Added)
ValidatePdfXgavo aštuonias naujas turinio lygioTPdfXValidationIssuereikšmes, apimančias spaudos mainų apribojimus, kuriuos PDF/X nustato be failo formato žymeklių:pvxiLzwForbidden(/LZWDecode),pvxiJavaScriptForbidden(/JavaScript),pvxiFormFieldsForbidden(/AcroForm//XFA),pvxiAdditionalActions(/AA),pvxiEmbeddedFilesForbidden(/EmbeddedFiles//FileAttachment),pvxiOpiForbidden(/OPI//Alternates),pvxiMissingTrimBox(nėra/TrimBoxnei viename puslapyje) irpvxiTrappedNotSet(trūksta/Trappedarba nurodyta/Unknown); PDF/X tikrintuvas anksčiau tikrindavo tik XMP/OutputIntent žymeklius, tai yra pirmasis jo turinio lygio tikrinimo etapas; bendrieji pagalbiniai metodaiPdfStructureBytes/PdfHasName/PdfCountNamebuvo įtraukti įFPdfPdfCommon, kad juos galėtų naudoti visi atitikties moduliai
Version 1.87.0
Pridėta
- PDF/UA tikrinimas dabar apima ISO 14289-1 §7.21.3 sudėtinių šriftų taisykles:
pvuaiCidSystemInfoMismatchžymi Type0 šriftus, kurių įdėtasis CMap ir paveldimasis CIDFont nesutaria dėlRegistry/Orderingarba kurių CIDFontSupplementviršija CMap reikšmę,pvuaiCMapNotEmbeddedžymi CMap, nurodytus vardu (kaipEncodingarbaUseCMap), kurie nėra ISO 32000-1 118 lentelėje numatyti iš anksto apibrėžti CMap, opvuaiCMapWModeMismatchžymi įdėtuosius CMap, kurių žodynoWModenesutampa su jų srauto turinyje nurodytu WMode
Pataisyta
- §7.21.3.2 patikrinimas
pvuaiCidFontMissingCidToGidMappraleisdavo CIDFontType2 žodynus, kuriųSubtyperakto/reikšmės pora atskirta nauja eilute; dabar taip pat žymima, kaiCIDToGIDMapvardas nėraIdentity
Version 1.86.0
Pridėta
- PDF/UA tikrinimas dabar apima ISO 14289-1 §7.21.6 TrueType koduotės taisykles:
pvuaiTrueTypeEncodingInvalidžymi nesimbolinius TrueType šriftus, kuriųEncodingtrūksta arba kuris nėra neiMacRomanEncoding, neiWinAnsiEncoding(tiesiogiai arba perBaseEncoding), opvuaiSymbolicTrueTypeEncodingžymi simbolinius TrueType šriftus, turinčius nestandartinįEncodingvardą
Version 1.85.1
Pakeista
- ISO 14289-1 §7.18.3 tabuliacijos tvarkos patikrinimas
pvuaiMissingTabsOrderdabar vykdomas kiekvienam puslapiui atskirai: kiekvienas puslapis, turintis anotacijų, privalo savo puslapio žodyne deklaruoti/Tabs /S, todėl atitinkančio gretimo puslapio buvimas nebeslepia puslapio, kuriame šis deklaravimas trūksta
Version 1.85.0
Pridėta
- PDF/UA tikrinimas dabar skiria dinamines XFA formas nuo statinių pagal ISO 14289-1 §7.15:
pvuaiXfaDynamicžymi formas, kurių XFA konfigūracija nustatodynamicRenderįrequired
Pakeista
- Buvęs bet kurios XFA kandidato žymė
pvuaiXfaPresentyra atsisakyta ir daugiau nebekuriama (statinė XFA atitinka §7.15); enum reikšmė išlaikoma API suderinamumui
Version 1.84.0
Pridėta
- PDF/UA tikrinimas dabar aptinka nepaženklintą realų turinį, kurio reikalauja ISO 14289-1 §7.1:
pvuaiUntaggedContentžymi atvaizduotus teksto ir vaizdų objektus, kurie nei priklauso puslapio struktūros medžiui (per pažymėto turinio ID), nei pažymėti kaip Artifact - Nauji puslapio lygio pagalbiniai metodai
GetPageContentMarkInfosirValidatePdfUaPageContentTaggingsuTPdfPageContentMarkInfoįrašu tiesioginiam naudojimui
Version 1.83.0
Pridėta
- PDF/UA tikrinimas dabar vykdo ISO 14289-1 §7.4.4 antraščių modelio taisykles:
pvuaiHeadingModelMixedžymi dokumentus, kuriuose maišoma bendroji žymėHsu sunumeruotomisH1..Hnantraštėmis, opvuaiHeadingMultipleInNodežymi struktūros mazgus, turinčius daugiau nei vieną vaikoHantraštę
Version 1.82.0
Pridėta
- PDF/UA tikrinimas dabar sprendžia ISO 14289-1 §7.1 reikalaujamą RoleMap:
pvuaiRoleMapRemapsStandardžymi RoleMap įrašus, kurie iš naujo apibrėžia standartinį struktūros tipą, opvuaiRoleMapUnresolvedžymi naudojamus nestandartinius struktūros tipus, kurių RoleMap grandinė trūksta, nutrūkusi arba ciklinė — netiesioginės grandinės, pasiekiančios standartinį tipą, priimamos, o nenaudojami RoleMap įrašai niekada nevertinami - Nauji pagalbiniai metodai
PdfUaIsStandardStructType,PdfReadRoleMapPairs(su PDF vardo#hhapsaugoto simbolio dekodavimu) irValidatePdfUaRoleMapUsagetiesioginiam naudojimui
Version 1.81.0
Pridėta
- PDF/UA tikrinimas dabar apima ISO 32000-1 sąrašo žymėjimą, kurio reikalauja ISO 14289-1 §7.6:
pvuaiListStructureInvalidžymi LI elementus, esančius ne L konteineryje, ir Lbl/LBody dalis, esančias ne LI elemente, kartu priimant įdėtuosius sąrašus ir teisėtą Lbl naudojimą Note ir BibEntry elementuose
Version 1.80.0
Pridėta
- PDF/UA tikrinimas dabar apima ISO 32000-1 lentelių žymėjimą, kurio reikalauja ISO 14289-1 §7.5:
pvuaiTableStructureInvalidžymi TH/TD langelius, esančius ne TR eilutėje, ir eilutes arba eilučių grupes, esančias ne jų Table konteineryje,pvuaiTableHeaderMissingScopežymi antraštinių langelių ryšius, kurių neįmanoma nustatyti nei per Scope atributą, nei per Headers/ID sąsają, opvuaiTableHeadersUndefinedIdžymi Headers nuorodas dokumentuose, kuriuose neapibrėžti jokie struktūros elementų ID TPdfStructureElementatskleidžia lentelės atributusScope,HasHeaders,HeadersIds,ColSpanirRowSpan, išspręstus struktūros medžio perėjimo metu
Pakeista
- Struktūros medžio perėjimas dabar nuskaito visus išdėstymo ir lentelės atributus vienu praėjimu per kiekvieno elemento atributų žodynus, o ne vienu skenavimu vienam atributui
Version 1.79.1
Pridėta
AnnotationsLabpavyzdys pritaikytas „Lazarus“ ir „C++Builder“ aplinkoms, papildant esamą „Delphi“ konsolės pavyzdį
Ištaisyta
TPdf.CreateAnnotationgalėjo iškelti klaidą “Cannot set attachment points” žymėjimo (markup) anotacijoms, kurios naudoja keturkampius (quad) taškus (Highlight, Underline, StrikeOut, Squiggly), nes nauja anotacija dar neturėjo keturkampio lizdo (slot), kurį būtų galima pakeisti; dabar vietoje to pridedamas pirmasis keturkampis
Version 1.79.0
Pridėta
- Naujas
AnnotationsLab„Delphi“ konsolės pavyzdys: sukuria Text, Highlight, Square ir Circle anotacijas, įrašo jas į PDF, tada iš naujo įkelia failą ir išvardija puslapio anotacijų sąrašą
Version 1.78.0
Pridėta
- Nauji
TPdf.MeasureTextirTPdf.MeasureTextWidth: išmatuoja atvaizduojamą eilutės (string) plotį ir aukštį nurodytam šriftui ir dydžiui (PDF naudotojo vienetais, 1 vienetas = 1/72 colio), nepridedant turinio į puslapį, todėl viršAddTextgalima realizuoti išdėstymo (layout) ir žodžių laužymo (word-wrap) logiką; pateikiama per atskirąFPdfMeasuremodulį kaip klasės pagalbininkė (class helper) - Naujas
TPdf.WrapText: gobšus (greedy) žodžių laužymas, pagrįstasMeasureTextWidth, kuris padalija tekstą per tarpus ir supakuoja žodžius į eilutes, kurios nėra platesnės nei nurodytas plotis (PDF naudotojo vienetais); per ilgas vienas žodis perkeliamas į atskirą eilutę (laužymas žodžio viduje nevykdomas), o perlaužtos eilutės grąžinamos kaip masyvas
Version 1.77.0
Pridėta
- Prie
ValidatePdfApridėtos trys naujosTPdfAValidationIssuereikšmės, apimančios sąlygas, kurios ankstesniame trūkumų (gap) audite buvo įvertintos kaip “NO” arba “reader behaviour” (pridėtos eilės tvarka, esamos reikšmės nepasikeitė):pvaiPdfiumNotDefGlyph(PDF/A-2 6.2.11.8 — simbolis, kuris konvertuojamas į Unicode 0 be atvaizdavimo (mapping) klaidos, tai yra.notdefglifo nuorodos vykdymo laiko simptomas; aptinkamas per Pdfium objektų modelio lygmenį),pvaiWordBreakMissing(A lygis 6.8.3.2 — turinio srauto (content-stream) rodymo eilutė, ilgesnė nei 20 simbolių be tarpo, tikėtinas sujungtų žodžių pažeidimas; apytikslė (coarse) euristika, padedanti išvengti klaidingai teigiamų CJK rezultatų) irpvaiLinkActionMissingTarget(6.6.3 — GoToR/URI/SubmitForm veiksmui trūksta jo rodymo paskirties (target) rakto, todėl skaitytuvas negali jo pateikti)
Version 1.76.0
Pridėta (Added)
ValidatePdfAgavo tris naujasTPdfAValidationIssuereikšmes (pridėtos pabaigoje, esamos reikšmės nepakito):pvaiNameNotValidUtf8(PDF/A-2/3 6.1.8 —/BaseFontarba/FontNamežyma (token), kurioje yra baitų ≥ 0x80, nesudarančių galiojančio UTF-8),pvaiInlineImageLzwForbidden(PDF/A-2/3 6.1.10 — įterptas vaizdas (inline image) puslapio turinio sraute naudoja LZW arba Crypt filtrą) irpvaiTrueTypeDifferencesForbidden(6.3.7 Cor.2 — nesimbolinis TrueType šriftas, kurio Encoding žodyne (dictionary) yra/Differences)
Version 1.75.0
Pridėta (Added)
ValidatePdfAgavo tris naujasTPdfAValidationIssuereikšmes (pridėti eilės numeriai, esamos reikšmės nepakitusios):pvaiIntegerImplementationLimit(PDF/A-2/3 6.1.13 — skaitinis žetonas, viršijantis 32 bitų su ženklu sveikojo skaičiaus ribą 2 147 483 647),pvaiBlendModeNotWhitelisted(PDF/A-2/3 6.2.10 —/BMreikšmė už ISO 32000-1 §11.3.5 standartinio susiliejimo režimų rinkinio ribų; papildo PDF/A-1pvaiTransparentColorSpace, kuris leidžia tik Normal/Compatible), beipvaiHexStringOddDigits(6.1.6 —<...>šešioliktainė eilutė su nelyginiu šešioliktainių skaitmenų skaičiumi)
Version 1.74.0
Pridėta (Added)
ValidatePdfAgavo tris naujasTPdfAValidationIssuereikšmes (pridėti eilės numeriai, esamos reikšmės nepakitusios):pvaiPermissionsViolation(6.1.12 —/Permsžodynas, turintis/DigestLocation,/DigestMethodarba/DigestValuekartu su/DocMDP),pvaiTransActionForbidden(PDF/A-2 6.5.1 — Trans perėjimo veiksmas, aptinkamas per/S /Transveiksmo žodyno šabloną, siekiant išvengti klaidingo sutapimo su/Transparency), beipvaiPdfiumObjectTransparency(PDF/A-1 6.4 — puslapio objektas turi tikrą permatomumą pagalFPDFPageObj_HasTransparency, išplečiant v1.73.0 įdiegtą Pdfium objektų modelio sluoksnį, siekiant pagauti susiliejimo režimo ir švelnios kaukės efektus, kurių baitų lygio pavadinimų nuskaitymas gali nepastebėti)
Version 1.73.0
Pridėta (Added)
TPdf.ValidatePdfAdabar virš baitų lygio patikros modulio prideda Pdfium objektų modelio perėjimą: jis pereina kiekvieno puslapio teksto objektus perFPDFPage_GetObject→FPDFTextObj_GetFont→FPDFFont_GetIsEmbeddedir apie neįterptą atvaizduojamą šriftą praneša kaip apiepvaiPdfiumFontNotEmbedded(ISO 19005 6.3.4), bei įkelia kiekvieną teksto puslapį nuskaitytiFPDFText_HasUnicodeMapErrorir apie sugadintą „Unicode“ atvaizdavimą praneša kaip apiepvaiPdfiumUnicodeMapError(6.3.8). Tai yra patikros, kurių baitų lygio patikros modulis atlikti negali — jis mato tik pavadinimų žetonus, o ne išspręstas šriftų rodykles ar kiekvieno simbolio atvaizdavimo būseną — ir jos sujungiamos į baitų lygio rezultatą. AtskiraValidatePdfACompliancebaitų lygio funkcija lieka nepakitusi
Version 1.72.0
Pridėta (Added)
ValidatePdfAgavo penkias naujasTPdfAValidationIssuereikšmes (pridėti eilės numeriai, esamos reikšmės nepakitusios):pvaiNeedsRenderingPresent(PDF/A-2 6.4.2 — katalogas neturi turėti/NeedsRendering),pvaiDestOutputProfileRef(PDF/A-3 6.2.3 — OutputIntent neturi turėti/DestOutputProfileRef),pvaiEmbeddedFileMissingUF(PDF/A-3 6.8 — failo specifikacija su/EFtaip pat turi turėti/UF),pvaiXmpPacketBytesAttr(6.7.5 — XMP paketo antraštė neturi turėti nerekomenduojamų naudotibytes=arbaencoding=atributų), beipvaiAnnotationToggleNoView(PDF/A-2 6.3.2 — anotacijos/FToggleNoView bitas, reikšmė 512, yra draudžiamas)
Version 1.71.0
Pakeista
ValidatePdfUadabar iškeliapvuaiOrderedListMissingListNumbering(ISO 14289-1 7.6): struktūros medžio naršyklė per Pdfium atributų API išsprendžiaListNumberingišdėstymo atributą kiekvienamLelementui ir pažymi bet kokią reikšmę už ISO 32000-1 Table 347 rinkinio (Decimal,UpperRoman,LowerRoman,UpperAlpha,LowerAlpha,None,Circle,Disc,Square). Neesantis atributas nėra pažymimas, nes sąrašas gali būti netvarkingas; tai uždaro paskutinę likusią ISO 14289-1 spragą, užfiksuotą 5-ojo etapo pabaigoje
Version 1.70.0
Pridėta
ValidatePdfUagavo keturias naujasTPdfUaValidationIssuereikšmes (pridėti eilės numeriai, esamos reikšmės nepakitusios):pvuaiSubsetMissingCidSet(ISO 14289-1 7.21.4.2 — CID poaibisFontDescriptorturi deklaruoti/CIDSet),pvuaiToUnicodeForbiddenValue(7.21.7 — ToUnicode CMap neturi atvaizduoti jokio kodo įU+FEFFarU+FFFE; nesuspausti srautai yra nuskaitomi ieškant<FEFF>/<FFFE>išvesties formų),pvuaiLangInvalidFormat(7.2 —/Langturi būti galiojanti RFC 1766 / BCP 47 žyma; leidžianti gramatika priimaen,en-US,zh-Hans,es-419ir pažymi aiškiai neatitinkančias reikšmes), beipvuaiOrderedListMissingListNumbering(7.6 — palikta API išsamumui; patikros modulis jos dar neiškelia, nes patikimam tvarkingų ir netvarkingų sąrašų atskyrimui reikiaListNumberingatributo reikšmės, kurios struktūros medžio naršyklė neatskleidžia)
Version 1.69.0
Pridėta
ValidatePdfUagavo dvi naujasTPdfUaValidationIssuereikšmes (pridėti eilės numeriai, esamos reikšmės nepakitusios):pvuaiWidgetOutsideForm(ISO 14289-1 7.18.4 — Widget struktūros elementas turi būti įdėtasFormelemento viduje; struktūros medžio naršyklė dabar patikrina kiekvieno Widget tiesioginio tėvo tipą) beipvuaiSubsetMissingCharSet(7.21.4.2 — Type 1 poaibisFontDescriptorturi deklaruoti/CharSet, identifikuojamą iš šešių raidžių+poaibio pavadinimo priešdėlio/FontNameatribute)
Version 1.68.0
Pridėta
ValidatePdfUagavo dvi naujasTPdfUaValidationIssuereikšmes (pridėti eilės numeriai, esamos reikšmės nepakitusios):pvuaiUriActionIsMap(ISO 14289-1 7.18.5 — URI veiksmo žodynas neturi turėti/IsMapsu reikšmetrue, nes tai išjungia pasiekiamą nuorodos taikinį) beipvuaiHeadingSequenceViolation(7.4.2 — numeruotos antraštės turi prasidėti nuoH1, o žemėjanti seka neturi praleisti tarpinio lygio, pvz.,H1→H3yra pažeidimas). Antraščių patikrinimas yra pirmoji struktūros medžio lygio PDF/UA taisyklė patikros modulyje:ValidatePdfUaStructureElementsdabar pereina per tipizuotų elementų sąrašą ir patikrinaH1…H6(irH7+pagal 7.4.3) seką dokumento tvarka
Version 1.67.0
Pridėta
ValidatePdfUagavo penkias naujasTPdfUaValidationIssuereikšmes (pridėti eilės numeriai, esamos reikšmės nepakitusios):pvuaiLinkMissingContents(ISO 14289-1 7.18.5 — Link anotacija turi turėti alternatyvų aprašymą per/Contents),pvuaiAnnotationMissingContents(7.18.1 — bet kokia neatleista nuo šio reikalavimo anotacija be/Contentsturi turėti alternatyvų aprašymą; Popup ir Widget yra atleistos),pvuaiEmbeddedFileMissingName(7.11 — failo specifikacijos žodynas turi turėti/Fir/UF),pvuaiMediaClipMissingAlt(7.18.6.2 — medijos klipo duomenų žodynas turi turėti/CTir/Alt) beipvuaiCidFontMissingCidToGidMap(7.21.3.2 — įdėtasis Type 2 CIDFont turi turėti/CIDToGIDMap)
Version 1.66.0
Pridėta
ValidatePdfUagavo penkias naujasTPdfUaValidationIssuereikšmes (pridėti eilės numeriai, esamos reikšmės nepakitusios):pvuaiRoleMapMissing(ISO 14289-1 7.1 — žymėtas dokumentas su nestandartiniais struktūros tipais turi turėti/RoleMap),pvuaiOptionalContentAsKey(7.10 — pasirenkamo turinio konfigūracijos žodynas neturi turėti/ASautomatinės būsenos rakto),pvuaiXfaPresent(7.15 — AcroForm/XFAbuvimas yra pažymimas, nes dinaminis XFA yra draudžiamas),pvuaiTrapNetAnnotation(7.18.2 —/TrapNetanotacijos yra draudžiamos) beipvuaiReferenceXObject(7.20 — Reference XObjects, susieti per/Refžymeklį, yra draudžiami)
Ištaisyta
ValidatePdfUadaugiau nebeteikia klaidingai teigiamųpvuaiEncryptionPresentrezultatų kiekvienam užšifruotam failui: PDF/UA leidžia šifravimą, jei šifravimo žodyno/Praktas turi nustatytą 10-ąją bitų poziciją (reikšmė 1024), kuri suteikia prieigą pagalbinėms technologijoms (7.16). Tikslus pažeidimas dabar pranešamas per naująpvuaiEncryptionPBitMissing;pvuaiEncryptionPresentišlaikoma enum tipe dėl API suderinamumo, tačiau baitų lygio patikros modulis jo daugiau neiškelia
Version 1.65.0
Pridėta
ValidatePdfAgavo penkias naujasTPdfAValidationIssuereikšmes (pridėti eilės numeriai, esamos reikšmės nepakitusios):pvaiCidFontMissingCidToGidMap(ISO 19005-1 6.3.3.2 Cor.2 — įdėtasis Type 2 CIDFont turi turėti/CIDToGIDMap),pvaiSubsetMissingCharSet(6.3.5 — Type 1 poaibisFontDescriptorturi turėti/CharSet),pvaiSubsetMissingCidSet(6.3.5 — CID poaibisFontDescriptorturi turėti/CIDSet),pvaiWidgetActionForbidden(6.6.1 — Widget anotacija neturi turėti/Aar/AA) beipvaiOptionalContentAsKey(ISO 19005-2 6.9 — pasirenkamo turinio konfigūracijos žodynas neturi turėti/ASautomatinės būsenos rakto, kas dabar aktualu, nes PDF/A-2 leidžia pasirenkamą turinį)
Version 1.64.0
Pridėta
ValidatePdfAgavo aštuonias naujasTPdfAValidationIssuereikšmes (pridėti eilės numeriai, esamos reikšmės nepakitusios):pvaiHeaderBinaryMarkerMissing(ISO 19005-1 6.1.2 — po%PDF-x.yantraštės turi sekti%komentaras, kuriame yra bent keturi baitai, didesni nei 127),pvaiExternalStreamRef(6.1.7 — srauto žodynas neturi turėti/F,/FFilterar/FDecodeParms),pvaiOutputIntentScheme(6.2.2 — OutputIntent/Sturi būti/GTS_PDFA1),pvaiInfoXmpDateMismatch(6.7.3 — InfoCreationDate/ModDatetaip pat turi pasirodyti kaipxmp:CreateDate/xmp:ModifyDate),pvaiMarkInfoMissing(6.8.2.2 — Level A reikalauja/MarkInfosu/Marked true),pvaiAnnotationApDictViolation(6.5.3 Cor.2 — anotacijos/APžodynas turi turėti tik/N),pvaiEmbeddedFileMissingAFRelationship(ISO 19005-3 Annex E.2 — kiekviena susieta failo specifikacija turi turėti/AFRelationship) beipvaiJpeg2000Violation(ISO 19005-2 6.2.8.3 — JPEG2000 paveikslėlis turi deklaruoti 1, 3 arba 4 komponentus)
Ištaisyta
ValidatePdfAdaugiau nebeteikia klaidingai teigiamųpvaiAnnotationFlagsViolationrezultatų dokumentuose, naudojančiuose vienos raidės šrifto ištekliaus pavadinimą, tokį kaip/Font << /F 5 0 R >>;/Fžymės patikrinimas dabar susietas su anotacijos kontekstu (anotacijos tipo/Subtype), atitinkančiu dokumentuotą elgseną (6.5.3)ValidatePdfAdabar praneša apie PDF/A-3 susieto failo reikalavimą kiekvienam failui: dokumentas pažymimas tik tada, kai įdėtajame/Type /Filespec, kuris nurodo į įdėtąjį srautą per/EF, trūksta/AFRelationship, vietoje ankstesnio viso dokumento patikrinimo „bet kuris arba nė vienas“ (ISO 19005-3 Annex E.2)- Prie draudžiamų veiksmų rinkinio šalia
/SetOCGStatepridėtas nerekomenduojamas naudoti/SetStateveiksmas, todėl PDF Reference veiksmo pavadinimas užfiksuojamas tiesiogiai (6.6.1)
Version 1.63.0
Pridėta (Pridėta)
- Pridėti
TPdf.MeasureTextirTPdf.MeasureTextWidth: matuoja teksto atvaizdavimo plotį ir aukštį nurodytu šriftu ir dydžiu, nepridedant turinio į puslapį (PDF vartotojo vienetai, 1 vienetas = 1/72 colio), leidžiant skaičiuoti išdėstymą ir automatiškai laužyti eilutes papildomai prieAddText; pateikiama kaip atskiro vienetoFPdfMeasureklasės pagalbinė priemonė
Keista (Pakeista)
Demo\Delphi\MergePDF,Demo\CBuilder\MergePDF,Demo\Lazarus\MergePDFpatobulinta visose trijose IDE: kiekvienam failui – puslapių intervalas, pasirinktinis išvesties kelias, dublikatų pašalinimas, vykdymo žurnalas, atšaukimo mygtukas, sujungimo suvestinė; žymės ir metaduomenys iš pirmojo šaltinioCreatePDFdemonstraciniai pavyzdžiai papildyti Europos teksto parinktimi, skirta čekų, prancūzų, vokiečių, ispanų, portugalų, lenkų ir turkų tekstui su diakritiniais ženklais, tikrinant šrifto pasirinkimo ir „Unicode“ tvarkymo korektiškumą (buvusiEuropeanTextsujungta)- Pašalinti
ExtractTextPagesirEuropeanText: puslapio ištraukimas aprėpiamas puslapių intervalo ir skyriklio parinktimisExtractText;EuropeanTextdaugiakalbis atvaizdavimas sujungtas įCreatePDF
Version 1.62.2
Ištaisyta (Ištaisyta)
- Iš naujo sugeneruotos C++Builder antraštės (
.hpp) kiekvienai RAD Studio versijai ir platformai (Win32/Win64/Win64x); jos buvo nukrypusios nuo Pascal šaltinių, todėl šaltinio distribucijoje C++Builder naudotojus pasiekdavo pasenusios funkcijų signatūros ir trūkstami vienetai
Version 1.62.1
Ištaisyta (Ištaisyta)
- Atkurta šaltinio kompiliacija RAD Studio 12 Athens ir ankstesnėse:
TArray<Byte>priskyrimas PDF/UA tikrinimo kelyje naudojo tik Delphi 13 palaikomą implicitinę masyvo konversiją, kuri senesnėse IDE nesikompiliavo
Version 1.62.0
Pridėta (Pridėta)
TPdf.RenderPageThumbnailatvaizduoja bet kurį puslapį pagal indeksą į proporcijas išlaikantį bitmap, nekeisdamas dokumento dabartinio puslapio, įkelto puslapio ar neiškviesdamasOnPageChange
Ištaisyta (Ištaisyta)
TPdfThumbnailViewdažydamas nebediktuoja pagrindinio dokumentoPageNumber; anksčiau kiekvienas perbraižymas iš naujo įkeldavo puslapius, iškviesdavoOnPageChangeir išmesdavo teksto puslapį, o tai galėjo trikdyti susietąTPdfViewir sukelti perbraižymo ciklus. Dabar miniatiūros atvaizduojamos perRenderPageThumbnailbe tokių šalutinių poveikių- PDF/X atitikties tikrinimas dabar tikrina kryžminių nuorodų srauto dokumentus (PDF 1.6, būdingus PDF/X-4) ir objektus, saugomus suspaustuose objektų srautuose, vietoj to, kad tokius failus visus bendrai laikytų neatitinkančiais;
GTS_PDFXVersionžymuo skaitomas ir iš elementų formos, ir iš RDF atributo formos XMP - PDF/R tikrinimas dabar pateikia
pvriInfoXmpMismatch, kai Info žodynas ir XMP nesutaria dėl Producer arba Creator; anksčiau ši problema būdavo aprašyta, bet niekada neišmetama - Formų pildymo laikmačiai dabar sekami kiekvienai užklausai, todėl dokumentas, paleidžiantis kelis laikmačius vienu metu (pavyzdžiui, JavaScript intervalą kartu su lauko žymeklio mirksėjimu), išlaiko juos visus, o ne praranda visus laikmačius, išskyrus paskutinį
TPdfViewpiešimas ir jo viešiRenderPage/RenderTilemetodai dabar laiko dokumento atvaizdavimo užraktą, taip serijindami darbinių gijų to patiesTPdfatvaizdavimą (PDFium nėra saugus naudoti iš kelių gijų)- Ne ASCII tekstas, rašomas į PDF/X, PDF/R ir PDF/VT metaduomenis (OutputIntent condition names, Creator, Producer), dabar koduojamas kaip UTF-16BE eilutė pagal ISO 32000-1 §7.9.2.2 vietoj neapdoroto UTF-8, kurį atitinkantys skaitytuvai būtų perskaitę neteisingai
- Atitikties pagalbinės funkcijos teisingai skaito įterptus metaduomenų srautus, kurių
/Lengthyra netiesioginė nuoroda, įkelia šaltinio baitus suReadBuffer(todėl trumpas nuskaitymas baigiasi švariai) ir atmeta neigiamąstartxrefposlinkį vietoj to, kad rizikuotų nuskaitymu už ribų
Version 1.61.0
Pakeista (Pakeista)
- FFI/ABI deklaracijų pataisymai, dėl kurių gali tekti iš naujo kompiliuoti kodą, įgyvendinusį paveiktus atgalinius iškvietimus:
FFI_OpenFileformų pildymo atgalinis iškvietimas dabar turicdecl(Win32 steko konvencija), ovalueparametrasFPDFAnnot_SetStringValueirFPDFAttachment_SetStringValuedabar yraFPDF_WIDESTRING(UTF-16LE), kad sutaptų su PDFium antraštėmis - Progresyvaus įkėlimo atgaliniai iškvietimai
FX_FILEAVAIL.IsDataAvailirFX_DOWNLOADHINTS.AddSegmentdabar priimasize_tposlinkius, osize_tFree Pascal / Lazarus Win64 yra rodyklės pločio (anksčiau buvo nukerpama iki 32 bitų), taip ištaisant duomenų prieinamumo iroutsize_tAPI kvietimus FPC Win64
Ištaisyta (Ištaisyta)
- Atminties sauga: naudojimas po išlaisvinimo formų pildymo laikmačio naikinant
TPdfsu aktyviu AcroForm žymekliu; dvigubasFPDF_CloseDocumentklaidos kelyjeImportNPagesToOne; Pascal išimtys, išeinančios už C ribos perFPDF_FILEWRITE/FPDF_FILEACCESSatgalinius iškvietimus saugant ir įterpiant JPEG; ir sveikojo skaičiaus perpildymas teksto ištraukoje, kai skaitoma nuo pradžios indekso iki puslapio galo TPdfFuture<T>dabar patikimai pristato savo rezultato atgalinį iškvietimą; atsakymas anksčiau beveik visada būdavo numetamas (ir galėjo paliesti išlaisvintą giją), nes darbinė gija save išlaisvindavo anksčiau, nei buvo įvykdytas uždėtas atsakymas- PDF/A, PDF/X, PDF/E, PDF/R, PDF/VT ir PDF/UA išvestis dabar rašo kryžminių nuorodų įrašus, kurie tiksliai yra 20 baitų, kaip reikalauja ISO 32000-1 §7.5.4
- Standartų žymens įterpimas nebesunaikina žodyno, kai pašalintas raktas (pavyzdžiui
/Trapped) buvo paskutinis įrašas, dėl ko anksčiau būdavo prarandamas uždarymo>>ir sukuriamas netaisyklingas objektas - OutputIntent ICC profilio srautai dabar nurodo reikalingą
/Nkomponentų skaičių PDF/X ir PDF/VT (PDF/A jis jau buvo); užšifruoti šaltinio dokumentai iššifruojami prieš įterpiant PDF/X, PDF/E, PDF/R, PDF/VT ir PDF/UA žymenis, todėl išvestis yra galiojanti, o ne tyliai sugadinta - Sugeneruoto XMP UTF-8 xpacket BOM dabar išvedamas kaip tikslūs baitai, taip ištaisant sugadinimą Delphi diegimuose, kurių ANSI kodų puslapis nėra Latin-1; laipsniško atnaujinimo traileriai dabar išlaiko dokumento
/Infonuorodą SaveAssu glaudinimu nebekerpa srautų, kurių/Lengthyra netiesioginė nuoroda, o iš naujo sukurti kryžminių nuorodų lentelės įrašai dabar naudoja 20 baitų įrašus, tikrus generacijos numerius ir pašalina pasenusį/Prevrodyklę- Atitikties tikrinimas dabar skaito atributų formos XMP versijos žymenis PDF/E ir PDF/X (todėl atpažįstami atributais serializuoti PDF/X-4 failai), reikalauja tikslaus
PDF/E-1identifikatoriaus, teisingai skaito netiesioginio/Lengthmetaduomenų srautus ir daugiau nebesupainioja struktūros elemento/IDarba/StructTreeRootrakto tikrinant PDF/UA trailerį; netaisyklingasstartxrefposlinkis nebekelia ribos klaidos TPdfThumbnailView: paskutinis puslapis dabar pasiekiamas slankjuoste, pagrindinio dokumento dabartinis puslapis po miniatiūrų nupiešimo atkuriamas, o standartinis pelės išėjimo apdorojimas vėl iškviečiamas- Pilkų atspalvių puslapių ir paveikslų bitmap'ai nebeatvaizduojami su neteisinga palete;
TPdfViewnebelieka su kabančia nuoroda, kai joTPdfišlaisvinamas pirmas - Preflight ataskaitos: HTML išsaugomas kaip UTF-8, kad atitiktų deklaruotą rinkinių koduotę, o JSON eilučių pabėgimas Free Pascal sukuria teisingas
\usekas ne ASCII simboliams - Bandomosiose versijose dabar rodomas trial priminimo dialogas vietoj to, kad būtų nuslopintas prieš spėdamas pasirodyti
TPdfStreamAdapterdabar atmeta didesnius nei 4 GiB srautus su aiškia klaida vietoj to, kad tyliai nukirptų PDFium perduotą ilgį
Version 1.60.1
Pakeista (Pakeista)
- AccessibilityReader demonstraciniai variantai Delphi, Lazarus ir C++Builder dabar vykdo skaitymą balsu per
TPdfReadingSession: kiekvienas puslapis sukomponuojamas į vieną ištariamą gabalą suBuildSpokenTextFromWords, SAPI žodžių pozicijos perduodamos įFeedSpokenPosition, o sesija pereina puslapius ir valdo rodinio žodžio žymeklį, pakeisdama ranka rašytą orkestravimą, kurį anksčiau turėjo kiekvienas demonstracinis variantas - Žodžio lygio karaoke sekimas demonstraciniuose variantuose dabar veikia ir tada, kai kalbos variklis yra NVDA:
EstimatePacingnustato skaitymo žymeklio tempą pagal praėjusį kalbėjimo laiką, kai anksčiau NVDA skaitydavo balsu visai nenaudodamas žodžių sekimo - Pauzė ir tęsinys demonstraciniuose variantuose dabar veikia ir su NVDA:
ResumeRestartsChunkatnaujinus dar kartą persako dabartinį puslapį nuo pradžios, o SAPI išlaiko savo vietinę vietoje vykdomą pauzę ir tęsinį
Version 1.60.0
Pridėta (Pridėta)
- Tiesioginis mažo regėjimo atvaizdavimas
TPdfView: naujosreInvertirreNightDuotoneatvaizdavimo parinktys perpiešia kiekvieną atvaizduotą puslapio plytelę (visiška spalvų inversija arba naktinė dviejų tonų paletė), dar prieš piešiant paieškos, pažymėjimo, skaitymo ir žodžio žymeklio perdangas, taip perkeldamos esamas bitmap spalvų transformacijas į interaktyvų žiūriklį tiek vieno puslapio, tiek dviejų puslapių išdėstymuose; perjungus parinktis, perpiešiama iškart NightDuotoneInkirNightDuotonePaperkonfigūruoja naktinę paletę, numatytai parinkdami gintarinį tekstą juodame puslapyje; kai nustatytos abi parinktys, laimireInvert
Version 1.59.0
Pridėta (Pridėta)
TPdfReadingSession: nuo kalbos variklio nepriklausomas skaitymo balsu orkestravimo komponentas. Jis saugo gabalo žymeklį, žodžio žymeklį ir atkūrimo būseną (Play/PlayFrom/Pause/Resume/Stop), pereina per įkeltusTPdfSpokenTextgabalus, kai vedlys perTickpraneša, kad variklis neveikia, verčia ištarto teksto poslinkius atgal į puslapio simbolius ir automatiškai valdo prijungtoTPdfViewžodžio žymeklį; vedlys bet kokį kalbos variklį prijungia perOnSpeakir atšaukimo / pristabdymo / tęsinio užklausų įvykius, todėl biblioteka pati nieko iš kalbos API nejungiaFeedSpokenPositionpriima variklio žodžių pozicijas (pavyzdžiui SAPIStatus.InputWordPosition);EstimatePacingsuEstimatedWordsPerMinutenustato tempą varikliams be pozicijos signalo;ResumeRestartsChunkpakartoja esamą gabalą varikliams be vietinio pristabdymoOnChunkChange,OnWordChangeirOnFinishediškviečiami tik realiems pokyčiams, o išlaisvintas prijungtas vaizdas atsijungia automatiškai, todėl vedlio kodas išlieka be mirgėjimo ir saugus nuo strigčių
Version 1.58.0
Pridėta (Pridėta)
EstimateSpokenWordIndexįvertina, kurį žodį kalbos variklis šiuo metu taria, pagal praėjusį laiką ir žodžių per minutę greitį, ilgesniems žodžiams skirdamas proporcingai daugiau laiko, todėl varikliai, kurie nenurodo žodžio pozicijos (pavyzdžiui NVDA controller client), vis tiek gali valdyti žodžio lygio skaitymo žymeklį; skambintojas pateikia praėjusį laiką, todėl rutina išlieka be laikrodžio ir tinkama vienetiniams testams
Version 1.57.0
Pridėta (Pridėta)
- Ištarto teksto sudarymas su dviejų sričių žemėlapiu skaitymo balsu sekimui:
BuildSpokenTextFromWordsirSpokenTextAppendiš puslapio žodžių langelių sudaro eilutę, perduodamą teksto į kalbą varikliui, kartu įrašydami atkarpų lentelę, oSpokenToPageCharpaverčia variklio praneštą ištarto teksto poslinkį (pavyzdžiui SAPIStatus.InputWordPosition) atgal į puslapio simbolio indeksą, todėl žodinio paryškinimo sekimas išlieka teisingas, kai ištartas tekstas nėra visas puslapio tekstas (praleistos sritys, skaitymas pagal vienetus, tarimo keitimai) TPdfSpokenTextirTPdfSpokenSpantipai saugo ištarto teksto eilutę ir šaltinio puslapio sritis, iš kurių ji sudaryta; įterptų skirtukų poslinkiai rezoliucijojami į kitą susietą žodį, o poslinkiai už susietų atkarpų ribų grąžina jokio atitikmens
Version 1.56.9
Pridėta (Pridėta)
Demo\Delphi\PreflightReportprideda Veiksmų plano peržiūrą, kuri sutraukia neperėjusius standartus, prioritetus, kitus veiksmus, problemų kodus ir rekomendacijas į taisymo kontrolinį sąrašąDemo\Delphi\PreflightReportClipriimaplan/actionplankaip vieno failo ir paketinių paleidimų išvesties formatą ir tą patį taisymo kontrolinį sąrašą įrašo į tekstinį failą
Pakeista (Pakeista)
- Abu Delphi PreflightReport demonstraciniai variantai dabar rodo perėjimo / veiksmų / peržiūros būsenų skaičius kartu su bendru standartų ir problemų skaičiumi
Version 1.56.8
Pakeista (Pakeista)
ViewerInteractionLabdabar turi puslapio šuolio valdiklius, rankinius mastelio valdiklius, paspaudimais pagrįstąDeviceToPage/PageToDevicekoordinačių registravimą ir aiškesnį sąveikos žurnalą pažymėjimo, paieškos, pasukimo ir naršymo patikromsViewerInteractionLabreadme puslapiuose dabar dokumentuota pridėta sąveikos eiga visame lokalizuotų demo readme rinkinyje
Version 1.56.7
Pridėta (Pridėta)
AccessibilityWorkbenchClikiekvieną aptiktą radinį susieja su jo WCAG 2.1 Success Criteria ir ISO 14289-1 (PDF/UA-1) punkto sritimi bei ataskaitose rodo standartų aprėpties skyriųAccessibilityWorkbenchCliapskaičiuoja dokumentuotą 0-100 prieinamumo balą su paskelbta nuobaudų lentele ir puikus / geras / reikia darbo / prastas vertinimo diapazonu, pateikiamu kiekvienam failui ir kaip paketiniam vidurkiuiAccessibilityWorkbenchClipriimafailscore=N, kad grąžintų klaidą (išėjimo kodas 2), kai bet kuris failas surenka mažiau nei NAccessibilityWorkbenchCliįrašo SARIF 2.1.0 žurnalą, kai paketinio suvestinės vardas baigiasi.sarif, su viena taisykle kiekvienam radinio tipui, kurioje CI ir code-scanning įsiurbimui pateikiamos jo WCAG 2.1 ir PDF/UA žymosAccessibilityWorkbenchClipridedaversionkomandą, kuri išveda susietą PDFiumPas versiją
Version 1.56.6
Pridėta (Pridėta)
IntakeWorkbenchCliapskaičiuoja kiekvieno įvesties failo SHA-256 kriminalistinę maišą (kompiliatoriuose beSystem.Hashnusileisdamas ikiunavailable) ir pateikia ją visais formataisIntakeWorkbenchClipriimapasswords=file.txt, kad iš kandidatų sąrašo bandytų atrakinti slaptažodžio reikalaujančius dokumentus ir užfiksuotų atitinkamo kandidato indeksą niekada neregistruodamas paties slaptažodžio tekstoIntakeWorkbenchClipriimacopyto=dir, kad kiekvieną tikrintą failą nukreiptų į pagal rizikos lygį atitinkantį poaplankį, taip paversdamas tikrintuvą įvedimo rūšiuokleIntakeWorkbenchCliįrašo SARIF 2.1.0 žurnalą, kai paketinio suvestinės vardas baigiasi.sarif, su viena taisykle kiekvienai rizikos vėliavai ir vienu rezultatu kiekvienam pažymėtam failui, skirtu CI ir code-scanning įsiurbimuiIntakeWorkbenchClipridedaversionkomandą, kuri išveda susietą PDFiumPas versiją
Version 1.56.5
Pridėta (Pridėta)
IntakeWorkbenchClidabar išveda rekomenduojamus veiksmus po įvedimo, tokius kaip accept, request-password, manual-review, quarantine ir deduplicate, ir rodo veiksmų skaičių paketinėse suvestinėseAccessibilityWorkbenchClidabar išveda rekomenduojamus taisymo veiksmus, tokius kaip pass-through, remediate-tags, run-ocr, remediate-semantics ir manual-review, su atitinkamais paketinių veiksmų skaičiais
Pakeista (Pakeista)
- Abu įrankio lygio CLI demonstraciniai variantai rodo rekomenduojamą veiksmą konsolės, tekstinėje, HTML, JSON ir CSV išvestyje, kad paketų operatoriai galėtų nukreipti failus be papildomo rizikos ar būsenos laukų apdorojimo
Version 1.56.4
Ištaisyta (Ištaisyta)
- Skaitant anotacijas, žymeles ar nuorodų anotacijas cikle, nebelieka ankstesnio elemento teksto eilučių nutekėjimo:
TPdfAnnotation,TBookmarkirTLinkAnnotationrezultato įrašai dabar išvalomi valdomų tipų paisančia inicializacija vietoj paprasto atminties nulio rašymo, todėl dokumentai su labai dideliu teksto anotacijų kiekiu nebegali išpūsti proceso atminties per visą programos gyvavimo laiką - Naikinant
TPdf, kuris buvo užregistravęsOnUnsupportedFeaturetvarkyklę, dabar ji atsiejama nuo procesui bendro PDFium atgalinio iškvietimo, todėl vėlesnis dokumento įkėlimas iš kitoTPdfegzemplioriaus be savo tvarkyklės nebegali iškviesti į išlaisvintą komponentą (naudojimas po išlaisvinimo)
Version 1.56.3
Ištaisyta (Ištaisyta)
AccessibilityWorkbenchClinebeskaičiuoja tuščių puslapių kaip heuristinių skaitymo tvarkos puslapių, todėl pažymėti dokumentai su tuščiais skiriamaisiais puslapiais išlaiko teisingą prieinamumo būseną; puslapiai be skaitomo turinio dabar pateikiami atskiraiAccessibilityWorkbenchClilentelių antraščių aptikimas nebepriskiria išorinei lenteleiTHląstelių, priklausančių įdėtai lentelei, o formų laukų ir šriftų pavadinimai lyginami jautriai raidžių dydžiui, kad skirtingi laukai nebūtų sujungiamiIntakeWorkbenchCliURL šeimininkų inventoriai dabar pašalina vartotojo informaciją, užklausą ir fragmentą, todėl suklastota nuoroda, pvz.trusted.example@evil.example, priskiriama tikrajam šeimininkui, omailto:taikiniai prie savo domeno prisideda vietoj to, kad būtų nematomiIntakeWorkbenchCliMarkdown ataskaitos pabėgia atgalinius kirtukus priešiškai valdomuose keliuose, šeimininkuose ir priedų pavadinimuose, kad ataskaitos formatavimo nebūtų galima sulaužyti iš dokumento vidaus
Pakeista (Pakeista)
AccessibilityWorkbenchClišrifto nuskaitymo ir formų laukų nuskaitymo nesėkmes pateikia kaip atskirus skaitiklius, pažymi neįterptus šriftus, kurie taip pat turi įterptų egzempliorių, ir ilgas šriftų sąrašus sutrumpina su aiškiu sutrumpinimo žymekliuIntakeWorkbenchClipaketinės suvestinės prideda priedų anotacijų skaičiaus stulpelį, o per puslapį esančių anotacijų skaičiavimas ribojamas iki 20000 anotacijų puslapyje, o ši riba pateikiama visais formatais
Version 1.56.2
Pridėta (Pridėta)
AccessibilityWorkbenchClidabar tikrina šriftų įterpimą, formos laukų patarimus, skaitymo tvarkos šaltinį, dokumento metmenis, lentelių ir sąrašų struktūrą, įtartiną alternatyvų tekstą ir išsamesnes kiekvieno puslapio peržiūros detales, kad prieinamumo paketinės ataskaitos atpažintų daugiau taisymo taikiniųIntakeWorkbenchClidabar pateikia puslapio nuskaitymo ribas, paleidimo ir nuotolinio go-to veiksmus, URI šeimininkų inventorius, anotacijų skaičius, nepalaikomas PDFium funkcijas, pasikartojančius dokumentų identifikatorius ir išplėstus rizikos žymeklius automatizuotai įvedimo peržiūrai
Pakeista (Pakeista)
IntakeWorkbenchClipriimamaxpages=Nvieno failo ir paketiniuose režimuose, kad apribotų kiekvieno dokumento puslapių nuskaitymus, vis tiek užbaigiant metaduomenų, priedų, skriptų, XFA, parašų ir rizikos ataskaitas
Version 1.56.1
Ištaisyta (Ištaisyta)
- Senesnio
pdfium.dll, kuriam trūksta naujesnio eksporto, įkėlimas dabar nesėkmingas tvarkingai: klaidos kelias atstato kiekvieną susietą API galinį tašką, todėlAssigned()patikros (pavyzdžiui,FPDF_GetLastErrorarFPDF_GetSecurityHandlerRevision) laiko biblioteką neįkeltą vietoj to, kad bandytų kviesti jau iškrautą modulį ir kristų su prieigos pažeidimu UnloadLibrarydabar išvalo visas PDFium API sąsajas vietoj to, kad išliktų tik pasirenkami V8 pagalbininkai, todėl po DLL išlaisvinimo nebelieka pasenusių funkcijų rodyklių
Version 1.56.0
Pridėta (Pridėta)
- Žodžio lygio karaoke skaitymo žymeklis
TPdfView:TrackReadingWordAtsusieja teksto į kalbą variklio dabartinio žodžio simbolio poslinkį (pavyzdžiui SAPIStatus.InputWordPosition) su puslapio žodžių langeliais, paryškina žodį, kuriame jis yra, kaip atskirą perdangą virš skaitymo bloko, pritraukia jį į rodinį ir grąžina žodžio indeksą, todėl ištartas žodis užsidega varikliui judant pirmyn SetReadingWordirClearReadingWordtiesiogiai nustato arba išvalo paryškintą žodį išTPdfWordBox; pakartotinis to paties žodžio nustatymas yra be poveikio, todėl žodžio lygio sekimas niekada nepadaro vaizdo mirksinčioReadingWordColorirReadingWordFollowvaldo žodžio žymeklio spalvą ir tai, ar vaizdas automatiškai slenka ištartą žodį į rodinį
Version 1.55.2
Ištaisyta (Ištaisyta)
- ViewerInteractionLab dabar suteikia įrankių juostos eilutėms daugiau vertikalaus tarpo, kad Open PDF, Create Sample, naršymo, paieškos ir žymėjimo valdikliai nebesidengtų naudojant padidintus šriftus
Version 1.55.1
Ištaisyta (Ištaisyta)
- ViewerInteractionLab dabar perkelia Prev, Next ir Rotate į antrą įrankių juostos eilutę, taip išvengiant paleidimo persidengimo su Open PDF ir Create Sample
Version 1.55.0
Pridėta (Pridėta)
- Žodžio į pažymėjimą jungtis „perskaityk jį, pažymėk jį“ skaitymui:
TPdfView.SelectWordBoxirSelectWordSpanparenka vieną žodžio langelį arba to paties puslapio žodžių langelių atkarpą (išPageWordBoxes) pagal jų simbolių diapazonus, kad dabar skaitomas žodis ar eilutė būtų ir pažymėta, ir nukopijuojama WordBoxIndexAtCharIndexsusieja simbolio indeksą atgal į jį talpinantį žodžio langelį, taip valdydamas žodis po žodžio paryškinimą TTS skaitymo žymekliui judant
Version 1.54.0
Pridėta (Pridėta)
- Balso formų pildymo prieigos funkcijos, kurios fokusavimo lauką skaito tiesiai iš loginio žymeklio:
FocusedFormFieldValue,FocusedFormFieldNameirFocusedFormFieldDetailsTPdfirTPdfViewpateikia dabartinio lauko reikšmę, žmonėms suprantamą pavadinimą (/TUpatarimą, atsarginai naudojant/T) ir visąTPdfFormFieldInfo(tipą, vėliavas, parinktis) - viską, ką balso sąsaja turi pranešti eidama per formą
Ištaisyta (Ištaisyta)
FocusedFormFieldValueskaito lauką pagalFocusedFormFieldIndex, o ne pagal pdfium interaktyvų fokusą, todėl balso valdomas formų pildytojas gauna teisingą reikšmę net kai ekrane nėra žymeklio (esamasFocusedFormFieldTextvis dar atspindi pdfium fokusą ir nepasikeitė)
Version 1.53.0
Pridėta (Pridėta)
- Žodžio lygio paryškinimo palaikymas:
TPdf.PageWordBoxesirTPdfView.PageWordBoxessuskaido puslapį įTPdfWordBoxįrašus, kurių kiekvienas saugo žodžio tekstą, jo simbolių diapazoną ir puslapio erdvės ribojantį stačiakampį, todėl prieinamumo skaitytuvas gali paeiliui paryškinti kiekvieną ištartą žodį („karaoke“ skaitymas), perduodamas stačiakampį įSetReadingHighlight BuildWordBoxesatskirai atveria tokenizerio žingsnį, paversdamas puslapio tekstą į žodžių langelius su simbolių diapazonais
Version 1.52.0
Pridėta (Pridėta)
- Mažo regėjimo atvaizdavimo pagalbinės funkcijos
InvertPdfBitmap,GrayscalePdfBitmapirDuotonePdfBitmaptaiko vietines spalvų transformacijas atvaizduotam 32 bitų bitmapui, kad prieinamumo skaitytuvas galėtų pateikti puslapius invertuotus / tamsaus režimo, pilkų atspalvių arba pasirinkta dviejų spalvų schema (pavyzdžiui tamsus fonas su šviesiu tekstu) mažo regėjimo naudotojams - Transformacijos veikia kiekvienam pikseliui ir VCL bei Lazarus/LCL veikia identiškai, nepaliesdamos bitmap dimensijų
Version 1.51.0
Pridėta (Pridėta)
- Sakinio lygio skaitymo vienetai pagalbinam klausymui ir skaitymui:
TPdf.ReadingUnits,TPdf.DocumentReadingUnitsirTPdfView.ReadingUnitspaverčia skaitomą turinio srautą į tvarkingus, sakinio dydžioTPdfReadingUnitįrašus - kiekvienas jų saugo perskaitytiną tekstą kartu su jo semantiniu tipu, puslapiu, paryškinimo stačiakampiais ir kalbos žyme, kad ekrano skaitytuvo programa galėtų pereiti per puslapį ar visą dokumentą po vieną ištartą vienetą - Semantinė navigacija su
NextReadingUnitOfKind, leidžianti balso sąsajai pereiti prie kito arba ankstesnio antraštės, paveikslo, sąrašo elemento ar lentelės langelio neieškant srauto ranka BuildReadingUnitstiesiogiai paverčia bet kurįTPdfContentFragmentsį skaitymo vienetus: antraštės ir paveikslo / alt aprašymai lieka vientisi, o pastraipos skaidomos sakinių ribose, išlaikomi dešimtainiai taškai ir skaitymo žymeklis lieka paprastas skambinančiojo valdomas indeksas
Version 1.50.0
Pridėta (Pridėta)
ValidatePdfAdabar gali tikrinti PDF 1.5+ dokumentus, kuriuose katalogas, OutputIntent arba kiti žodynai saugomi suspaustuose objektų srautuose (/Type /ObjStm). Objektų srautai išpakuojami, o juose esantys objektai išsprendžiami, todėl tokie dokumentai tikrinami pagal jų pačių savybes, o ne pranešama, kad trūksta PDF/A žymenų
Version 1.49.5
Ištaisyta (Ištaisyta)
ValidatePdfAnebepraneša apie trūkstamąpdfaExtension:schemasaprašą kaip apie problemą. PDF/A identifikatoriaus schema (pdfaid) yra gerai žinoma, todėl nei veraPDF, nei PDF/A-2/-3 jai nereikalauja išplėtimo schemos aprašo, o jo nebuvimo žymėjimas klaidingai žymėdavo kiekvieną atitinkantį trečiosios šalies PDF/A. Bibliotekos pačios sukurti dokumentai vis tiek įtraukia aprašą
Version 1.49.4
Ištaisyta (Ištaisyta)
ValidatePdfAdabar nustato atitikties lygį, kai PDF/A identifikatorius parašytas kaip XML atributai (pdfaid:part="2") vietoj vaikinių elementų, todėl atributų formos dokumentai neberodomi su nežinomu lygiu. Tai taip pat ištaiso grandininį efektą, kai neaptiktas lygis priversdavo nuo dalies priklausančius tikrinimus grįžti prie griežtų PDF/A-1 taisyklių ir klaidingai pažymėti įterptus failus bei skaidrumą, kuriuos leidžia PDF/A-2 ir PDF/A-3
Version 1.49.3
Ištaisyta (Ištaisyta)
ValidatePdfAdabar tikrina PDF 1.5+ dokumentus, kurių kryžminių nuorodų duomenys yra kryžminių nuorodų srautas (failai, kuriuose nėratrailerraktažodžio). Atitikties lygis, trailer/IDir kiti žymenys skaitomi iš kryžminių nuorodų srauto žodyno, todėl tokie dokumentai tikrinami pagal savo savybes, o ne laikomi visiškai neatitinkančiais
Version 1.49.2
Ištaisyta (Ištaisyta)
ValidatePdfAnebepraneša apie klaidingą neįterpto šrifto problemą dokumentuose, kurie įterpia visus savo šriftus. Ankstesnė euristika lygino/FontDescriptoržymenų skaičių su įterptomis šriftų programomis, tačiau kiekvienas įterptas šriftas prideda du/FontDescriptoržymenis (šrifto žodyno nuorodą ir aprašo objektą), todėl kiekvienas failas su įterptais šriftais būdavo klaidingai pažymimas. Dabar patikra praneša tik apie dokumentą, kuris nurodo šriftus, bet visai neįterpia jokios šrifto programos, atitinkamai pagalValidatePdfUapataisą
Version 1.49.1
Ištaisyta (Ištaisyta)
- PDF/A išvestis dabar veraPDF patikroje atitinka PDF/A-1b ir PDF/A-1a: įterptas sRGB OutputIntent ICC profilio srautas (nurodomas per
/DestOutputProfile) dabar deklaruoja privalomą/Nkomponentų skaičių (3 įtaisytajam RGB profiliui), kaip reikalauja ISO 19005-1 6.2.3.2. Dokumentai, sukurti naudojantSaveAsPdfA, anksčiau nepraeidavo griežtos PDF/A-1 patikros, nes paskirties profilio sraute trūko/N; reikšmė išvedama iš ICC profilio antraštės, todėl ir skambinančiojo pateiktas CMYK arba Gray profilis gauna teisingą skaičių
Version 1.49.0
Ištaisyta (Ištaisyta)
ValidatePdfUanebepraneša apie klaidingai trūkstamą XMP identifikaciją atitinkančiuose Tagged PDF dokumentuose - PDF/UA identifikatorius (pdfuaid:part),dc:title, XMP datos ir trailer/IDdabar skaitomi iš pradinių dokumento baitų, o ne iš iš naujo išsaugotos kopijos, kurioje nėra/MetadataXMP srauto ir, kryžminių nuorodų srauto failuose, trailer/IDValidatePdfUašriftų įterpimo patikra pataisyta taip, kad dokumentas, įterpiantis visus savo šriftus, nebebūtų nurodomas kaip turintis neįterptų šriftų; dabar pažymimas tik dokumentas, kuris nurodo šriftus, bet visai neįterpia jokios šrifto programosValidatePdfUadabar priimaFormulastruktūros elementą, kurio alternatyvus tekstas pateiktas perActualText, o ne perAltįrašą (ISO 14289-1 §7.7), suderinant su esamaFiguretaisykle
Version 1.48.0
Pridėta (Pridėta)
- Programinis teksto pasirinkimas
TPdfView:SelectTextRange(pagal puslapį ir simbolių diapazoną) irSetSelection(pagal aiškius kiekvieno puslapio diapazonus) pasirenka tekstą iš kodo - pavyzdžiui, kad būtų galima perskaityti ir paryškinti ištrauką; abu metodai perpiešia vaizdą ir iškviečiaOnSelectionChange, kai pasirinkimas pasikeičia.SelectionRangesskaito dabartinį pasirinkimą kaip kiekvieno puslapio simbolių diapazonus, oSelectionRectanglesgrąžina jo stačiakampius puslapio koordinatėmis pasirinktiniam paryškinimui arba slinkimui iki vietos
Version 1.47.0
Pridėta (Pridėta)
- Formos laukų navigacija balsu valdomam formų pildymui tiek
TPdf, tiekTPdfView:FormFieldTabOrder,FocusedFormFieldIndex,FocusFormField,FocusNextFormField,FocusPreviousFormField,ClearFormFieldFocusirFocusedFormFieldText. Jie perkelia loginį lauko žymeklį per puslapio valdiklių laukus tabuliavimo tvarka (apsukant galuose), todėl pagalbinis skaitytuvas gali pereiti formą, pranešti kiekvieną lauką perFormFieldInfo[Index].AlternateName(/TUpatariamąjį tekstą) ir užpildyti jį perFormField[Index] TPdfView.OnFormFieldFocusChangeįvykis iškviečiamas, kai lauko žymeklis pajuda (perduodamas naują lauko indeksą arba -1, kai išvalyta)
Version 1.46.0
Pridėta (Pridėta)
- Pagalbinio klausymo ir skaitymo turinio srautas:
TPdf.ReadableContent,TPdf.ReadablePageContent,TPdf.DocumentReadableContentirTPdfView.ReadableContentgrąžina surikiuotą semantiniųTPdfContentFragmentelementų sąrašą, kur kiekvienas turi ištariamą tekstą (tikrus glifus arbaActualText/Alt figūroms), fragmento rūšį (heading su lygiu, paragraph, figure, list item, table cell, link, plain), kalbą, 1-based puslapį ir bloką bei kiekvienos eilutės paryškinimo stačiakampius. Tagged PDF dokumentai linearizuojami logine skaitymo tvarka iš struktūros medžio; nepažymėti puslapiai grįžta prie atvaizdavimo tvarkos, todėl bet kurį dokumentą galima skaityti balsu - Sinchronizuotas skaitymo paryškinimas
TPdfView:SetReadingHighlight,ClearReadingHighlightir publikuotaReadingHighlightColorparyškina šiuo metu skaitomą bloką virš paieškos ir pasirinkimo perdangų - Nauji vieši tipai
TPdfContentFragment,TPdfContentFragments,TPdfReadableContent,TPdfContentFragmentKindirTPdfReadingOrderSource, taip pat nauja pagalbinė funkcijaClassifyStructType
Version 1.45.0
Pridėta (Pridėta)
ValidatePdfUadabar taip pat pereina per gyvą Tagged PDF struktūros medį ir praneša apie tris didelio patikimumo turinio pažeidimus, kurių baitų lygio nuskaitymas negali aptikti:Figureelementą be Alt įrašo ir be ActualText (ISO 14289-1, 7.3),Formulaelementą be Alt atributo (7.7) irNoteelementą be unikalaus ID (7.9). Šiuos atvejus pateikia trys naujosTPdfUaValidationIssuereikšmės:pvuaiFigureMissingAlt,pvuaiFormulaMissingAltirpvuaiNoteMissingId. Nežymėtiems dokumentams medžio perėjimas praleidžiamas- Nauja vieša pagalbinė funkcija
ValidatePdfUaStructureElementstaiko šias struktūros medžio taisykles plokščiam elementų sąrašui (tokiam, kokį grąžinaTPdf.StructureElements), todėl patikras galima paleisti arba testuoti vienetų testais neįkeliant viso dokumento
Version 1.44.5
Ištaisyta (Ištaisyta)
ValidatePdfAšriftų įterpimo patikra (pvaiFontNotEmbedded, ISO 19005-1, 6.3.4) dabar taip pat aptinka neįterptus paprastus šriftus, kurie neturi/FontDescriptor, svarbiausia 14 standartinių Type 1 šriftų (Helvetica, Times, Courier ir panašiai), kuriuos PDF/A reikalauja įterpti be išimties. Anksčiau toks šriftas likdavo nepastebėtas; dabar patikra taip pat skaičiuoja paprastųjų šriftų žodynus (/Type1,/TrueType,/MMType1) prieš įterptas šriftų programas, atkartodama PDF/UA pataisą iš 1.44.3
Version 1.44.4
Ištaisyta (Ištaisyta)
ValidatePdfVTdabar atmeta netaisyklingus ISO 16612-2 §6.5 DPart medžius, kuriuose/DPartsyra plokščias nuorodų masyvas vietoj privalomo masyvų masyvo, arba kuriuose lapinis DPart pakartoja savo/Startpuslapį kaip/End, nors diapazone yra tik vienas puslapisValidatePdfVTdabar tikrina/NodeNameListpavadinimus kaip XML NMTOKEN reikšmes po PDF pavadinimo#xxescape išplėtimo, todėl neteisingi hierarchijos lygio pavadinimai pranešami perpvviMissingDPartRoot, o ne priimami kaip tinkama DPart struktūra
Version 1.44.3
Ištaisyta (Ištaisyta)
ValidatePdfUašriftų įterpimo patikra (pvuaiFontNotEmbedded, ISO 14289-1, 7.21.4) dabar taip pat aptinka neįterptus paprastus šriftus, kurie neturi/FontDescriptor, svarbiausia 14 standartinių Type 1 šriftų (Helvetica, Times, Courier ir panašiai), kuriems PDF/UA nesuteikia įterpimo išimties. Anksčiau toks šriftas likdavo nepastebėtas, o jį naudojantis dokumentas galėjo būti nurodytas kaip atitinkantis reikalavimus; dabar patikra taip pat skaičiuoja paprastųjų šriftų žodynus (/Type1,/TrueType,/MMType1) prieš įterptas šriftų programas
Version 1.44.2
Ištaisyta (Ištaisyta)
ValidatePdfVTdabar palieka esamą, bet neatpažintąpdfvtid:GTS_PDFVTVersionžymenį kaippvcUnknown, o ne pažemina jį ikipvcNone. Taip neteisingos failo lygio eilutės, pvz.PDF/VT-2s, lieka atskiriamos nuo dokumentų, kurie visai neturi PDF/VT žymens; PDF/VT-2s identifikuojamas pagal MIME srauto antraštę ISO 16612-2 Annex A, o ne pagal PDF failo XMP žymenį/DPartRootpatikra dabar griežčiau tikrina ISO 16612-2 §6.5 medžio semantiką:/DPartRootNodeir/NodeNameListturi aprašyti tikrąjį DPart gylį, DPart tėvų nuorodos turi sudaryti medį,/Startir/DPartsyra tarpusavyje nesuderinami, o kiekvieno puslapio/DPartturi rodyti į dengiantį lapinį DPart ta pačia depth-first tvarka kaip puslapių medis
Version 1.44.1
Ištaisyta (Ištaisyta)
SaveAsPdfVTdabar įrašo minimalią ISO 16612-2 §6.5 Document Part Hierarchy, kai šaltinio PDF neturi tinkamo/DPartRoot. Sugeneruotas medis susieja kiekvieną puslapį per/DPart, išsaugo esamą galiojančią hierarchiją ir palieka turtingesnius recipient/DPM metaduomenis skambinančiai darbo eigaiValidatePdfVTdabar tikrina tinkamą DPart struktūrą, skaito PDF/VT XMP reikšmes ir iš RDF atributų, ir iš elemento teksto, ir užtikrina tikslų PDF/VT-to-PDF/X bazinį susiejimą: PDF/VT-1 reikalauja PDF/X-4, o PDF/VT-2 reikalauja PDF/X-4p, PDF/X-5g arba PDF/X-5pgTPdfVTSaveOptions.Conformance = pvc2neberašo neteisingų vieno failo PDF/VT-2 žymenų. Vieno failo rašyklė normalizuoja išvestį į PDF/VT-1, nes PDF/VT-2 reikalauja file-set semantikos
Version 1.44.0
Pridėta (Pridėta)
ValidatePdfUadabar, be failo formato žymenų, taip pat praneša apie baitų lygmeniu patikrinamus turinio lygio PDF/UA pažeidimus: neįterptą šrifto programą (ISO 14289-1, 7.21.4), šriftą be/ToUnicodeCMap, kai nėra taikomos išimties paprastojo šrifto koduotės (7.21.7), ir dokumentą, kuris turi anotacijų, bet nedeklaruoja puslapio/Tabs /Stabuliavimo tvarkos (7.18.3)- Trys naujos
TPdfUaValidationIssuereikšmės -pvuaiFontNotEmbedded,pvuaiFontMissingToUnicodeirpvuaiMissingTabsOrder- pateikiamos perValidatePdfUair preflight ataskaitoje. Tai yra apytikrės euristikos, skirtos kaip preflight užuominos, o ne kaip visa ISO 14289-1 patikra
Version 1.43.1
Ištaisyta (Ištaisyta)
SaveAsPdfUadabar užtikrina ISO 14289-1, 7.1 privalomus katalogo įrašus/ViewerPreferences/DisplayDocTitle trueir/MarkInfo/Marked true/Suspects falsenet tada, kai šaltinio dokumentas jau pateikia šiuos žodynus su trūkstamomis arba prieštaraujančiomis reikšmėmis. Anksčiau žymenys būdavo įterpiami tik tada, kai žodynų visai nebuvo, todėl šaltinis, turintis, pavyzdžiui,/ViewerPreferencesbeDisplayDocTitlearba/MarkInfosu/Marked false, po ciklo tapdavo neatitinkančiu failu- Esami raktai jau esančiame
/ViewerPreferencesarba/MarkInfožodyne išsaugomi, o žodynas, pateiktas kaip netiesioginė nuoroda, išsprendžiamas prieš taikant privalomus raktus
Version 1.43.0
Pridėta (Pridėta)
ValidatePdfAdabar taiko PDF/A-2 / PDF/A-3 taisykles įterptiems ir susietiems failams bei Level U tekstui. PDF/A-1 vis dar atmeta įterptus failus; PDF/A-3 atveju pažymimas įterptas failas, kuriam trūksta privalomo/AFRelationshiprakto (ISO 19005-3 Annex E), o PDF/A-2 priedai leidžiami (jų pačių atitiktis rekursyviai netikrinama). NaujapvaiUnicodeMappingMissingproblema praneša apie PDF/A-2u arba PDF/A-3u dokumentą, kurio šriftai neturi/ToUnicodesusiejimo (ISO 19005-2 6.2.11.7). Skaidrumas ir optional content lieka žymimi tik PDF/A-1
Version 1.42.0
Pridėta (Pridėta)
- PDF/A-2 (ISO 19005-2) ir PDF/A-3 (ISO 19005-3) dabar palaikomi visais trimis atitikties lygiais — a, b ir u — per
SaveAsPdfA,ValidatePdfAirPdfAConformanceypatybę.TPdfAConformanceišvardijimas gaunapac2a,pac2u,pac3airpac3u(PDF/A-1 neturi Level u). Įrašant rašomas atitinkamaspdfaid:part(2 arba 3) irpdfaid:conformance(A, B arba U), išlaikantGTS_PDFA1OutputIntent potipį, kurį ISO 19005-2 palieka suderinamumui. Level A užklausa vis tiek pažeminama iki atitinkamo Level B (bet kuriai daliai), kai dokumentui trūksta Tagged PDF struktūros, kurios tas lygis reikalauja
Version 1.41.0
Pridėta (Pridėta)
ValidatePdfAdabar, be jau praneštų struktūrinių žymenų, aptinka turinio lygio PDF/A pažeidimus, kurių žymenų įterpimas negali pataisyti: JavaScript ir kitus draudžiamus veiksmus, additional-actions (/AA), įterptus failus,LZWDecode, skaidrumą (soft masks ir transparency groups), optional content (/OCProperties), draudžiamus anotacijų potipius (FileAttachment, Sound, Movie, 3D, Screen), AcroForm/NeedAppearances trueir/XFA, šriftus, kurių aprašai neturi įterptos šrifto programos, ir Level A deklaraciją be Tagged PDF struktūros, reikalaujamos ISO 19005-1 6.8. Skaidrumo, optional-content ir įterptų failų patikros taikomos tik PDF/A-1 (šios funkcijos leidžiamos PDF/A-2 ir PDF/A-3). NaujosTPdfAValidationIssuereikšmės pateikia kiekvieną atvejį; esamos reikšmės nekeičiamos
Version 1.40.3
Ištaisyta (Ištaisyta)
SaveAsPdfAdabar pašalina bet kokį šaltinio dokumento šifravimą prieš kurdamas PDF/A išvestį. ISO 19005-1 6.1.3 draudžia trailer/Encryptraktą, tačiau išsaugojimo kelias anksčiau išlaikydavo šaltinio saugos tvarkyklę, todėl šifruoto dokumento išsaugojimas kaip PDF/A sukurdavo šifruotą, neatitinkantį failą. PDF/A išsaugojimas dabar pirmiausia iššifruoja dokumentą. Nešifruoti dokumentai nepaveikiami
Version 1.40.2
Ištaisyta (Ištaisyta)
SaveAsPdfAnebeleidžia išvesti klaidingos PDF/A Level A atitikties deklaracijos. Kai prašoma Level A (pac1a), bet šaltinio dokumentui trūksta Tagged PDF struktūros žymenų, reikalaujamų ISO 19005-1 6.8 - katalogo/StructTreeRootir/MarkInfožodyno su/Marked true- išsaugotas failas dabar identifikuojamas kaip atitinkamas Level B (pdfaid:conformance=B), o ne deklaruoja Level A. Grynai vizualinė PDF/A-1b išvestis nepaveikiama
Version 1.40.1
Ištaisyta (Ištaisyta)
- Sugriežtinta PDF versijos atitikties patikra, kad
SetOCGState(set-optional-content-group-state) veiksmas būtų atpažintas kaip PDF 1.5 funkcija. Išsaugojimas į PDF 1.2, 1.3 arba 1.4 tikslą, kuriame yraSetOCGStateveiksmas, dabar atmetamas pagal ISO 32000-1 (Table 198); anksčiau toks veiksmas galėjo pereiti į žemesnės versijos išvestį. Atskiras, pasenęs PDF 1.2SetStateveiksmas vis dar priimamas nuo PDF 1.2
Version 1.40.0
Pridėta (Pridėta)
- Susietas upstream
FPDFPageObj_AddExistingMark()API, kuris prie puslapio objekto prideda esamą turinio žymą. Kai iš eilės einantys puslapio objektai naudoja tą pačią žymą, išsaugotas PDF sujungia juos į vieną žymą, apimančią juos visus; ne iš eilės einantys objektai gauna atskiras kopijas - Susietas upstream
FPDFTextObj_SetFontSize()API esamo teksto objekto taško dydžiui keisti, papildantis esamąFPDFTextObj_GetFontSize()susiejimą
Pakeista (Pakeista)
- Atnaujinti pridedami PDFium vykdymo DLL failai (Win32 ir Win64, standartinės ir V8 versijos) iki pirminio projekto 2026-06-02 momentinės versijos
Version 1.39.53
Pakeista (Pakeista)
- Delphi
PDFViewer,SplitViewirMultiPageViewerdemonstraciniai projektai pakeisti taip, kad dokumentus pagal numatymą atidarytųZoom to Pagerežimu - Pradinis atvaizdavimas dabar sutalpina visą puslapį į peržiūros paviršių prieš naudotojui pasirenkant rankinį mastelio lygį
- Atnaujinti
TPdf.AboutInfo, Lazarus paketo metaduomenys ir diegiklio versijos metaduomenys, kad praneštų 1.39.53
Version 1.39.52
Pakeista (Pakeista)
- Patobulintas
Demo\Lazarus\CreatePDF, kad įvadinis pavyzdys dabar sugeneruotų dviejų puslapių PDF su vektoriniais kontūrais, lentelės turiniu, įterptu vaizdu, teksto anotacija, pasuktu tekstu ir aiškesniu dokumento kūrimo paaiškinimu - Pridėti nugludinti
README.htmlpuslapiai kiekvienam Delphi, C++Builder ir Lazarus demonstraciniam aplankui, pakeičiant likusius tik tekstinius demo README naršyklėje skaitomu vadovu - Atnaujinti
TPdf.AboutInfo, Lazarus paketo metaduomenys ir diegiklio versijos metaduomenys, kad praneštų 1.39.52
Version 1.39.51
- Patobulintos
Demo\Delphi\PreflightReportClipaketinės suvestinės, pridedant standartines būsenų sumas Pass, Action required ir Review rezultatams per pasirinktus standartus - Kiekvieno failo eilutėse dabar yra action-required ir review skaičiai TXT / HTML / JSON / CSV suvestinėse, todėl CI artefaktus lengviau tikrinti neatidarant kiekvienos sugeneruotos ataskaitos
- Atnaujinti
TPdf.AboutInfo, Lazarus paketo metaduomenys ir diegiklio versijos metaduomenys, kad praneštų 1.39.51
Version 1.39.50
- Patobulintas
Demo\Delphi\PreflightReportCliaplankų paketinis režimas, kadbatchdir=foldersurinktų rastus PDF kelius, juos surikiuotų ir tada generuotų ataskaitas stabilia tvarka - Rekursyvūs aplankų nuskaitymai dabar pateikia atkuriamą ataskaitų tvarką ir suvestinių eilutes, o aiškus
batch=list.txtapdorojimas toliau išlaiko sąrašo failo tvarką - Atnaujinti
TPdf.AboutInfo, Lazarus paketo metaduomenys ir diegiklio versijos metaduomenys, kad praneštų 1.39.50
Version 1.39.49
- Patobulintos
Demo\Delphi\PreflightReportClipaketinės suvestinės, kad įrašytų vykdymo nustatymus: šaltinio rūšį, šaltinio kelią, rekursinę būseną, išvesties aplanką, ataskaitos formatą, pasirinktus standartus irfailon=režimą - JSON suvestinėse dabar yra
runobjektas, TXT ir HTML suvestinės rodo vykdymo nustatymų skyrių, o CSV eilutės pakartoja tuos pačius audito stulpelius skaičiuoklių ir CI eigoms - Atnaujinti
TPdf.AboutInfo, Lazarus paketo metaduomenys ir diegiklio versijos metaduomenys, kad praneštų 1.39.49
Version 1.39.48
- Patobulintas
Demo\Delphi\PreflightReportClipaketinių išvesčių pavadinimas, kad pasikartojantys įvesties failų pavadinimai, naudojantys tą patįoutdir=, nebeperrašytų vienas kito sugeneruotų ataskaitų - Paketiniai vykdymai dabar prideda
-2,-3ir vėlesnes priesagas, kai sugeneruotos ataskaitos kelias tame pačiame vykdyme jau buvo priskirtas, o suvestinės įrašo galutinį nuo kolizijų apsaugotą ataskaitos kelią - Atnaujinti
TPdf.AboutInfo, Lazarus paketo metaduomenys ir diegiklio versijos metaduomenys, kad praneštų 1.39.48
Version 1.39.47
- Patobulintos
Demo\Delphi\PreflightReportClipaketinės suvestinės, kad TXT ir JSON išvestys dabar įtrauktų bendras sumas visiems failams, apdorotiems failams, nepavykusiems failams, problemoms irfailon=atitikmenims - CSV suvestinės esamiems vartotojams lieka gryna eilučių lentelė, o HTML suvestinės toliau rodo tas pačias bendras metrikas valdymo skydelio antraštėje
- Atnaujinti
TPdf.AboutInfo, Lazarus paketo metaduomenys ir diegiklio versijos metaduomenys, kad praneštų 1.39.47
Version 1.39.46
- Patobulintas
Demo\Delphi\PreflightReportClisusummary=batch.html/.htm, kad paketiniai vykdymai galėtų išvesti naršyklėje skaitomą valdymo skydelį šalia TXT / CSV / JSON manifestų - HTML suvestinės rodo bendras, apdorotas, nepavykusias, problemų ir
failon=atitikčių metrikas, tada išvardija kiekvieną įvestį su ataskaitų saitais, būsena, skaičiais ir klaidos tekstu - Atnaujinti
TPdf.AboutInfo, Lazarus paketo metaduomenys ir diegiklio versijos metaduomenys, kad praneštų 1.39.46
Version 1.39.45
- Patobulintas
Demo\Delphi\PreflightReportClisubatchdir=folderirrecursive, kad skriptai galėtų tiesiogiai nuskaityti PDF aplankus prieš tai nerašydami sąrašo failo - Aplanko paketinis režimas pakartotinai naudoja
outdir=,summary=,standards=irfailon=elgseną iš sąrašu pagrįsto paketinio režimo, o nerekursyvūs nuskaitymai tikrina tik pasirinktą aplanką, orecursiveįtraukia poaplankius - Atnaujinti
TPdf.AboutInfo, Lazarus paketo metaduomenys ir diegiklio versijos metaduomenys, kad praneštų 1.39.45
Version 1.39.44
- Patobulintas
Demo\Delphi\PreflightReportClisusummary=batch.csv|json|txt, kad paketiniai vykdymai galėtų išvesti mašinoms skaitomą manifestą šalia kiekvieno failo ataskaitų - Paketinėse suvestinėse yra kiekvienas įvesties kelias, ataskaitos kelias, būsena, standartų skaičius, praėjusių patikrų skaičius, problemų skaičius,
failon=atitikties būsena ir klaidos tekstas CI užduotims ir išoriniams skriptams - Atnaujinti
TPdf.AboutInfo, Lazarus paketo metaduomenys ir diegiklio versijos metaduomenys, kad praneštų 1.39.44
Version 1.39.43
- Patobulintas
Demo\Delphi\PreflightReportClisubatch=list.txtiroutdir=reports, kad skriptai vienu vykdymu galėtų generuoti preflight ataskaitas PDF failų sąrašui - Paketinis režimas praleidžia tuščias ir
#komentarų eilutes, kiekvienos.preflight.<ext>ataskaitos pavadinimą išveda iš įvesties PDF, tęsia po kiekvieno failo klaidų ir prieš grįždamas apibendrina apdorotus ir nepavykusius failus - Atnaujinti
TPdf.AboutInfo, Lazarus paketo metaduomenys ir diegiklio versijos metaduomenys, kad praneštų 1.39.43
Version 1.39.42
- Patobulintas
Demo\Delphi\PreflightReportClisufailon=none|issues|action|review, kad CI užduotys galėtų paversti sugeneruotus preflight rezultatus deterministiniais išėjimo kodais - CLI dabar grąžina išėjimo kodą 2, kai pasirinkta
failon=taisyklė sutampa po ataskaitos failo ir pasirinktinio pridėtos ataskaitos PDF sugeneravimo, o vykdymo klaidos vis dar grąžina išėjimo kodą 1 - Atnaujinti
TPdf.AboutInfo, Lazarus paketo metaduomenys ir diegiklio versijos metaduomenys, kad praneštų 1.39.42
Version 1.39.41
- Patobulintas
Demo\Delphi\PreflightReportClisuattach=output.pdf, kad sugeneruotą preflight ataskaitą būtų galima įterpti kaip dokumento lygio priedą į naują PDF kopiją - CLI palieka sugeneruotą TXT / HTML / Markdown / JSON / CSV ataskaitos failą diske ir atsisako pridėti ataskaitą atgal į pradinį įvesties PDF kelią, mažindama atsitiktinio perrašymo riziką
- Atnaujinti
TPdf.AboutInfo, Lazarus paketo metaduomenys ir diegiklio versijos metaduomenys, kad praneštų 1.39.41
Version 1.39.40
- Pridėtas
Demo\Delphi\PreflightReportCli, Delphi konsolinis palydovas skriptuojamamFPdfPreflightReportgeneravimui neatidarant peržiūros programos - CLI palaiko pavyzdžio kūrimą be argumentų, įvesties / išvesties argumentus, pasirinktinį slaptažodį,
text/html/md/json/csvišvesties formatus irstandards=filtravimą PDF/A, PDF/UA, PDF/E, PDF/X, PDF/R ir PDF/VT standartams - Atnaujinti
TPdf.AboutInfo, Lazarus paketo metaduomenys ir diegiklio versijos metaduomenys, kad praneštų 1.39.40
Version 1.39.39
- Patobulintas
FPdfPreflightReportsuTPdfPreflightReport.ToMarkdownirSaveMarkdownToFile, kad preflight ataskaitas būtų galima eksportuoti kaip problemų sekimo sistemoms tinkamą Markdown - Atnaujinti Delphi, C++Builder ir Lazarus
PreflightReportpavyzdžiai su Markdown peržiūros perjungimu ir Save MD veiksmais šalia esamos TXT / HTML / JSON / CSV darbo eigos - Atnaujinti
TPdf.AboutInfo, Lazarus paketo metaduomenys ir diegiklio versijos metaduomenys, kad praneštų 1.39.39
Version 1.39.38
- Patobulinti Delphi, C++Builder ir Lazarus
SecurityAuditpavyzdžiai, pridedant JSON audito ataskaitos eksportą šalia esamos TXT išsaugojimo / kopijavimo darbo eigos - JSON ataskaitoje yra
format,generatedAt,summary,findingCountir struktūruotosfindingseilutės su svarbos, srities ir detalių laukais - Atnaujinti
TPdf.AboutInfo, Lazarus paketo metaduomenys ir diegiklio versijos metaduomenys, kad praneštų 1.39.38
Version 1.39.37
- Patobulintas
FPdfPreflightReportsuTPdfPreflightReport.ToCsvirSaveCsvToFile, kad preflight ataskaitas būtų galima eksportuoti kaip skaičiuoklėms tinkamą CSV - Atnaujinti Delphi, C++Builder ir Lazarus
PreflightReportpavyzdžiai su CSV peržiūros perjungimu ir Save CSV veiksmais šalia esamos TXT / HTML / JSON darbo eigos - Atnaujinti
TPdf.AboutInfo, Lazarus paketo metaduomenys ir diegiklio versijos metaduomenys, kad praneštų 1.39.37
Version 1.39.36
- Patobulintas
FPdfPreflightReportsuTPdfPreflightReport.IssueCategoryCountsir pakartotinai naudojamaisTPdfPreflightIssueCategoryCountbeiTPdfPreflightIssueCategoryCountstipais, skirtais žymenų lygio problemoms agreguoti pagal kategoriją - Atnaujinti
TPdfPreflightReport.ToText,ToHtmlirToJson, kad sugeneruotoje PreflightReport išvestyje būtų problemų kategorijų skaičių suvestinės šalia kiekvieno standarto eilučių ir detalių problemų rekomendacijų - Atnaujinti
TPdf.AboutInfo, Lazarus paketo metaduomenys ir diegiklio versijos metaduomenys, kad praneštų 1.39.36
Version 1.39.35
- Išplėstas
PrintDialogpavyzdys pervadintas įPrintPreferencesDelphi, C++Builder ir Lazarus aplinkose, kad demonstracinio projekto pavadinimas dabar atitiktų jo PDF author print preferences, N-up printing, odd / even filtering, grayscale, cell border ir duplex mapping darbo eigą - Atnaujinti
TPdf.AboutInfo, Lazarus paketo metaduomenys ir diegiklio versijos metaduomenys, kad praneštų 1.39.35
Version 1.39.34
- Patobulintas
Demo\Delphi\PrintPDFsu PDF įkėlimu tempiant ir numetant, o esamaDemo\CBuilder\PrintPDFdarbo eiga aprašyta šalia Delphi ir Lazarus PrintPDF pavyzdžių - Atnaujinti
TPdf.AboutInfo, Lazarus paketo metaduomenys ir diegiklio versijos metaduomenys, kad praneštų 1.39.34
Version 1.39.33
- Pridėtas
Demo\CBuilder\SplitView, užbaigiant SplitView pavyzdžių matricą Delphi, C++Builder ir Lazarus aplinkose - Atnaujinti
TPdf.AboutInfo, Lazarus paketo metaduomenys ir diegiklio versijos metaduomenys, kad praneštų 1.39.33
Version 1.39.32
- Pridėtas
Demo\Lazarus\SplitView, suteikiantis Lazarus aplinkai PDF palyginimą greta su dviejų arba trijų sričių išdėstymais, aktyvaus rodinio navigacija, sinchronizuotomis komandomis, mastelio ruošiniais ir pasukimu - Atnaujinti
TPdf.AboutInfo, Lazarus paketo metaduomenys ir diegiklio versijos metaduomenys, kad praneštų 1.39.32
Version 1.39.31
- Pridėtas
Demo\Lazarus\PrintPDF, suteikiantis Lazarus aplinkai standartinę PDF spausdinimo darbo eigą su peržiūros navigacija, puslapių diapazonais, kopijomis, collate režimu, eiga ir atšaukimu - Atnaujinti
TPdf.AboutInfo, Lazarus paketo metaduomenys ir diegiklio versijos metaduomenys, kad praneštų 1.39.31
Version 1.39.30
- Pridėtas
Demo\Lazarus\FontProperties, užbaigiant FontProperties pavyzdžių matricą Delphi, C++Builder ir Lazarus aplinkose - Atnaujinti
TPdf.AboutInfo, Lazarus paketo metaduomenys ir diegiklio versijos metaduomenys, kad praneštų 1.39.30
Version 1.39.29
- Pridėtas
Demo\CBuilder\FontProperties, suteikiantis C++Builder indeksuotų simbolių ir šriftų metaduomenų tikrinimą šalia Delphi pavyzdžio - Atnaujinti
TPdf.AboutInfo, Lazarus paketo metaduomenys ir diegiklio versijos metaduomenys, kad praneštų 1.39.29
Version 1.39.28
- Pridėtas
Demo\Delphi\ExtractTextPages, užbaigiant kiekvieno puslapio teksto ištraukimo pavyzdžių matricą Delphi, C++Builder ir Lazarus aplinkose - Atnaujinti
TPdf.AboutInfo, Lazarus paketo metaduomenys ir diegiklio versijos metaduomenys, kad praneštų 1.39.28
Version 1.39.27
- Pridėtas
Demo\Lazarus\PrintDialog, užbaigiant PrintDialog pavyzdžių matricą Delphi, C++Builder ir Lazarus aplinkose - Atnaujinti
TPdf.AboutInfo, Lazarus paketo metaduomenys ir diegiklio versijos metaduomenys, kad praneštų 1.39.27
Version 1.39.26
- Pridėtas
Demo\CBuilder\PrintDialog, suteikiantis C++Builder N-up printing ir PDF author print preferences darbo eigą šalia Delphi pavyzdžio - Atnaujinti
TPdf.AboutInfo, Lazarus paketo metaduomenys ir diegiklio versijos metaduomenys, kad praneštų 1.39.26
Version 1.39.25
- Pridėtas
Demo\CBuilder\ViewerInteractionLab, užbaigiant ViewerInteractionLab pavyzdžių matricą Delphi, C++Builder ir Lazarus aplinkose - Atnaujinta bibliotekos kūrimo darbo eiga ir Win64 C++Builder paketų išvestys, kad
TPdfViewperžiūros sąveikos metodai teisingai susisietų Win64 demonstraciniuose projektuose - Atnaujinti
TPdf.AboutInfo, Lazarus paketo metaduomenys ir diegiklio versijos metaduomenys, kad praneštų 1.39.25
Version 1.39.24
- Pridėtas
Demo\Lazarus\ViewerInteractionLab, suteikiantis Lazarus aplinkai sutelktą peržiūros sąveikos darbo eigą šalia Delphi pavyzdžio - Atnaujinti
TPdf.AboutInfo, Lazarus paketo metaduomenys ir diegiklio versijos metaduomenys, kad praneštų 1.39.24
Version 1.39.23
- Pridėtas
Demo\Lazarus\SearchAndSelect, užbaigiant SearchAndSelect pavyzdžių matricą Delphi, C++Builder ir Lazarus aplinkose - Atnaujinti
TPdf.AboutInfo, Lazarus paketo metaduomenys ir diegiklio versijos metaduomenys, kad praneštų 1.39.23
Version 1.39.22
- Pridėti
Demo\CBuilder\ContentExtractionLabirDemo\Lazarus\ContentExtractionLab, suteikiant kelių kategorijų turinio ištraukimo darbo eigą visoms palaikomoms demonstracinių projektų IDE - Atnaujinti
TPdf.AboutInfo, Lazarus paketo metaduomenys ir diegiklio versijos metaduomenys, kad praneštų 1.39.22
Version 1.39.21
- Patobulinti
Demo\Delphi\PreflightReport,Demo\Lazarus\PreflightReportirDemo\CBuilder\PreflightReportsu peržiūros formato parinkikliu, kad naudotojai galėtų patikrinti tekstinę arba JSON išvestį prieš išsaugodami ataskaitas - Atnaujinti
TPdf.AboutInfo, Lazarus paketo metaduomenys ir diegiklio versijos metaduomenys, kad praneštų 1.39.21
Version 1.39.20
- Pridėtas JSON eksportas į
FPdfPreflightReportperTPdfPreflightReport.ToJsonirSaveJsonToFile, sukuriantis mašinoms skaitomas suvestines, kiekvieno standarto būseną / prioritetą, kitus veiksmus ir problemų detales - Atnaujinti
Demo\Delphi\PreflightReport,Demo\Lazarus\PreflightReportirDemo\CBuilder\PreflightReport, pridedant Save JSON veiksmus šalia TXT / HTML eksporto - Atnaujinti
TPdf.AboutInfo, Lazarus paketo metaduomenys ir diegiklio versijos metaduomenys, kad praneštų 1.39.20
Version 1.39.19
- Patobulintas
FPdfPreflightReportsuTPdfPreflightStatus, problemų kategorijomis, kiekvieno standarto prioritetu ir kito veiksmo gairėmis TXT / HTML ataskaitose - Atnaujinti
Demo\Delphi\PreflightReport,Demo\Lazarus\PreflightReportirDemo\CBuilder\PreflightReport, kad suvestinės tinklelyje rodytų būseną, prioritetą, problemų skaičių ir kitą veiksmą - Atnaujinti
TPdf.AboutInfo, Lazarus paketo metaduomenys ir diegiklio versijos metaduomenys, kad praneštų 1.39.19
Version 1.39.18
- Pridėtas
Demo\Lazarus\SecurityAudit, užbaigiant Delphi, C++Builder ir Lazarus demonstracinių projektų matricą, skirtą tik skaitymo PDF rizikos paviršiaus audito darbo eigai - Lazarus pavyzdys išvardija leidimus, priedus, JavaScript veiksmus, URI / Launch nuorodų anotacijas, žiniatinklio nuorodas, parašus, XFA būseną, V8 / XFA pagalbinių funkcijų prieinamumą ir nepalaikomų funkcijų callback, tada išsaugo arba nukopijuoja radinių sąrašą kaip TXT ataskaitą
- Atnaujinti
TPdf.AboutInfo, Lazarus paketo metaduomenys ir diegiklio versijos metaduomenys, kad praneštų 1.39.18
Version 1.39.17
- Pridėtas
Demo\CBuilder\SecurityAudit, perkeliant tik skaitymo PDF rizikos paviršiaus audito darbo eigą į C++Builder šalia esamo Delphi pavyzdžio - C++Builder pavyzdys išvardija leidimus, priedus, JavaScript veiksmus, URI / Launch nuorodų anotacijas, žiniatinklio nuorodas, parašus, XFA būseną, V8 / XFA pagalbinių funkcijų prieinamumą ir nepalaikomų funkcijų callback, tada išsaugo arba nukopijuoja radinių sąrašą kaip TXT ataskaitą
- Atnaujinti
TPdf.AboutInfo, Lazarus paketo metaduomenys ir diegiklio versijos metaduomenys, kad praneštų 1.39.17
Version 1.39.16
- Pridėtas
Demo\CBuilder\SearchAndSelect, perkeliant atskirą SearchAndSelect peržiūros darbo eigą į C++Builder šalia esamo Delphi pavyzdžio - C++Builder pavyzdys sukuria arba atidaro PDF, išvardija visų puslapių atitikmenis su puslapio / simbolio indekso peržiūromis, palaiko Previous / Next ir navigaciją dukart spustelėjus, ir paryškina dabartinio puslapio atitikmenis su
HighlightSearchText - Jis taip pat pateikia
AllowUserTextSelection,SelectedText,SelectAll,CopySelectionToClipboard,ClearSelection,OnSelectionChangeir išskleistinioDisplayModeparinktis; versijos metaduomenys dabar praneša 1.39.16
Version 1.39.15
- Pridėtas
Demo\CBuilder\WatermarkStamp, užbaigiant Delphi, Lazarus ir C++Builder demonstracinių projektų matricą, skirtą pakartotinai naudojamoms Form XObject vandens ženklų ir antspaudų darbo eigoms - C++Builder pavyzdys sukuria tikslinį ir antspaudo PDF, pakartotinai naudoja antspaudo puslapį per
CreateXObjectFromPage, taikoTPdfMatrixtransformacijas ir išsaugo centruotus vandens ženklus, kampinius antspaudus bei puslapių numerių žymas - Atnaujinti
TPdf.AboutInfo, Lazarus paketo metaduomenys ir diegiklio versijos metaduomenys, kad praneštų 1.39.15
Version 1.39.14
- Pridėtas
Demo\Lazarus\WatermarkStamp, perkeliant pakartotinai naudojamą Form XObject vandens ženklų ir antspaudų darbo eigą į Lazarus - Lazarus pavyzdys sukuria tikslinį ir antspaudo PDF, pakartotinai naudoja antspaudo puslapį per
CreateXObjectFromPage, taikoTPdfMatrixtransformacijas ir išsaugo centruotus vandens ženklus, kampinius antspaudus bei puslapių numerių žymas - Atnaujinti
TPdf.AboutInfo, Lazarus paketo metaduomenys ir diegiklio versijos metaduomenys, kad praneštų 1.39.14
Version 1.39.13
- Pridėtas
Demo\CBuilder\PreflightReport, užbaigiant Delphi, Lazarus ir C++Builder demonstracinių projektų matricą, skirtą pakartotinai naudojamaiFPdfPreflightReportdarbo eigai - C++Builder pavyzdys naudoja
FPdfPreflightReport.hpp, kad generuotų standartų suvestines, TXT ataskaitų peržiūras, TXT / HTML ataskaitų failus ir Open Last Report elgseną - Atnaujinti
TPdf.AboutInfo, Lazarus paketo metaduomenys ir diegiklio versijos metaduomenys, kad praneštų 1.39.13
Version 1.39.12
- Pridėtas
Demo\Lazarus\PreflightReport, perkeliant PDF/A, PDF/UA, PDF/E, PDF/X, PDF/R ir PDF/VT preflight ataskaitų darbo eigą į Lazarus - Lazarus pavyzdys gali atidaryti arba sukurti PDF, pasirinkti tikslinius standartus, peržiūrėti suvestinės eilutes ir TXT ataskaitos išvestį, išsaugoti TXT / HTML ataskaitas ir atidaryti naujausiai išsaugotą ataskaitą
- Atnaujinti
TPdf.AboutInfo, Lazarus paketo metaduomenys ir diegiklio versijos metaduomenys, kad praneštų 1.39.12
Version 1.39.11
- Patobulintas
Demo\Delphi\SearchAndSelect, pridedant visų puslapių paieškos rezultatų sąrašą, kuris įrašo puslapio numerį, simbolio indeksą ir peržiūros tekstą - Pridėta Previous / Next atitikmenų navigacija ir perėjimas dukart spustelėjus rezultatą, išlaikant dabartinio puslapio
HighlightSearchTextelgseną - Atnaujinti
TPdf.AboutInfo, Lazarus paketo metaduomenys ir diegiklio versijos metaduomenys, kad praneštų 1.39.11
Version 1.39.10
- Patobulintas
Demo\Delphi\SecurityAuditsu Save Report ir Copy Report veiksmais, kurie eksportuoja dabartinę suvestinę ir radinių eilutes kaip TXT audito ataskaitą - Demonstracinis projektas dabar išvalo ataskaitos eksporto būseną, kai audito skydelis nustatomas iš naujo, todėl nukopijuotos arba išsaugotos ataskaitos lieka suderintos su matomais radiniais
- Atnaujinti
TPdf.AboutInfo, Lazarus paketo metaduomenys ir diegiklio versijos metaduomenys, kad praneštų 1.39.10
Version 1.39.9
- Patobulintas
Demo\Delphi\ContentExtractionLabsu šaltinio PDF išsaugojimu, ataskaitos kopijavimu į iškarpinę ir visų / nė vienos kategorijos pasirinkimo veiksmais - Demonstracinis projektas dabar panaikina dabartinės ataskaitos galiojimą, kai keičiasi kategorijų pasirinkimai, todėl TXT / JSON eksportai atspindi matomą ištraukimo apimtį
- Atnaujinti
TPdf.AboutInfo, Lazarus paketo metaduomenys ir diegiklio versijos metaduomenys, kad praneštų 1.39.9
Version 1.39.8
- Pridėtas
Demo\Delphi\ContentExtractionLab, suvienodintas turinio ištraukimo darbo eigos pavyzdys dokumento metaduomenims, puslapio tekstui, puslapio objektams, vaizdams, priedams, saitams, anotacijoms, žymelėms ir šriftų / simbolių metrikoms - Pavyzdys gali atidaryti esamą PDF arba sukurti sintetinį PDF su tekstu, vaizdu, priedu ir anotacijų turiniu, tada sugeneruoti suvestinės eilutes ir išsamias TXT / JSON ataskaitas
- Atnaujinti
TPdf.AboutInfo, Lazarus paketo metaduomenys ir diegiklio versijos metaduomenys, kad praneštų 1.39.8
Version 1.39.7
- Pridėtas
Lib\FPdfPreflightReport.pas, pakartotinai naudojama ataskaitų pagalbinė priemonė, kuri apgaubiaValidatePdfA,ValidatePdfUa,ValidatePdfE,ValidatePdfX,ValidatePdfRirValidatePdfVTį vienąTPdfPreflightReportobjektą - Pridėtas
Demo\Delphi\PreflightReport, darbo eigos pavyzdys, kuris atidaro arba sukuria PDF, pasirenka tikslinius standartus, peržiūri suvestinės eilutes ir problemų rekomendacijas, ir išsaugo TXT arba HTML ataskaitas - Sugeneruotos ataskaitos aiškiai aprašo įtaisytą žymenų lygio tikrinimo ribą, kad programos prireikus galėtų jas derinti su specializuotais turinio lygio preflight įrankiais
- Atnaujinti
TPdf.AboutInfo, Lazarus paketo metaduomenys, paketo projekto sąrašai ir diegiklio versijos metaduomenys, kad praneštų 1.39.7
Version 1.39.6
- Pridėtas
Demo\Delphi\SearchAndSelect, sutelktas peržiūros darbo eigos pavyzdys paieškos paryškinimui, teksto pasirinkimui, pasirinkto teksto peržiūrai, kopijavimui, išvalymui ir išskleistiniams rodymo režimams - Pavyzdys demonstruoja
HighlightSearchText, match-case / whole-word paieškos parinktis,AllowUserTextSelection,SelectedText,SelectAll,CopySelectionToClipboardirClearSelection, nepridedant naujo bibliotekos API - Atnaujinti
TPdf.AboutInfo, Lazarus paketo metaduomenys ir diegiklio versijos metaduomenys, kad praneštų 1.39.6
Version 1.39.5
- Išplėstas
Demo\Delphi\ViewerInteractionLabį SearchAndSelect stiliaus peržiūros UX pavyzdį suHighlightSearchText, match-case / whole-word parinktimis, pasirinkto teksto peržiūra ir esamais pasirinkimo / iškarpinės valdikliais - Išplėstas
Demo\Delphi\PrintDialog, kad tikrintų PDF author print preferences:PrintCopies,PrintPageRanges,PrintScaling,PrintPaperHandlingir matomąSetPdfPrintPaperHandlingDevModeduplex susiejimą - Pridėtas
Demo\Delphi\SecurityAudit, tik skaitymo rizikos paviršiaus pavyzdys, išvardijantis leidimus, priedus, dokumento JavaScript, URI / Launch saitus, žiniatinklio saitus, parašus, XFA būseną ir V8 / XFA pagalbinių funkcijų prieinamumą - Atnaujinti
TPdf.AboutInfo, Lazarus paketo metaduomenys ir diegiklio versijos metaduomenys, kad praneštų 1.39.5
Version 1.39.4
- Pridėti
Demo\CBuilder\ImageToPDFirDemo\Lazarus\ImageToPDF, užbaigiant ImageToPDF pavyzdžių matricą Delphi, C++Builder ir Lazarus aplinkose - Nauji pavyzdžiai demonstruoja kelių vaizdų pasirinkimą, pasirinkto vaizdo peržiūrą, vieną PDF puslapį kiekvienam vaizdui, A4 portreto / gulsčio puslapio dydžius, centruotą vaizdo mastelio keitimą, kiekvieno vaizdo eigą ir sugeneruoto PDF atidarymą po išsaugojimo
- Atnaujinti
TPdf.AboutInfo, Lazarus paketo metaduomenys ir diegiklio versijos metaduomenys, kad praneštų 1.39.4
Version 1.39.3
- Pridėtas
Demo\CBuilder\BatchExport, perkeliant kelių failų PDF į JPG eksporto darbo eigą į C++Builder šalia esamų Delphi ir Lazarus pavyzdžių - Pavyzdys demonstruoja
LoadCustomDocument,IPdfCancellationTokenSource, srautinęTFileStreamįvestį, kiekvieno failo ir kiekvieno puslapio eigą, atšaukimo apdorojimą, DPI / kokybės / slaptažodžio įvestis ir išvesties aplanko atidarymą baigus - Atnaujinti
TPdf.AboutInfo, Lazarus paketo metaduomenys ir diegiklio versijos metaduomenys, kad praneštų 1.39.3
Version 1.39.2
- Pridėtas
Demo\Delphi\WatermarkStamp, vykdomas Form XObject darbo eigos pavyzdys, kuris sukuria tikslinį PDF ir pakartotinai naudojamą antspaudo PDF, tada kiekviename puslapyje pritaiko centruotus vandens ženklus, viršutinio dešinio kampo antspaudus ir puslapių numerių žymas - Pavyzdys demonstruoja
CreateXObjectFromPage,InsertFormObjectFromXObject,TPdfMatrixirFPDFPageObj_SetMatrix, nepridedant naujo bibliotekos API - Atnaujintas
Docs\en-us\Examples.html, kad naudotų dabartinįTPdfMatrix.Handlešabloną perduodant matricas įFPDFPageObj_SetMatrix - Atnaujinti
TPdf.AboutInfo, Lazarus paketo metaduomenys ir diegiklio versijos metaduomenys, kad praneštų 1.39.2
Version 1.39.1
- Pridėtas
Demo\Delphi\ViewerInteractionLab, sutelktasTPdfViewpavyzdys rodymo režimams, pritaikymo režimams, puslapio spalvoms, pasukimui, naudotojo teksto pasirinkimui, iškarpinės veiksmams irDeviceToPagekoordinačių grįžtamajam ryšiui - Pridėti
Demo\CBuilder\StandardsLab/Demo\Lazarus\StandardsLab, kad Lazarus naudotojai galėtų vykdyti PDF/A, PDF/UA, PDF/E, PDF/X, PDF/R ir PDF/VT tikrinimo bei žymenų išvesties darbo eigą - Standartų vienetai įtraukti į
Lib\37.0\PDFiumPas.dprojirLib\FPC\PDFiumLaz.lpk, o DelphiSplitViewdemonstracinio projekto build pataisytas pašalinant pasikartojantįWinapi.ShellAPIimportą - Pataisyti Delphi demonstracinių projektų paketinio build blokatoriai
BatchExport,PDFViewer,MultiPageViewerirSplitViewnekeičiant jų runtime elgsenos - Pataisytas C++Builder demonstracinių projektų paketinio build suderinamumas
PDFViewerirMultiPageViewer, pakeičiantnullptrįNULLdabartiniam projekto režimui - Atnaujinti
TPdf.AboutInfo, Lazarus paketo metaduomenys ir diegiklio versijos metaduomenys, kad praneštų 1.39.1
Version 1.39.0
- Pridėtas
Demo\Delphi\StandardsLab, vykdomas standartų darbo eigos pavyzdys, kuris įkelia arba sukuria PDF, paleidžiaValidatePdfA,ValidatePdfUa,ValidatePdfE,ValidatePdfX,ValidatePdfRirValidatePdfVT, ir viename tinklelyje rodo aptiktą atitiktį, pass/fail būseną bei problemų skaičius - StandardsLab išsaugojimo mygtukai kviečia
SaveAsPdfA,SaveAsPdfUa,SaveAsPdfE,SaveAsPdfX,SaveAsPdfRirSaveAsPdfVT, todėl PDF standartų žymenų išvestis matoma nerašant pasirinktinio testavimo karkaso - Atnaujinti
TPdf.AboutInfo, Lazarus paketo metaduomenys ir diegiklio versijos metaduomenys, kad praneštų 1.39.0
Version 1.38.0
TPdfViewpaieškos ir teksto pasirinkimo perdangos dabar naudoja tikrą alpha blending vietoje loginio mask painting, todėl puslapio turinys po paryškinimais išlieka matomas- Pridėta
SetPdfPrintPaperHandlingDevMode, susiejantiTPrintPaperHandlingsu WindowsDEVMODE.dmDuplexreikšmėmis:DMDUP_SIMPLEX,DMDUP_HORIZONTALirDMDUP_VERTICAL TPdfView.SmoothScrolldabar animuoja line/page slinkties juostos komandas laikmačio valdomais segmentais; thumb tracking išlieka momentinis- Atnaujinti
TPdf.AboutInfoir diegiklio versijos metaduomenys, kad praneštų 1.38.0
Version 1.37.0
TPdfdabar turi kiekvienam egzemplioriui skirtą render lock, kuris serializuojaRenderPage,RenderTile,RenderPageProgressive, puslapio įkėlimą iš naujo ir dokumento iškėlimo kelius. Worker valdomas renderinimas per bendrinamą komponentą dabar praktiškas, o programos vis dar koordinuoja dokumento keitimą ir gyvavimo laiką- Pataisytas zero-copy bitmap wrapper, kad atmestų bottom-up
TBitmapDIB išdėstymus ir prieš kopijuodamas išvestį grįžtų prie PDFium priklausančio buferio, pašalinant stride-corruption / access-violation nesėkmes VCL render testuose - Sugriežtinta
TPdfViewpasirinkimo elgsena:AllowUserTextSelectionriboja tik naudotojo įvestį, kodo lygio pasirinkimo API vis tiek piešia, oSelectAllseka tikrą matomą spread, todėl cover page nebesirenka page 2. Delphi, Lazarus ir C++Builder testai atitinkamai išplėsti - Atnaujinti
TPdf.AboutInfoir diegiklio versijos metaduomenys, kad praneštų 1.37.0
Version 1.36.0
- Aktyvuotas galutinio naudotojo teksto pasirinkimas
TPdfView— v1.17.0 rezervuota savybėAllowUserTextSelectiondabar valdo pilną drag-select pipeline. Kairysis spustelėjimas ant teksto simbolio įjungia pasirinkimo režimą (hit-test auto); kairysis spustelėjimas tuščioje srityje toliau slenka kaip anksčiau. Form-fill widget išlaiko prioritetą, todėl spustelėjus formos lauką jis vis dar fokusuojamas, o pasirinkimas nepradedamas - Dvigubas spustelėjimas pasirenka žodį, trigubas spustelėjimas pasirenka eilutę,
Ctrl+Apasirenka dabartinį puslapį (abu puslapius spread display modes), oCtrl+Cnukopijuoja pasirinkimą į Windows clipboard kaipCF_UNICODETEXT Shift+Left/Shift+Rightišplečia pasirinkimą po vieną simbolį (spread mode pereinant į gretimą puslapį);Shift+Home/Shift+Endišplečia iki vizualios eilutės krašto, naudodami pradinio simbolio box height kaip line-cluster tolerance, todėl mišraus šrifto dydžio eilutės išlieka teisingai sugrupuotos- Užvedus virš teksto žymeklis pakeičiamas į
crIBeam; nuvedus nuo teksto atkuriamas numatytasis žymeklis. Kol vyksta teksto pasirinkimo vilkimas, vilkimas į 20-pixel dead zone ties bet kuriuo peržiūros kraštu automatiškai slenka puslapį (50 ms tick, 16 px / tick, apribota tomis pačiomis ribomis, kurias naudoja pan kelias), todėl pasirinkimą galima pratęsti už dabartinio viewport prieš neatleidžiant pelės - Cross-page selection veikia spread display modes (
dmTwoPageContinuous,dmTwoPageContinuousWithCover): vilkimas, pradėtas kairiajame puslapyje ir baigtas dešiniajame, pasirenka vientisą diapazoną per abu puslapius.SelectedTextsujungia kiekvieno puslapio dalis su CR/LF, todėl round-tripped tekstas skaitomas kaip įprastas kelių eilučių turinys - Nauja published savybė
SelectionColor(numatytaclHighlight, Windows sistemos pasirinkimo spalva) — nepriklausoma nuoHighlightColor, kuri paieškos rezultatus spalvina geltonai. Paieškos paryškinimai ir gyvas drag-selection gali būti rodomi ekrane vienu metu be spalvų konflikto - Naujas published įvykis
OnSelectionChangesuveikia kiekvieną kartą, kai realiai pasikeičia pasirinkimo materializuoti diapazonai — niekada identiškai pritaikius iš naujo, todėl host programos gali jį tiesiogiai prijungti prie status-bar teksto arba mygtuko enabled būsenos be debouncing - Nauja public API
TPdfView:HasSelection,SelectionCharCount,SelectedText,ClearSelection,SelectAll,CopySelectionToClipboard. Tai kodo lygio entry points ir visada veikia nepriklausomai nuoAllowUserTextSelection— ši vėliava riboja tik naudotojo įvestį (mouse, Ctrl+C, Ctrl+A, Shift+arrows), todėl kiosk hosts gali išjungti naudotojo valdomą pasirinkimą, bet vis tiek kurti "Select All / Copy" toolbar mygtukus, valdančius tą pačią API - Numatytasis dešiniojo spustelėjimo
Copy/复制popup menu automatiškai pridedamas, kai host nepriskyrė savoPopupMenu— standartinis "select text, right-click, copy" veikia iš karto. Antraštė parenkama tarp anglų ir kinų pagalSysLocale.PriLangID; hosts, kuriems reikia pilnos lokalizacijos (arba turtingesnio meniu), tiesiog priskiria savoPopupMenuir numatytasis nuslopinamas - Pasirinkimas automatiškai išvalomas per
SetPdf,SetPageNumber,SetActive(False)irDisplayModeperėjimus, oOnSelectionChangesuveikia tiksliai vieną kartą, kai ankstesnis pasirinkimas buvo ne tuščias. Form-fill posistemis išlaiko prioritetą — kol redaguojamas formos laukas, visi pasirinkimo klaviatūros spartieji klavišai atidedami, kad laukas gautųCtrl+C/Ctrl+A/Shift+arrowssavo pasirinkimui - Išplėsti Delphi ir Lazarus regresijos rinkiniai iki 202 atvejų kiekviename, o C++Builder rinkinys iki 159 atvejų, apimant numatytąsias reikšmes, round-trip, public API elgseną, state-change išvalymus, mouse drag (hit-text / hit-blank), click vs drag, IBeam cursor switching, double-click word, triple-click line, klaviatūros sparčiuosius klavišus, numatytojo popup attach / defer / caption ir spread cross-page selection — įskaitant clipboard CR/LF round-trip patikrą
Version 1.35.0
- Pridėtas PDF/VT (ISO 16612-2:2010) žymenų įterpimo palaikymas: TPdf.SaveAsPdfVT paaukština dabartinį dokumentą į PDF/VT-1 arba PDF/VT-2 atitinkantį failą (variable and transactional printing PDF poaibį). PDF/VT yra sukurtas ant PDF/X-4 — ISO 16612-2 §6.2.1 reikalauja, kad kiekvienas PDF/VT-1 failas taip pat atitiktų PDF/X-4 — todėl įterpiklis kartu su PDF/VT savybėmis įrašo visą PDF/X-4 žymenų rinkinį (XMP
pdfxid:GTS_PDFXVersion = "PDF/X-4", Info/GTS_PDFXVersion (PDF/X-4)ir/Trapped, katalogo/OutputIntents, nurodantį OutputIntent dictionary su įdėtu ICC profile) - PDF/VT specifinis įterpimas apima XMP
pdfvtid:GTS_PDFVTVersion(= "PDF/VT-1" arba "PDF/VT-2" pagal §6.3 Table 2) irpdfvtid:GTS_PDFVTModDate(sinchronizuojamą suxmp:ModifyDatepagal §6.3 NOTE 1), taip pat pdfaExtension:schemas aprašą, deklaruojantį ir pdfxid, ir pdfvtid vardų sritis (NPES URIshttp://www.npes.org/pdfx/ns/id/irhttp://www.npes.org/pdfvt/ns/id/). Trailer turi/IDmasyvą - Pridėta TPdf.SaveAsPdfVTToStream PDF/VT išvesčiai atmintyje ir numatytųjų parinkčių trumpinys
TPdf.SaveAsPdfVT(FileName), sukuriantis PDF/VT-1 su pridėtu sRGB IEC61966-2.1 OutputIntent (3144 bytes, tas pats profile kaip SaveAsPdfA / SaveAsPdfX) ir/Trapped /False - Pridėta TPdf.ValidatePdfVT: patikrina atvirą PDF dėl PDF/VT atitikties žymenų (XMP
pdfvtid:GTS_PDFVTVersionirGTS_PDFVTModDatebuvimo, lygybės tarppdfvtid:GTS_PDFVTModDateirxmp:ModifyDate, pagrindiniopdfxid:GTS_PDFXVersionidentifikatoriaus buvimo, katalogo/DPartRootbuvimo pagal §6.5,/OutputIntentssu/DestOutputProfile, trailer /ID, encryption status,xmp:CreateDate/ModifyDatebuvimo) ir grąžina TPdfVTValidationResult su aptiktu atitikties lygiu bei rastų problemų rinkiniu - Pridėta TPdf.PdfVTConformance savybė: grąžina šiuo metu atviro dokumento atitikties lygį (pvc1, pvc2, pvcNone arba pvcUnknown) be poreikio aiškiai kviesti ValidatePdfVT
- Nauji tipai eksportuojami naujame vienete FPdfPdfvt: TPdfVTConformance (pvcUnknown/None/1/2), TPdfVTTrappedState (ptvUnspecified/True/False/Unknown), TPdfVTValidationResult, TPdfVTValidationIssue, TPdfVTSaveOptions
- Document Part Hierarchy (
DPartRoot/DPartmedis pagal §6.5) yra programos lygio struktūra, priklausanti nuo variable-data print workflow gavėjo / page-range mapping. SaveAsPdfVT NESUKURIA DPart tree — ValidatePdfVT parodo trūkstamą/DPartRootkaippvviMissingDPartRoot, kad kvietėjai galėtų nukreipti PDF/VT failus per atskirą DPart kūrimo žingsnį. Content-level PDF/X-4 reikalavimai (font embedding, transparency, ICC managed color, OPI / JavaScript / Reference XObject draudimai ir kt.) lieka dokumento autoriaus ir PDFium rendering pipeline atsakomybė - Atnaujinta TPdf.AboutInfo eilutė, kad praneštų dabartinę produkto versiją
Version 1.34.0
- Pridėtas PDF/R-1 (ISO 23504-1:2020) žymenų įterpimo palaikymas: TPdf.SaveAsPdfR paaukština dabartinį dokumentą į PDF/R-1 atitinkantį failą (scanned documents naudojamą raster-image transport PDF poaibį). Įterpimas apima file-format level reikalavimus, kuriuos galima pridėti post-processing būdu — unikalų
%PDF-raster-1.0version-identification komentarą, įrašomą tarp trailer dictionary ir startxref raktažodžio (§5), iki §6.3 white list sumažintą catalog dictionary (išlieka tik Version / ViewerPreferences / PageLayout / PageMode / AcroForm / Metadata), iki §6.4.3 white list sumažintą Document Information Dictionary (tik Creator / Producer / CreationDate / ModDate), catalog /Metadata XMP stream su keturiais §6.4.4 Table 1 įrašais (xmp:CreatorTool / pdf:Producer / xmp:CreateDate / xmp:ModifyDate) ir trailer /ID masyvą - Pridėta TPdf.SaveAsPdfRToStream PDF/R išvesčiai atmintyje ir numatytųjų parinkčių trumpinys
TPdf.SaveAsPdfR(FileName)įprastam atvejui - Pridėta TPdf.ValidatePdfR: patikrina atvirą PDF dėl PDF/R-1 atitikties žymenų (
%PDF-raster-x.yfooter comment, header version, /Type /ObjStm nebuvimo, catalog white-list compliance, Info dictionary white-list compliance, XMP metadata stream buvimo, trailer /ID) ir grąžina TPdfRValidationResult su aptiktu atitikties lygiu bei rastų problemų rinkiniu - Pridėta TPdf.PdfRConformance savybė: grąžina šiuo metu atviro dokumento atitikties lygį (prc1, prcNone arba prcUnknown) be poreikio aiškiai kviesti ValidatePdfR
- Nauji tipai eksportuojami naujame vienete FPdfPdfr: TPdfRConformance, TPdfRValidationResult, TPdfRValidationIssue, TPdfRSaveOptions.
TPdfRSaveOptions.Defaultnustato StripInfoOptionalEntries ir StripCatalogOptionalEntries į True, todėl įterpiklis pagal numatymą sukuria §6.3 / §6.4.3 atitinkantį catalog ir Info dictionary; kvietėjai gali nustatyti jas į False, kad išsaugotų šaltinio įrašus (tada išvestis netenkins tų PDF/R punktų, bet kiti žymenys liks pridėti) - Content-level reikalavimai lieka šaltinio PDF atsakomybė: kiekvieno puslapio Contents struktūra (§6.5.1), MediaBox
[0 0 w h]forma (§6.5.3), filtrų apribojimai (§6.2.2 — tik FlateDecode, CCITTFaxDecode bitonal, DCTDecode 8-bit gray/RGB), objektų srautų nebuvimas (§6.2.4) ir strip layout pagal §6.6. Jų negalima įgyvendinti post-processing būdu — PDF/R struktūriškai yra daug griežtesnis poaibis nei kiti PDF/x standartai ir reikalauja teisingai generuoti šaltinio baitus. ValidatePdfR parodo file-format problemas, kurias šis vienetas gali aptikti; pilniems content-level patikrinimams derinkite su TWAIN Working Group PDF/R validator - Atnaujinta TPdf.AboutInfo eilutė, kad praneštų dabartinę produkto versiją
Version 1.33.0
- Pridėtas PDF/X (ISO 15930 family) žymenų įterpimo palaikymas: TPdf.SaveAsPdfX paaukština dabartinį dokumentą į PDF/X-1a:2001, PDF/X-3:2002 arba PDF/X-4 atitinkantį failą, po bazinio PDF apdorojimo pritaikant incremental update. Įterpimas apima file-format level reikalavimus, kuriuos galima pridėti post-processing būdu — XMP metadata stream su
pdfxid:GTS_PDFXVersion(irpdfxid:GTS_PDFXConformancePDF/X-1a / PDF/X-3 atveju) bei atitinkamu pdfaExtension:schemas aprašu, perrašytą Document Information Dictionary su/GTS_PDFXVersion,/GTS_PDFXConformanceir/Trappedįrašais, atnaujintą katalogą su/OutputIntents [N 0 R], nurodančiu OutputIntent dictionary su/S /GTS_PDFXir įdėtu ICC profile, ir trailer/IDmasyvą - Pridėta TPdf.SaveAsPdfXToStream PDF/X išvesčiai atmintyje ir numatytųjų parinkčių trumpinys
TPdf.SaveAsPdfX(FileName), sukuriantis PDF/X-4 su integruotu sRGB IEC61966-2.1 OutputIntent (3144 bytes, identiškas profile, naudojamam SaveAsPdfA) - Pridėta TPdf.ValidatePdfX: patikrina atvirą PDF dėl PDF/X atitikties žymenų (XMP pdfxid identifikatoriaus ir lygybės su Info-dictionary reikšme, pdfxid extension schema description, /OutputIntents masyvo su /DestOutputProfile, Title buvimo, trailer /ID, encryption status, xmp:CreateDate / xmp:ModifyDate buvimo) ir grąžina TPdfXValidationResult su aptiktu lygiu bei rastų problemų rinkiniu
- Pridėta TPdf.PdfXConformance savybė: grąžina šiuo metu atviro dokumento atitikties lygį (pxc1a, pxc3, pxc4, pxcNone arba pxcUnknown) be poreikio aiškiai kviesti ValidatePdfX. XMP version string analizuojama trims atitikties lygiams atskirti
- Nauji tipai eksportuojami naujame vienete FPdfPdfx: TPdfXConformance (pxcUnknown/None/1a/3/4), TPdfXTrappedState (ptUnspecified/True/False/Unknown), TPdfXValidationResult, TPdfXValidationIssue, TPdfXSaveOptions.
TPdfXSaveOptions.Defaulttaikosi į PDF/X-4 su sRGB OutputIntent ir/Trapped /False; kvietėjai gali perrašytiConformance, pateikti CMYKIccProfileDatablob komercinės spaudos workflows, arba pakeistiOutputCondition/OutputConditionIdentifier/RegistryName, kad nurodytų konkretų ICC characterisation registry entry (pvz. FOGRA39, GRACoL2006_Coated1v2) - Content-level reikalavimai (visi fonts embedded, nėra JavaScript, nėra visible annotations, OPI draudimas, transparency taisyklės PDF/X-1a / PDF/X-3 ir kt.) lieka dokumento autoriaus ir PDFium rendering pipeline atsakomybė. Pilnam atitikties patikrinimui derinkite ValidatePdfX su preflight tool, pvz. callas pdfaPilot arba Ghent PDF Workgroup Output Suite
- Atnaujinta TPdf.AboutInfo eilutė, kad praneštų dabartinę produkto versiją
Version 1.32.0
- Pridėtas PDF/E-1 (ISO 24517-1:2008) žymenų įterpimo palaikymas: TPdf.SaveAsPdfE paaukština dabartinį dokumentą į PDF/E-1 atitinkantį failą, po bazinio PDF apdorojimo pritaikant incremental update. Įterpimas apima file-format level reikalavimus, kuriuos galima pridėti post-processing būdu — XMP metadata stream su
pdfe:ISO_PDFEVersion = "PDF/E-1"ir atitinkamu pdfaExtension:schemas aprašu, perrašytą Document Information Dictionary su privalomu/ISO_PDFEVersion (PDF/E-1)įrašu, kurio reikalauja §5, Info-XMP bridging blocks, paveldėtais iš ISO 19005-1 §6.7 per §13.1 (dc:title / dc:creator / dc:description / pdf:Producer / pdf:Keywords / xmp:CreateDate / xmp:ModifyDate / xmp:MetadataDate / xmp:CreatorTool), ir trailer/IDmasyvą, kurio reikalauja §6.2 - Pridėta TPdf.SaveAsPdfEToStream PDF/E išvesčiai atmintyje ir numatytųjų parinkčių trumpinys
TPdf.SaveAsPdfE(FileName)įprastam atvejui - Pridėta TPdf.ValidatePdfE: patikrina atvirą PDF dėl PDF/E-1 atitikties žymenų (XMP pdfe:ISO_PDFEVersion buvimo ir lygybės su Info-dictionary reikšme, pdfe extension schema description, Info-dictionary /ISO_PDFEVersion įrašo, trailer /ID, xmp:CreateDate / xmp:ModifyDate buvimo) ir grąžina struktūrinį rezultatą su aptiktu atitikties lygiu bei rastų problemų rinkiniu
- Pridėta TPdf.PdfEConformance savybė: grąžina šiuo metu atviro dokumento atitikties lygį (pec1, pecNone arba pecUnknown) be poreikio aiškiai kviesti ValidatePdfE
- Nauji tipai eksportuojami naujame vienete FPdfPdfe: TPdfEConformance, TPdfEValidationResult, TPdfEValidationIssue, TPdfESaveOptions
- Info-dictionary perrašymas yra pirmasis PDFiumPas PDF/x post-processing kelyje — jis perrašo esamą Info objektą tuo pačiu object number (todėl xref subsection / trailer /Info reference lieka galiojantys) ir sukuria naują Info dictionary, kai šaltinio trailer neturi /Info įrašo. Pats PDFium kiekvienoje SaveAs išvestyje išleidžia Info dictionary, todėl įprastu atveju naudojamas perrašymo kelias
- Content-level reikalavimai (font embedding, ToUnicode CMaps, prohibited XObjects / ExtGState keys / XFA forms ir kt.) lieka dokumento autoriaus atsakomybė — SaveAsPdfE prideda file-format žymenis, bet nekeičia puslapio turinio ir nešalina draudžiamų funkcijų
- Atnaujinta TPdf.AboutInfo eilutė, kad praneštų dabartinę produkto versiją
Version 1.31.0
- Pridėtas PDF/UA-1 (ISO 14289-1:2014) žymenų įterpimo palaikymas: TPdf.SaveAsPdfUa paaukština dabartinį dokumentą į PDF/UA-1 atitinkantį failą, po bazinio PDF apdorojimo pritaikant incremental update. Įterpimas apima file-format level reikalavimus, kuriuos galima įgyvendinti post-processing būdu — XMP metadata stream su
pdfuaid:part = 1ir atitinkamu pdfaExtension:schemas aprašu, privalomądc:title, katalogo/MarkInfo << /Marked true /Suspects false >>ir/ViewerPreferences << /DisplayDocTitle true >>(tik kai šaltinis jų neturi), katalogo/Lang(kai kvietėjas pateikia BCP 47 tag) ir trailer/IDmasyvą - Pridėta TPdf.SaveAsPdfUaToStream PDF/UA išvesčiai atmintyje ir numatytųjų parinkčių trumpinys
TPdf.SaveAsPdfUa(FileName)įprastam atvejui - Pridėta TPdf.ValidatePdfUa: patikrina atvirą PDF dėl PDF/UA-1 atitikties žymenų (StructTreeRoot buvimo, /Lang, /MarkInfo /Marked true su /Suspects = false, /ViewerPreferences /DisplayDocTitle true, XMP pdfuaid:part identifikatoriaus, dc:title buvimo, trailer /ID, encryption status) ir grąžina struktūrinį rezultatą su aptiktu atitikties lygiu bei rastų problemų rinkiniu
- Pridėta TPdf.PdfUaConformance savybė: grąžina šiuo metu atviro dokumento atitikties lygį (puc1, pucNone arba pucUnknown) be poreikio aiškiai kviesti ValidatePdfUa
- Nauji tipai eksportuojami naujame vienete FPdfPdfua: TPdfUaConformance, TPdfUaValidationResult, TPdfUaValidationIssue, TPdfUaSaveOptions
- Title / Author / Subject / Keywords / Creator / Producer / CreationDate / ModDate / DocumentId / InstanceId / Language laukai, palikti tušti TPdfUaSaveOptions, automatiškai užpildomi iš FPDF_GetMetaText / FPDF_GetFileIdentifier / FPDFCatalog_GetLanguage, todėl esami kvietėjai gali išsaugoti viena eilute
- Content-level reikalavimai (StructTreeRoot tagging completeness, Figure Alt text, ToUnicode CMaps, font embedding ir kt.) lieka dokumento autoriaus atsakomybė — SaveAsPdfUa prideda file-format žymenis, bet nekeičia puslapio turinio ir nesukuria tags. ValidatePdfUa parodo StructTreeRoot nebuvimą kaip
pvuaiMissingStructTreeRoot, kad kvietėjai galėtų nukreipti untagged documents per atskirą tagging pipeline - Atnaujinta TPdf.AboutInfo eilutė, kad praneštų dabartinę produkto versiją
Version 1.30.0
- PDF/A-1b išvestis dabar tenkina ISO 19005-1 (su Cor.1:2007) reikalavimus Document Information Dictionary / XMP lygiavertiškumui: kiekvienas Info dictionary įrašas, kurį PDFium įrašo į bazinį PDF, atkartojamas XMP pakete, įskaitant Title (dc:title), Author (dc:creator), Subject (dc:description pagal Cor.1), Keywords (pdf:Keywords), Creator (xmp:CreatorTool), Producer (pdf:Producer), CreationDate (xmp:CreateDate) ir ModDate (xmp:ModifyDate). Taip pat išleidžiamas xmp:MetadataDate
- PDF/A dokumento trailer dabar visada turi /ID masyvą (ISO 19005-1 6.1.3 griežtas reikalavimas). Kai TPdf.SaveAsPdfA apdoroja dokumentą, kurio šaltinis jau turi file identifier, esami 16-byte permanent ir changing IDs panaudojami iš naujo; kitu atveju deterministinis 16-byte fallback ID išvedamas iš šaltinio baitų
- Įterptas XMP dabar įdeda pdfaid extension schema description, kurio reikalauja ISO 19005-1 6.7.8 (pakeista Cor.1) — pdfaid traktuojamas kaip extension schema pagal XMP Specification 2004, todėl visi atitinkantys failai turi deklaruoti jo savybių pavadinimus, reikšmių tipus ir kategorijas pdfaExtension:schemas konteineryje
- TPdfASaveOptions gavo penkis naujus pasirenkamus laukus: Producer, CreationDate, ModDate (PDF datos eilutės “D:YYYYMMDDHHmmSSOHH'mm'” forma), DocumentId ir InstanceId (16-byte byte strings trailer /ID masyvui). TPdf.SaveAsPdfA / SaveAsPdfAToStream automatiškai užpildo trūkstamus laukus iš FPDF_GetMetaText ir FPDF_GetFileIdentifier, todėl esami kvietėjai toliau veikia be pakeitimų
- TPdf.ValidatePdfA / TPdf.PdfAConformance dabar praneša tris papildomas problemas: pvaiMissingTrailerId (nėra /ID trailer), pvaiMissingXmpDates (trūksta xmp:CreateDate arba xmp:ModifyDate) ir pvaiMissingExtensionSchema (nėra pdfaid extension schema description)
- Ne ASCII simboliai Title, Author, Subject, Keywords, Creator ir Producer dabar koduojami kaip UTF-8 XMP pakete (XMP Specification reikalauja UTF-8), išsaugant daugiakalbių metaduomenų round-trip per SaveAsPdfA
- Atnaujinta TPdf.AboutInfo eilutė, kad praneštų dabartinę produkto versiją
Version 1.29.0
- Atnaujinti pridėti PDFium DLLs (Win32 ir Win64, tiek standard, tiek V8 builds) iki 2026-05-22 upstream snapshot, perimant upstream pataisas FPDFText_SetText / FPDFText_SetCharcodes crash paths ir įvairų vidinį PDFium projekto hardening
- Eksponuota nauja PDFium FPDF_SUBSET_NEW_FONTS išsaugojimo vėliava FPdfPageOps.pas, leidžianti FPDF_SaveAsCopy kvietėjams prašyti automatinio naujai pridėtų teksto objektų embedded font files subsetting. Esamos FPDF_INCREMENTAL, FPDF_NO_INCREMENTAL ir FPDF_REMOVE_SECURITY konstantos dabar apibrėžtos naudojant upstream bit-shift form (senesnė skaitinė reikšmė 3 išsaugota kaip FPDF_REMOVE_SECURITY_DEPRECATED dvejetainiam suderinamumui)
- Pridėtas FPDF_FONT_BACKEND_TYPE enum (FREETYPE / FONTATIONS) ir atitinkamas m_FontLibraryType laukas FPDF_LIBRARY_CONFIG faile FPdfView.pas, todėl programos, inicijuojančios PDFium su Skia renderer, dabar gali paleidimo metu pasirinkti font backend
- Atnaujintas TFPDFPage_InsertObject parašas, kad atitiktų upstream: C funkcija dabar grąžina FPDF_BOOL (TRUE sėkmės atveju, FALSE jei page_object yra NULL arba ownership transfer nepavyksta) vietoje void. Esami PDFiumPas kvietėjai toliau kompiliuojami be pakeitimų, nes Delphi / FPC leidžia ignoruoti funkcijos grąžinamąją reikšmę
- Pataisyta TPdf.AboutInfo eilutė, kad praneštų dabartinę produkto versiją (buvo pasenusi ties v1.27.0 nuo v1.28.0 documentation-only release)
Version 1.28.0
- Ženkliai išplėsta puslapių dokumentacija visoje API reference: kiekvienas property, method, event ir global function įrašas dabar turi 3-paragraph Description, Remarks sąrašą, kelių eilučių Delphi Example ir turtingesnį See Also bloką — apimant daugiau nei 200 anksčiau plonų puslapių, įskaitant visus TPdf skaitiklius, metaduomenų getterius, font ir simbolių prieigos priemones, page-level properties, indexed records, document-level methods ir visą TPdfView state / display / event paviršių
- Patikslintas pagalbos išdėstymas, kad atitiktų losLab visual baseline, naudojamą HotXLS reference: suderinti h1/h2 dydžiai, API navigation grid stiliai sujungti į bendrą StyleSheet, o puslapio lygio inline CSS perrašymai pašalinti iš Navigation.html
- Dokumentacija dabar pateikiama su pagalbiniu skriptu (Docs\Build-Expand-Entries.ps1), kuris atkuria entry-page enrichment iš vienos duomenų lentelės pakartojamai priežiūrai
Version 1.27.0
- Pridėtas PDF/A-1b kūrimo palaikymas: TPdf.SaveAsPdfA išsaugo bet kurį atvirą dokumentą kaip PDF/A-1b atitinkantį failą, po bazinio PDF apdorojimo pritaikant incremental update, kuris įterpia XMP metadata stream, sRGB ICC OutputIntent ir atnaujintą dokumento katalogą — be papildomų DLL APIs poreikio. Veikia bet kurioje PDFiumPas palaikomoje platformoje
- Pridėta TPdf.SaveAsPdfAToStream PDF/A išvesčiai atmintyje
- Pridėta TPdf.ValidatePdfA: patikrina atvirą PDF dėl PDF/A atitikties (XMP pdfaid markers, OutputIntent su įdėtu ICC profile, encryption) ir grąžina struktūrinį rezultatą su aptiktu atitikties lygiu bei konkrečių rastų problemų rinkiniu
- Pridėta TPdf.PdfAConformance savybė: grąžina šiuo metu atviro dokumento atitikties lygį (pac1b, pac1a, pac2b, pac3b, pacNone arba pacUnknown) be poreikio aiškiai kviesti ValidatePdfA
- Eksportuojami nauji tipai: TPdfAConformance, TPdfAValidationResult, TPdfAValidationIssue, TPdfASaveOptions (naujame vienete FPdfPdfa.pas)
- SaveAsPdfA palaiko pasirinktinį ICC profile per TPdfASaveOptions.IccProfileData; kai palikta tuščia, automatiškai naudojamas integruotas sRGB IEC61966-2.1 (HP/Microsoft, 3144 bytes) profile
- Monolitinė HTML reference pakeista pertvarkyta web help sistema: 302 atskiri API entry pages (po vieną kiekvienai property, method, event ir global function), apimantys TPdf ir TPdfView, kiekvienas su pilnu aprašu, parametrų lentele, Delphi code example ir See Also nuorodomis
- Pridėta Navigation.html: išsamus vieno puslapio API navigation index, suskirstytas į šešias skiltis (TPdf properties/methods/events, TPdfView properties/methods/events, global functions) su 5-column flex grid greitam peržiūrėjimui
- TPdf.html ir TPdfView.html perkurti kaip glausti komponentų apžvalgos puslapiai, išlaikantys type-reference skiltis (Types, Constants, Global Variables) ir nukreipiantys į atskirus visų narių entry pages
- Pridėta viso teksto paieška, veikianti su Search.js ir incremental client-side matching per visus 312 indexed pages
- Atnaujintos visos svetainės navigation bars, kad rodytų į Navigation.html
Version 1.26.0
- Pridėta Demo/Lazarus/BatchExport, v1.14.0 Delphi BatchExport demo LCL portas. Tas pats funkcijų rinkinys: kelių failų PDF -> JPG eksportas su kiekvieno failo bendra eiga, kiekvieno puslapio dabartine eiga, DPI / quality / password įvestimis ir bendradarbiaujamai atšaukiama partija, paremta IPdfCancellationToken. Išvesties aplankas atidaromas platformos failų tvarkyklėje, kai išgavimas sėkmingai baigiamas
Version 1.25.0
- Pridėtas Form XObject puslapių pakartotinis naudojimas TPdf, įgalinantis watermark, template overlay ir “stamp one page onto many” workflows: CreateXObjectFromPage sukuria pakartotinai naudojamą handle iš bet kurio kito dokumento puslapio; InsertFormObjectFromXObject įterpia ONE įvynioto puslapio kopiją į dabartinį puslapį. Grąžina įterptą FPDF_PAGEOBJECT, kad kvietėjas galėtų jį position / scale / rotate su FPDFPageObj_SetMatrix ir v1.9.0 TPdfMatrix helpers
- Nauja TPdfXObject Pascal klasė apgaubia PDFium FPDF_XOBJECT handle ir automatiškai jį uždaro savo destruktoriuje, pašalindama rankinį FPDF_CloseXObject veiksmą
- Išplėsti Delphi ir Lazarus regresijos rinkiniai iki 147 atvejų kiekviename, o C++Builder rinkinys iki 123 atvejų, apimant handle creation ir page-object insertion contracts
Version 1.24.0
- Pridėta TPdf.RenderPageProgressive — atšaukiama RenderPage versija, kuri valdo PDFium progressive rendering loop ir tarp iteracijų tikrina v1.7.0 IPdfCancellationToken, todėl ilgi high-DPI renders gali nutrūkti puslapio viduryje, o ne blokuoti kvietėją iki pabaigos
- Grąžina TPdfProgressiveStatus reikšmę: prsDone, prsCancelled arba prsFailed. Perduokite AToken = nil, kad renderinimas baigtųsi niekada nestabdant (nėra prsCancelled galimybės)
- Naudoja tą patį zero-copy fast path, įvestą v1.21.0 — PDFium renderina tiesiai į paskirties TBitmap DIB. Tas pats senasis fallback taikomas, kai DIB negalima apgaubti
- Išplėsti Delphi ir Lazarus regresijos rinkiniai iki 145 atvejų kiekviename, o C++Builder rinkinys iki 121 atvejo, apimant nil-token (completes), pre-cancelled token (prsCancelled) ir pixel-equivalence su sync RenderPage naudojant gyvą token
Version 1.23.0
- Pridėti šeši nauji TPdfView metodai, kurie programoms eksponuoja PDFium form-widget teksto pasirinkimą ir Undo/Redo: GetSelectedFormText grąžina šiuo metu pasirinktą tekstą fokusuotame form widget; SelectAllFormText pasirenka kiekvieną simbolį; FormUndo / FormRedo / FormCanUndo / FormCanRedo valdo fokusuoto widget edit history. Pagrindinės PDFium APIs jau buvo susietos, bet neturėjo high-level entry point. Visi šeši saugiai trumpai grįžta, kai view neaktyvus arba dokumentas neturi fokusuoto AcroForm widget
- Išplėsti Delphi ir Lazarus regresijos rinkiniai iki 142 atvejų kiekviename, o C++Builder rinkinys iki 119 atvejų, apimant kiekvieno naujo metodo no-form-no-focus contract
Version 1.22.0
- Pridėti page composition wrappers TPdf: ImportPagesByIndex priima zero-based index masyvą konkretiems puslapiams kopijuoti iš šaltinio dokumento; ImportNPagesToOne grąžina visiškai naują TPdf, kurio puslapiai yra šio dokumento N-up composites; MovePages perrikiuoja puslapius vietoje. Pagrindinės PDFium APIs jau buvo susietos, bet neturėjo Pascal patogaus entry point
- ImportPagesByIndex priima tuščią masyvą, kad importuotų kiekvieną šaltinio puslapį (atitinka nil perdavimą C ABI lygiu)
- Išplėsti Delphi ir Lazarus regresijos rinkiniai iki 136 atvejų kiekviename, o C++Builder rinkinys iki 115 atvejų, apimant subset import, whole-document import, page reorder ir N-up composite
Version 1.21.0
- Pagerintas renderinimo našumas perjungiant TPdf.RenderPage / TPdf.RenderTile (ir atitinkamus TPdfView helpers) į zero-copy output path. PDFium dabar rašo tiesiai į paskirties TBitmap DIB buferį, o ne į vidinį buferį, kuris tada buvo kopijuojamas eilutė po eilutės, sutaupant vieną width x height x 4 bytes atminties kopiją kiekvienam render. Pagerėjimas labiausiai matomas esant high DPI (thumbnail panels, print-quality export, batch export)
- Senasis per-scanline kelias paliktas kaip saugus fallback mažai tikėtinam atvejui, kai paskirties DIB negalima apgaubti (extreme dimensions, unusual stride, OOM). Elgsena tarp dviejų kelių yra byte-identical, tik fallback yra lėtesnis
- Išplėsti Delphi ir Lazarus regresijos rinkiniai iki 132 atvejų kiekviename, o C++Builder rinkinys iki 112 atvejų, apimant caller-bitmap pf32bit upgrade, dimensions round-trip ir large-bitmap stride sanity test
Version 1.20.0
- Pridėtas paieškos rezultatų paryškinimas TPdfView: HighlightSearchText(Text, MatchCase, MatchWholeWord) nuskaito dabartinį view puslapį ir grąžina rastų atitikmenų skaičių, kiekvieno perpiešimo metu nupiešdamas HighlightColor mask ant kiekvieno atitikmens. ClearHighlight pašalina paryškinimus; perjungus view į kitą puslapį jie automatiškai išvalomi, nes atitikmenys priklauso nuo puslapio
- HighlightColor pagal numatymą yra clYellow ir yra published, todėl programos gali pritaikyti paryškinimą prie savo UI palette
- Išplėsti Delphi ir Lazarus regresijos rinkiniai iki 129 atvejų kiekviename, o C++Builder rinkinys iki 109 atvejų, apimant default color, color round-trip, “real fixture word matches” pagal sample.pdf eilutę ir “missing word returns zero matches” contract
Version 1.19.0
- Pridėta FitMode savybė TPdfView su keturiomis reikšmėmis: pfmNone (manual zoom), pfmActualSize (100%), pfmFitPage (visas puslapis telpa viewport) ir pfmFitWidth (puslapio plotis atitinka viewport plotį). Aktyvus fit mode automatiškai pritaikomas iš naujo per Resize ir pasikeitus dabartiniam puslapiui, todėl ilgi dokumentai su mišriais puslapių dydžiais lieka tiksliai įrėminti
- Tiesioginis Zoom nustatymas atšaukia aktyvų fit mode (FitMode grįžta į pfmNone), atitikdamas standartinę PDF viewer konvenciją, kai įvedus mastelio reikšmę išeinama iš Fit Page / Fit Width
- Numatytoji reikšmė yra pfmNone, todėl esamos programos išlaiko savo explicit-zoom elgseną
- Išplėsti Delphi ir Lazarus regresijos rinkiniai iki 124 atvejų kiekviename, o C++Builder rinkinys iki 106 atvejų, apimant default value, mode round-trip, fit-page, sukuriantį tikrą zoom įkeltame dokumente, ir manual-zoom-cancels-fit-mode
Version 1.18.0
- Pridėta PageColor savybė TPdfView, atskirianti renderinto PDF puslapio foną nuo aplinkinio valdiklio Color. Numatyta reikšmė yra clWhite, todėl PDF puslapiai dabar renderinami kaip popieriaus balti nepriklausomai nuo host programos temos. Dark-mode viewers dabar gali išlaikyti slinkties sritį tamsią, o tikrą PDF puslapį palikti baltą (arba bet kokios programos pasirinktos spalvos)
- Elgsenos pakeitimas: programos, kurios anksčiau nustatydavo TPdfView.Color norėdamos perspalvinti PDF puslapį, dabar turėtų nustatyti PageColor. Numatytoji patirtis pagerėja įprastam atvejui (balti puslapiai ant teminių valdiklių fonų) be jokio kodo pakeitimo
- Išplėsti Delphi ir Lazarus regresijos rinkiniai iki 120 atvejų kiekviename, o C++Builder rinkinys iki 103 atvejų, apimant default value ir color round-trip
Version 1.17.0
- Pridėti user-input lock-down jungikliai TPdfView, kad programos, įterpiančios viewer kioskuose, preview panes arba read-only contexts, galėtų išjungti navigacijos gestus be subclassing: AllowUserPageChange valdo naujus PgUp / PgDn / Ctrl+Home / Ctrl+End klaviatūros sparčiuosius klavišus; ChangePageOnMouseScrolling valdo naujus wheel-up / wheel-down puslapių šuolius; AllowUserTextSelection rezervuota būsimam mouse-drag text-selection path. Visų trijų numatytoji reikšmė yra True, todėl esamos programos atsinaujina be elgsenos pakeitimo
- Mouse wheel puslapio navigacija praleidžia Ctrl+wheel, todėl programos gali palikti Ctrl+wheel rezervuotą zoom
- Išplėsti Delphi ir Lazarus regresijos rinkiniai iki 118 atvejų kiekviename, o C++Builder rinkinys iki 101 atvejo, apimant default values ir toggle round-trip
Version 1.16.2
- Išplėsta TPdfView regresijos aprėptis annotation link clicks atvejams, kai viewer puslapis skiriasi nuo susieto TPdf puslapio, naudojant tikrą headless mouse click path per Delphi, Lazarus ir C++Builder
- Delphi ir Lazarus rinkiniai dabar vykdo po 114 atvejų, o C++Builder dabar vykdo 99 atvejus
Version 1.16.1
- Pataisytas TPdfView link-click handling, kad automatiniai annotation ir web-link veiksmai naudotų šiuo metu viewer rodomą puslapį, net kai susietas TPdf komponentas stovi kitame puslapyje
- Sustiprintas TPdfThumbnailView prieš kabančias Pdf nuorodas, kai susietas TPdf komponentas sunaikinamas
- Pridėta thumbnail-reference lifetime regresijos aprėptis; Delphi ir Lazarus rinkiniai dabar vykdo po 113 atvejų, o C++Builder dabar vykdo 98 atvejus
- README, testų dokumentacija, HTML Help search/index turinys ir sugeneruotos C++ package outputs sinchronizuoti su v1.7.0 iki v1.16.0 integracijos atnaujinimais
Version 1.16.0
- Pridėtas naujas Delphi PrintDialog demo (Demo/Delphi/PrintDialog), sutelktas į N-up printing (1 / 2 / 4 / 9 pages per sheet) su odd / even page filtering, grayscale rendering ir pasirenkamais 1-pixel cell borders. Tai sąmoningai mažas esamo PrintPDF demo palydovas, kuris jau apima preview, recent files, zoom ir scaling
Version 1.15.0
- Pridėtas naujas TPdfThumbnailView komponentas (FPdfThumbnail unit), kuris slenkamame šoniniame skydelyje renderina po vieną puslapio miniatiūrą eilutėje su hover ir selection highlighting bei click-to-go navigation. Sukurtas būti šalia TPdfView, kad galutiniai naudotojai galėtų naršyti ilgą dokumentą pagal puslapius
- Komponentas užregistruotas losLab palette tab kartu su TPdf ir TPdfView; pagrindinės savybės: Pdf, CurrentPageIndex, ThumbnailWidth, ThumbnailHeight, TextColor, HoverColor, SelectionColor, BorderColor ir OnPageClick įvykis
- Išplėsti Delphi ir Lazarus regresijos rinkiniai iki 112 atvejų kiekviename, o C++Builder rinkinys iki 97 atvejų, apimant defaults, thumbnail-size round-trip, extreme-value clamping, color round-trip ir event handler assignment
Version 1.14.0
- Pridėtas naujas Delphi BatchExport demo (Demo/Delphi/BatchExport), rodantis, kaip vienu praėjimu konvertuoti daug PDF failų į JPG naudojant TPdf.LoadCustomDocument streaming load, IPdfCancellationToken bendradarbiaujamam atšaukimui ir kiekvieno failo bendros + kiekvieno puslapio eigos juostas. Demo naudoja po vieną TPdf egzempliorių kiekvienam failui (pats PDFium nėra thread safe) ir atidaro išvesties aplanką Explorer, kai išgavimas sėkmingai baigiamas
Version 1.13.0
- Pridėta async-rendering UI overlay į TPdfView per tris naujas savybes: AsyncRendering, LoadingText ir LoadingColor. Kai AsyncRendering yra True, single-page paint path piešia mažą “Loading...” indikatorių virš renderinto puslapio, todėl programos, naudojančios savo worker ilgiems renders, turi nuoseklų vizualinį affordance
- Numatytosios reikšmės išsaugo esamą elgseną: AsyncRendering yra False, todėl programos, kurios neįsijungia šios funkcijos, nemato vizualinio pakeitimo
- Dokumentacija paaiškina, kad pats PDFium nėra thread safe — norint iš tikrųjų perkelti render į worker, kvietėjas turi laikyti po vieną TPdf kiekvienam worker; būsimas batch-export demo rodo šį modelį
- Išplėsti Delphi ir Lazarus regresijos rinkiniai iki 106 atvejų kiekviename, o C++Builder rinkinys iki 93 atvejų, apimant default values ir trijų savybių round-trip
Version 1.12.0
- Pridėtas click-driven link handling į TPdfView. Nauja LinkOptions savybė valdo automatinę elgseną keturiems PDF link action types: goto (page jump), URI (ShellExecute), launch (ShellExecute) ir embedded GotoR (reserved). Numatytosios reikšmės įjungia loAutoGoto ir loAutoOpenURI; loAutoLaunch ir loAutoEmbeddedGoto lieka išjungtos, kad atsitiktinis spustelėjimas negalėtų paleisti savavališkos programos
- Pridėti OnAnnotationLinkClick ir OnWebLinkClick įvykiai, kurie suveikia prieš bet kokį automatinį veiksmą ir leidžia programoms patikrinti nuorodą, pažymėti ją Handled arba nukreipti ją kitur (pavyzdžiui, į security prompt)
- Link click detection vykdomas tik kai gestas yra click, o ne drag, naudojant naują MouseDown anchor, todėl panning gestures toliau keliauja per esamą scroll path nepakitę
- Išplėsti Delphi ir Lazarus regresijos rinkiniai iki 102 atvejų kiekviename, o C++Builder rinkinys iki 91 atvejo, apimant default LinkOptions, set round-trip ir event-handler assignment
Version 1.11.0
- Pridėtas vizualinis TPdfView polish: PageShadowSize, PageShadowColor ir PageBorderColor savybės piešia pasirenkamą drop shadow po puslapio stačiakampiu ir vieno pikselio border aplink jį. Numatytosios reikšmės išsaugo ankstesnę plokščią išvaizdą (PageShadowSize = 0; border piešiamas numatytuoju clBlack, bet susilieja su numatytu baltu fonu, kol kvietėjai pakeičia spalvas)
- Pridėta SmoothScroll savybė kaip opt-in vėliava būsimai incremental scroll animation; savybė šiandien round-trips ir yra prijungta, kad programos galėtų išsaugoti nuostatą, o rendering pusė vis dar naudoja esamą immediate scroll behavior
- Išplėsti Delphi ir Lazarus regresijos rinkiniai iki 98 atvejų kiekviename, o C++Builder rinkinys iki 89 atvejų, apimant default values, property round-trip ir negative-shadow-size clamp
Version 1.10.0
- Pridėtas tiesioginis vaizdų įterpimas per naujus TPdf.AddImage ir TPdfView.AddImage overloads, kurie priima failo kelią arba TBitmap, papildomai prie esamo TPicture pagrįsto AddPicture. AddImage(FileName) atpažįsta bet kokį formatą, užregistruotą VCL arba LCL graphics units (BMP, PNG per PngImage unit, JPG ir kt.) ir eina per tą pačią pipeline kaip AddPicture, todėl elgsena identiška
- AddImage(TBitmap) praleidžia TPicture tarpininką, todėl supaprastina kvietėjus, kurie jau turi TBitmap iš rendering arba batch generation darbo
- Išplėsti Delphi ir Lazarus regresijos rinkiniai iki 92 atvejų kiekviename, o C++Builder rinkinys iki 84 atvejų, apimant bitmap insertion, page-object bounds, nil bitmap rejection ir BMP file loading
Version 1.9.0
- Pridėtas high-level transformation matrix palaikymas per naują TPdfMatrix klasę FPdfMatrix vienete. TPdfMatrix apgaubia PDFium FS_MATRIX su OO API metodams Translate, Scale, Rotate, HorizontalFlip, VerticalFlip, CentralFlip, Skew ir Multiply, tinkama transformacijoms komponuoti prieš perduodant jas FPDFPageObj_SetMatrix ir panašioms PDFium APIs
- TPdfMatrix.Multiply teisingai užfiksuoja šešis matrix elements prieš skaičiuodama naujas eilučių reikšmes, pataisydama latent issue, kai alternatyvios Pascal implementacijos per tą patį kvietimą perrašo ankstesnius elementus ir sukuria neteisingus rezultatus bet kuriai kompozicijai už grynos translacijos ribų
- Išplėsti Delphi ir Lazarus regresijos rinkiniai iki 88 atvejų kiekviename, o C++Builder rinkinys iki 81 atvejo, apimant identity, reset, translate / scale / flip, post-multiplicative composition order ir Multiply regression case
Version 1.8.0
- Pridėtas on-demand stream loading per naują TPdf.LoadCustomDocument(AStream, AOwnsStream) metodą ir TPdfStreamAdapter helper class, paremtą PDFium FPDF_LoadCustomDocument. PDFium dabar skaito blokus iš pateikto TStream tik kai reikia, todėl labai dideli arba nuotoliniai PDFs nebereikalauja išankstinės kopijos atmintyje
- Pridėta pasirenkama stream ownership: perduodant AOwnsStream = True, TStream gyvavimo laikas perduodamas TPdf, kuris jį atlaisvina vykdant UnloadDocument
- Išplėsti Delphi ir Lazarus regresijos rinkiniai iki 79 atvejų kiekviename, o C++Builder rinkinys iki 75 atvejų, apimant streaming load per TFileStream, owned-stream cleanup ir externally-owned-stream survives-unload contract
Version 1.7.0
- Pridėti cooperative async cancellation primitives naujame FPdfAsync vienete, eksponuojant IPdfCancellationToken / IPdfCancellationTokenSource ir pakartotinai naudojamą PdfNoCancellationToken singleton, kad ilgai trunkantys rendering ir export workflows galėtų palaikyti švarią cancel-from-UI semantiką
- Pridėtas lengvas TPdfFuture<T> helper, kuris paleidžia worker foninėje gijoje ir paskelbia TPdfFutureResult<T> envelope atgal į pagrindinę giją, atskirdamas success, cancellation ir failure atvejus
- Išplėsti Delphi ir Lazarus regresijos rinkiniai iki 76 atvejų kiekviename, o C++Builder rinkinys iki 73 atvejų, su bendra cancellation state, idempotent cancel, callback fan-out ir post-cancel registration aprėptimi
Version 1.6.10
- Pridėta high-level TPdf.PrintPageRanges prieiga prie PDF viewer preference print page range, grąžinant one-based page ranges programos kodui
- Pridėta TPdf.SetFormFieldFlags / SetFormFieldFlagsAt ir atitinkami TPdfView helpers, kad programos galėtų atnaujinti AcroForm field flags per public API, įskaitant password ir multi-select flag coverage
- Sustiprinta PDFium binding ABI aprėptis Windows dydžio FPDF_DWORD, FPDF_FILEACCESS callbacks ir V8 embedder slot fields
Version 1.6.9
- Pridėti low-level Skia rendering bindings naujai eksportuojamoms FPDF_RenderPageSkia ir FPDF_FFLDrawSkia APIs pridėtuose standard ir V8 PDFium DLLs
- Išplėsti public binding coverage checks, todėl standard ir V8 DLL įkėlimas dabar tikrina Skia render entry points kartu su esamais V8/XFA capability probes
Version 1.6.8
- Pridėta TPdf.SetTextPositions ir TPdfSingleArray, kad būtų galima nustatyti kiekvieno simbolio pozicijas esamuose teksto objektuose per naujai eksportuotą FPDFText_SetPositions API
- FPDFText_SetPositions paaukštintas į privalomą binding dabartiniams pridėtiems PDFium DLLs, kartu patvirtinant, kad Skia render entry points lieka neprieinami, nes DLLs vis dar jų neeksportuoja
- Išplėsti Delphi, C++Builder ir Lazarus regresijos rinkiniai iki 65 atvejų kiekviename su text-position coverage
Version 1.6.7
- Pridėta high-level TPdf prieiga prie dokumento JavaScript name-tree actions, grąžinant veiksmų pavadinimus ir scripts per JavaScriptAction ir JavaScriptActions
- Pridėta TPdf.FileIdentifier, skirta skaityti permanent ir changing trailer IDs kaip dvejetainius TBytes be PDFium terminator byte
- Pridėta TPdf.PageBox, GetPageBox ir SetPageBox dabartinio puslapio MediaBox, CropBox, BleedBox, TrimBox ir ArtBox
- Patvirtinta, kad dabartiniai pridėti PDFium DLLs vykdymo metu palieka neprieinamus tik Skia render entry points, nes tų exports nėra
- Išplėsti Delphi, C++Builder ir Lazarus regresijos rinkiniai iki 64 atvejų kiekviename su document JavaScript, trailer ID ir page-box coverage
Version 1.6.6
- Pridėtas runtime palaikymas pridėtam V8-enabled PDFium DLL. Nustačius EnableV8Engine prieš įkėlimą, dabar parenkamas pdfium.v8.dll iš DLLs\Win32 arba DLLs\Win64 medžio ir eksponuojami V8/XFA-only bindings, kai įkeltas DLL juos pateikia
- Pridėta V8FeaturesAvailable, XfaBStrHelpersAvailable, GetRecommendedV8Flags ir low-level optional bindings FPDF_BStr_*, FPDF_GetRecommendedV8Flags ir FPDF_GetArrayBufferAllocatorSharedInstance
- FPDFText_SetPositions padarytas pasirenkamas, kad PDFiumPas toliau įsikeltų su PDFium DLLs, kurie neeksportuoja to eksperimentinio text-position setter
- Išplėsti Delphi, C++Builder ir Lazarus regresijos rinkiniai iki 61 atvejo kiekviename su standard-DLL ir V8-DLL capability coverage
Version 1.6.5
- Pridėta tagged PDF structure-tree inspection per TPdf.StructureElements ir TPdfView.StructureElements, įskaitant element type, title, alternate text, actual text, expansion text, language, marked-content IDs, child counts ir attribute counts
- Pridėtas Windows PDFium print mode selection per TPdfPrintMode ir SetPdfPrintMode, apimant EMF, text-only, PostScript, pass-through, image-mask ir Type 42 print modes
- Pridėti low-level bindings likusiems standard-DLL PDFium public exports, apimant JavaScript actions, annotation form flags/font color, page-object active state, indexed insertion, content-mark float values, image ICC profile data, form-object removal ir text positions
- Išplėsti Delphi, C++Builder ir Lazarus regresijos rinkiniai iki 59 atvejų kiekviename su tagged PDF structure-tree, print mode ir public export binding coverage
Version 1.6.4
- Atnaujinti Delphi, C++Builder ir Lazarus demos, kad po sėkmingo sukūrimo automatiškai atidarytų sugeneruotus PDFs, eksportuotą tekstą/vaizdus ir batch output folders
Version 1.6.3
- Išplėsti suderinti Delphi, C++Builder ir Lazarus regresijos rinkiniai iki 56 atvejų kiekviename su TPdfView GUI aprėptimi fit-zoom helpers, device/page coordinate round-trips, character hit-testing ir mouse panning per hidden-window viewer controls
- TPdfView fixtures dabar naudoja aiškų viewer dydį ir test-only subclasses, kurios vykdo protected mouse handlers, išlaikant rinkinius visiškai headless
Version 1.6.2
- Pataisyta TPdf.AddPage(0, ...), kad įterptas pirmasis puslapis iš karto taptų aktyviu puslapiu. Esamas pavyzdinis kodas toliau veikia, o PageNumber dabar po įterpimo praneša galiojantį one-based page
- Sinchronizuota Lazarus package versija ir išplėsti suderinti Delphi, C++Builder ir Lazarus regresijos rinkiniai iki 52 atvejų kiekviename
Version 1.6.1
- Pataisytas neteisingas minimum-version requirement v1.6.0 PDF version compliance validator: SetState action perklasifikuotas iš PDF 1.5 žemyn į PDF 1.2, atitinkant PDF 1.2 Reference 6.9.9. PDF 1.3 / 1.4 SaveAs targets, kuriuose yra SetState actions, dabar išsaugomi teisingai, o ne atmetami
- Pridėti atitinkami PDF 1.2 lexical checks pagal tą patį spec section: Sound, Movie ir NOP actions bei Separation color space dabar blokuojami, kai pasirinkta target version yra senesnė nei PDF 1.2
- Išplėsti Delphi, C++Builder ir Lazarus regresijos rinkiniai iki 50 atvejų kiekviename, pridedant teigiamą PDF 1.4 SetState acceptance test, kuris užfiksuoja pataisytą ribą
Version 1.6.0
- Sustiprinti explicit PDF 1.0 iki PDF 1.7 SaveAs targets su pilnu version-feature validator, apimančiu visą PDF 1.1 iki ISO 32000-1 feature timeline. Validator dabar blokuoja išsaugojimus, kuriuose yra dictionary entries, filter names, annotation subtypes, action types, fonts, color spaces arba encryption parameters, įvestų po pasirinktos target version. Examples: JBIG2Decode (1.4+), MarkInfo / Tagged PDF (1.4+), OutputIntents (1.4+), ICCBased / DeviceN / BleedBox / TrimBox / ArtBox / StructTreeRoot (1.3+), Polygon / PolyLine / Caret / Screen / Watermark / Redact annotations, AES and AES-256 encryption (CFM AESV2 / AESV3), Perms / Legal / Requirements / NeedsRendering catalog entries ir version-gated actions, pvz. JavaScript, Trans, SetState, Rendition, GoToE, GoTo3DView, visi atmetami, kai target PDF version negali jų išreikšti
Version 1.5.13
- Išplėsti Delphi, C++Builder ir Lazarus regresijos rinkiniai iki 49 atvejų kiekviename, pridedant tiesioginę atmetimo aprėptį ICCBased color spaces, Tagged PDF MarkInfo, Polygon annotations, AES (V2) encryption ir Redact annotations prieš atitinkamus PDF 1.2 / 1.3 / 1.4 / 1.5 / 1.6 targets
Version 1.5.12
- Pataisytas SaveAs post-processing incremental catalog rewrites atvejams. PDFiumPas dabar tikrina naujausią pasikartojantį indirect object, todėl esami catalog /Version overrides teisingai pakeičiami išsaugant į aiškiai nurodytą senesnę PDF target version
- Išplėsti Delphi, C++Builder ir Lazarus regresijos rinkiniai iki 44 atvejų kiekviename, pridedant tiesioginę stale catalog /Version replacement, PDF 1.4 catalog version normalization ir transparency bei portable-collection features atmetimo aprėptį, kai pasirinkta PDF target version negali jų išreikšti
Version 1.5.11
- Sustiprinta versioned SaveAs išvestis aiškiems PDF 1.3, 1.4, 1.5, 1.6 ir 1.7 targets. PDFiumPas dabar normalizuoja catalog version markers, išlaiko numatytąjį Fit Height OpenAction version-safe ir atmeta naujesnes PDF features, kai pasirinkta target version negali jų išreikšti
- Pridėta Delphi, C++Builder ir Lazarus regresijos aprėptis, kuri išsaugo ir iš naujo įkelia aiškius PDF 1.3 iki PDF 1.7 failus, tikrindama galutinę antraštę, numatytąjį Fit Height OpenAction ir praneštą PDF version
Version 1.5.10
- Pereita nuo spec’s option B prie option C, pridedant TPdfView smoke tests visuose trijuose IDE rinkiniuose (Tests.PdfView). Kiekvienas rinkinys sukuria paslėptą parent TForm (per TForm.CreateNew Pascal pusėse ir
new TForm(NULL, 0)C++Builder pusėje), perparentina TPdfView, nustato Active := True ir tada tikrina round-trip surface PageCount, PageNumber default, Zoom, Rotation, DisplayMode bei tai, kad View.Text atitinka pagrindinį TPdf.Text. Kiekvienas IDE rinkinys dabar vykdo 39 atvejus
Version 1.5.9
- Pereita nuo spec’s option A prie option B, pridedant render smoke tests visuose trijuose IDE rinkiniuose. Kiekvienas Tests.Render rinkinys kviečia TPdf.RenderPage su sample.pdf ir vietoje byte-for-byte checksums tikrina tris tvirtus signalus: grąžintas bitmap tiksliai atitinka prašytą pixel size; skirtingi prašyti dydžiai (200x100, 64x256) sukuria atitinkančius bitmaps; o renderintas puslapis yra bent 95% baltas fonas su bent 50 (Lazarus: 20) ne baltais pixels, žyminčiais antialiased text. Kiekvienas IDE rinkinys dabar vykdo 33 atvejus
Version 1.5.8
- Užbaigtos pradinės A(2) test plan groups, pridedant dar septynias regresijas kiekvienai IDE: TPdf.CreateAnnotation sukuria anHighlight annotation ir SaveAs/LoadDocument round-trip, AcroForm read path faile Demo/Delphi/FormFill/cmp_fill_out_and_merge_forms.pdf (FormType yra ftAcroForm, FormFieldCount > 0, FlattenAllPages sumažina laukus iki nulio), taip pat tylus read-path coverage Bookmarks, LinkAnnotationCount ir WebLinkCount dokumente, kuriame nėra nė vienos iš tų funkcijų. Kiekvienas IDE rinkinys dabar vykdo 30 atvejų
Version 1.5.7
- Išplėsti Delphi (DUnitX), Lazarus (FPCUnit) ir C++Builder (GoogleTest) rinkiniai septyniomis naujomis regresijomis kiekvienai IDE: PdfVersion, PageRotation, TPdf.FindFirst / FindNext substring lookup, CharacterOrigin / CharacterRectangle sutapimas su AddText origin, CreateAttachment registration ir SaveAs/LoadDocument round-trip, taip pat accented-text AddText round-trip, patikrinantis, kad v1.3.0 European TrueType embedding path išlaiko Latin-1 supplemental code points nepažeistus
Version 1.5.6
- Išsaugoti PDFs dabar gauna numatytąjį pirmojo puslapio Fit Height open action, kai nėra esamo OpenAction, todėl PDF readers iš pradžių rodo sugeneruotus dokumentus page-height zoom masteliu
- Pridėta Delphi, Lazarus ir C++Builder regresijos aprėptis sugeneruotam OpenAction ir Fit Height nustatymui
Version 1.5.5
- Pridėti regresijos testai Delphi (DUnitX), Lazarus (FPCUnit) ir C++Builder (GoogleTest) rinkiniuose indexed character ir font inspection API surface (TPdf.FontBaseName, FontFamilyName, FontWeight, FontItalicAngle, FontData, FontIsEmbedded, CharacterFontWeight, CharacterAngle). Lazarus rinkinys sąmoningai praleidžia FontData, kuris šiuo metu access-violates FPDFFont_GetFontData viduje su FPC
Version 1.5.4
- Pridėtas C++Builder Attachment demo, perkeltas iš Delphi pavyzdžio, apimantis PDFs kūrimą, embedded file attachments pridėjimą, sąrašo rodymą, išgavimą, trynimą ir išsaugojimą su MIME subtype display
Version 1.5.3
- Eksponuotas spread-page calculation, kuriuo remiasi TPdfView two-page modes, kaip unit-level helper ComputeSpreadPages(DisplayMode, PageNumber, PageCount, out LeftPageNo, out RightPageNo). Elgsena nepasikeitė; helper leidžia savarankiškai testuoti cover-aware rule nekuriant viewer egzemplioriaus
- Pridėti penki regresijos testai Delphi (DUnitX), Lazarus (FPCUnit) ir C++Builder (GoogleTest) rinkiniuose, apimant empty documents, standard two-page pairing, cover page standing alone in dmTwoPageContinuousWithCover, post-cover pairs ir last-page / out-of-range clamping behavior
Version 1.5.2
- Pridėtas dokumento kalbos palaikymas per TPdf.Language, susietas su PDF catalog /Lang entry
- Pridėta attachment MIME subtype prieiga su TPdf.AttachmentType
- Pridėta anRedact į TPdfAnnotationSubtype ir pridėti page-object removal helpers TPdf ir TPdfView
- Atnaujinti viewer ir attachment demos, kad rodytų naują kalbos ir attachment type informaciją, kai ji prieinama
Version 1.5.1
- Pridėta dmTwoPageContinuousWithCover TPdfView, kad viewer layouts galėtų rodyti pirmą puslapį vieną, o tada tęsti two-page spreads
- Atnaujinti Delphi, C++Builder ir Lazarus MultiPageViewer demos, kad eksponuotų cover-aware two-page display mode
Version 1.5.0
- Pridėti smoke-level automated test suites Delphi (DUnitX), Lazarus (FPCUnit) ir C++Builder (GoogleTest). Trys rinkiniai dalijasi vienu fixture PDF faile Tests\TestData ir vykdo tuos pačius septynis atvejus kiekvienas, apimant document loading, page info, text extraction, metadata, save round-trip, PDF header validation ir Compressed savybę
Version 1.4.3
- Patobulintas FontProperties demo, kad rodytų ir TPdfView, ir TPdf font metadata APIs, įskaitant font handles, font data size ir character metrics
- Pridėtos indexed TPdfView character ir font inspection properties, o FontProperties demo atnaujintas, kad užklaustų text-object font metadata
Version 1.4.2
- Pridėtos indexed character ir font inspection properties į TPdf teksto analizei be viewer poreikio. Character-indexed properties (CharacterAngle, CharacterFontSize, CharacterFontWeight) užklausia kiekvieno simbolio metrics iš dabartinio puslapio text stream. Page-object-indexed properties (FontAscent, FontBaseName, FontData, FontDescent, FontFamilyName, FontHandle, FontIsEmbedded, FontItalicAngle, FontWeight) užklausia font metadata bet kuriam dabartinio puslapio text object
- Non-text page objects grąžina saugias nulio arba tuščias reikšmes visoms Font* properties vietoje klaidos iškėlimo, todėl lengva iteruoti kiekvieną page object ir tikrinti tik tekstinius
- FontBaseName skaito PostScript base font name tiesiogiai, o ne grįžta prie font family name, todėl pateikia tikslesnį embedded fonts identifikatorių
Version 1.4.1
- Pridėtos C++Builder ir Lazarus EuropeanText demo versijos, kad visos palaikomos IDE šeimos galėtų patikrinti accented European text generation su system TrueType fonts
- Pridėtos C++Builder ir Lazarus FormFill demo versijos, įskaitant sample form PDFs, field editing, appearance regeneration, filled saving ir flattened saving workflows
Version 1.4.0
- Pridėtas Lazarus / Free Pascal palaikymas: naujas PDFiumLaz paketas pateikia tuos pačius TPdf, TPdfView ir susijusius komponentus po LCL widget set, išplečiant biblioteką į Lazarus IDE ir Free Pascal compiler kartu su esamais Delphi ir C++Builder packages
- Pridėtos Lazarus demos versijos, kad Lazarus kūrėjai galėtų tyrinėti kiekvieną funkciją su paleidžiamais pavyzdžiais
- Pataisyta Lazarus compilation issue, kai Free Pascal conditional defines buvo vertinami kartu su Delphi compiler-version checks, todėl FPC builds bandydavo išspręsti Delphi-specific unit names ir nepavykdavo
Version 1.3.1
- Help set dokumentuotas form flattening workflow: GenerateFormAppearances, FlattenPage, FlattenAllPages ir susijusios FLAT_* / FLATTEN_* konstantos dabar aprašytos TPdf, TPdfView, API reference, feature matrix ir programming examples
- Pataisyta architecture table overview puslapyje, kad ji išvardytų tikrus binding units, pateikiamus Lib aplanke
Version 1.3.0
- Pagerintas European character palaikymas kuriant PDFs. TPdf.AddText dabar įkelia ir talpina atitinkamą system TrueType font prieš kurdamas text object, išsaugodamas accented characters iš Czech, French, German, Spanish, Portuguese, Polish ir Turkish, kurių PDFium integruoti standard fonts negali atvaizduoti
- Programos, kurios anksčiau sukurdavo klaustukus arba replacement glyphs non-ASCII Latin tekstui, dabar renderins teisingai be jokio kodo pakeitimo. Pridėtas EuropeanText demo šiai funkcijai parodyti
Version 1.2.0
- Pridėtas AcroForm appearance refresh į TPdf: iškvietus GenerateFormAppearances po FormField[] reikšmių pakeitimo, atnaujinama widget appearance, todėl užpildytos reikšmės matomos standartiniuose PDF readers be interaktyvios redagavimo sesijos poreikio
- Pridėti form flattening helpers į TPdf (FlattenPage / FlattenAllPages) ir TPdfView (FlattenPage dabartiniam view page). Flattening visam laikui įdeda užpildytų laukų reikšmes kaip įprastą puslapio turinį ir pašalina interaktyvų form layer, sukuriant static document, kuris nuosekliai renderinamas visuose viewers
- Pridėta Demo\Delphi\FormFill, skirta parodyti fill-and-save ir fill-and-flatten workflows su sample AcroForm PDF
Version 1.1.2
- Pridėtas save-time PDF stream compression. Nauja TPdf.Compressed savybė (įjungta pagal numatymą) išsaugant perrašo nesuspaustus content streams kaip FlateDecode-compressed streams, reikšmingai sumažindama programiškai sugeneruotų PDFs failo dydį. Programos, kurioms reikia paprastos nesuspaustos išvesties, gali nustatyti Compressed į False prieš kviesdamos SaveAs
Version 1.1.1
- Win64 package builds nebeįtraukia design-time registration units, užkertant kelią build-time failures, kai Win64 package diegiamas runtime-only context
- PDFium DLL loader dabar pirmiausia ieško Win32 arba Win64 programos poaplankio, naudodamas standartinius pdfium.dll ir pdfium.v8.dll pavadinimus, o tada grįžta prie programos flat directory ir Windows system directory. Tai atitinka DLL layout, pridėtą prie komponentų paketo, todėl diegimas tampa paprastas
Version 1.1.0
- Pataisytas visual clipping defect TPdfView two-page mode: page content persidengdavo per gutter, nes kairiojo ir dešiniojo puslapio tiles dalijosi vienu clipping rectangle. Kiekvienas tile dabar kerpamas nepriklausomai, todėl turinys lieka savo puslapio ribose
- Pagerintas Delphi demo klaidos pranešimas, kai PDFium DLL nerandamas, pateikiant aiškesnį prompt su tikėtinu DLL pavadinimu ir vieta