HotPDF 2.200.2 pre Delphi a C++Builder

Natívne generovanie, úprava, podpisovanie, výstup kompatibilný so štandardmi, optimalizácia písiem a spracovanie obrázkov pre aplikácie RAD Studio

HotPDF umožňuje aplikáciám VCL vytvárať, upravovať, zabezpečovať, podpisovať, optimalizovať, importovať, komprimovať a ukladať dokumenty PDF priamo z kódu Delphi alebo C++Builder, a to bez nasadenia externého runtime prostredia PDF

Prehľad projektu

HotPDF je knižnica komponentov PDF na úrovni zdrojového kódu pre Delphi a C++Builder; je vytvorená pre desktopový softvér, ktorý vyžaduje deterministický výstup PDF, priame kreslenie na stránku, silnú integráciu s RAD Studio a kompaktné nasadenie

Komponent pokrýva každodenné generovanie PDF, pokročilé zostavovanie dokumentov, úpravu PDF, výstup s množstvom obrázkov, formuláre, anotácie, šifrovanie, pracovné postupy podpisovania, optimalizáciu písiem a pracovné postupy založené na streamoch z jedného natívneho rozhrania API

Nedávne vydania knižnice rozšírili HotPDF z klasického nástroja na zápis PDF na širšiu natívnu sadu nástrojov PDF, ktorá pokrýva riadenie funkcií špecifických pre verzie PDF 1.3 / 1.4 / 1.5 / 1.6 / 1.7, vybrané šifrovanie PDF 2.0, súlad so štandardmi PDF/A-1 / -2 / -3 + PDF/X-1a / -3 / -4 + PDF/UA-1, digitálne podpisy PAdES baseline / extended / long-term-validation, proces podpisovania PFX / PKCS#12 v rámci procesu, ktorý nezávisí od OpenSSL ani externých natívnych binárnych súborov, ukladanie prírastkových aktualizácií, vytváranie podmnožín písiem CFF / OpenType / CID-keyed CFF a exportné adaptéry PDF pre FastReport, QuickReport, ReportBuilder a DevExpress ExpressPrinting, ktoré smerujú ich existujúce reporty cez HotPDF ako jediné backendové riešenie PDF; rozhranie Direct File API spracováva viacgigabajtové súbory PDF s miliónmi objektov štýlom súbor-súbor – počty strán, kópie, prepisovanie informácií o dokumente a šifrovanie alebo dešifrovanie AES-256 – v priebehu niekoľkých sekúnd a zavádzač teraz tiež obnovuje dokumenty zabalené v prepravných kontajneroch so zastaranými offsetmi a prírastkovo aktualizované súbory s osirelými alebo nahradenými objektmi

Cyklus v2.119.32-51 pridal tvarovanie arabčiny / perzštiny / urdčiny na strane producenta (povinná ligatúra LAM-ALEF, 9 písmen arabských prezentačných foriem-A), plnohodnotný substitučný modul OpenType GSUB pokrývajúci každý LookupType 1-8 s výberom Script / LangSys a uzáverom subsettingu TTF pre náhradné glyfy, podporu kontajnerov XFA (XML Forms Architecture) (AddXFAPacket / ClearXFAPackets / XFAPacketCount), rodinu spúšťačov polí formulára AcroForm /AA /K + /F + /V + /C, registráciu písiem multi-Unicode /DR prostredníctvom RegisterAcroFormFont, nastavenia atribútov prístupnosti prvkov štruktúry (/Lang / /E / /T) s enumom štandardných typov štruktúr podľa tabuľky 333 a typovo určeným preťažením AddStructureElement a vlastnosti sekvencií označeného obsahu na BeginTaggedContent

Cyklus v2.119.52-68 uzavrel automatický kanál tvarovania fázy 8 a rozšíril pokrytie písiem: arabčina Extended-A (vrátane doplnku U+0750-077F Arabic Supplement a U+08A0-08FF Arabic Extended-A) a perzština / urdčina Form-B boli rozšírené do celej tabuľky spojovacích tried U+0672-06D5 plus 26 nových mapovaní Forms-A s dodatočným skladaním pre LAM-ALEF, páry YEH-HAMZA + samohláska (8 ligatúr v U+FBEA-FBFB), samostatnú ligatúru Allah (U+FDF2) a 22-kódovú frázu Bismillah (U+FDFD); nová voliteľná vlastnosť ShapingFeatures + enum THPDFShapingFeature (sfArabicGSUB / sfStandardLigatures / sfContextualLigatures / sfContextualAlternates / sfIndicShaping) spôsobuje, že producent automaticky emituje substitúcie rlig / liga / clig / rclt špecifické pre písmo riadené GSUB, pričom štandardné latinské ligatúry (ff / fi / fl / ffi / ffl / ſt / st cez U+FB00-FB06) a preusporiadanie slabík dévanágarí (Repha + predzákladná I-matra) sa pripájajú k rovnakému kanálu; nové metódy možností tvarovania pre sýrčinu (GetSyriacJoiningClass / GetSyriacPosition), mongolčinu (GetMongolianJoiningClass / GetMongolianPosition) a dévanágarí (GetDevanagariCategory / ApplyDevanagariReorder) umožňujú volajúcim riadiť nearabské komplexné písma cez rovnaký modul GSUB; GetCodepointAdvance sprístupňuje vyrovnávaciu pamäť /W em-frakcie pre výpočty zalamovania a AssignSyntheticCodepointForGID / GetSyntheticCodepointForGID umožňujú producentovi emitovať akékoľvek náhradné GID z GSUB (tvary klastrov dévanágarí, štylistické alternatívy, variácie sekvencií CJK) prostredníctvom kódových bodov z Private-Use-Area s plnou integráciou /CIDToGIDMap + /ToUnicode + /W; kumulatívna mapa ToUnicode CMap teraz obsahuje 35 záznamov pre spätné mapovanie ligatúr (8 rodiny LAM-ALEF + 18 rodiny YEH-HAMZA + 1 Allah + 1 Bismillah + 7 latinských), takže kopírovanie / vkladanie u čitateľa produkuje zdrojové kódové body; kostry dokumentace pre ChangeLog sa teraz dodávajú v 11 jazykoch (EN / CN / AR / DE / ES / FR / IT / JA / KO / PT / RU) s rozhraním pre výber jazyka; limit uchovávania ChangeLog bol zvýšený z 250 na 500 verzií

Cyklus v2.152-v2.190 vybudoval kompletný modul na umiestňovanie OpenType GPOS a rozšíril pokrytie zložitých písiem; voliteľné možnosti tvarovania teraz uplatňujú vlastný kerning písma (párový, kontextový a sprava doľava), umiestňovanie kombinačných značiek (značka na základňu, značka na značku a značka na ligatúru pre jednotlivé komponenty), kurzívne spojovacie kotvy a vertikálny kerning pre vertikálny text, všetko zapísané ako štandardné textové operátory PDF, takže každý čitateľ vykreslí rovnaký výsledok; tvarovanie na strane producenta teraz pokrýva arabčinu (vrátane blokov Supplement, Extended-A a Extended-B), sýrčinu, mongolčinu, N'Ko, adlam, hanifi rohingya, ukladanie tibetských spoluhlások, dévanágarí a ďalšie indické písma prostredníctvom reťazca indických funkcií písma, javánčinu, usporiadanie značiek v thajčine a laoštine, usporiadanie hebrejských samohlások, khmérčinu, mjanmarčinu, tai viet a meetei mayek; rodinu voliteľných typografických funkcií OpenType – štandardné, ľubovoľné a historické ligatúry, kapitálky, starodávne / riadkové / proporcionálne / tabuľkové číslice, horné indexy, dolné indexy, radové číslovky, zlomky, vedecké dolné indexy, čitatele, menovatele, štylistické a kontextové alternatívy, lokalizované formy, formy citlivé na veľkosť písmen, preškrtnutú nulu a vertikálne alternatívy – možno použiť automaticky počas výstupu textu; kopírovanie, vkladanie a vyhľadávanie textu obnovujú pôvodné znaky v celom tvarovanom výstupe vrátane ligatúr a reťazených substitúcií funkcií; výstup písma sa tiež zmenšil: vložené programy písiem sú vždy komprimované metódou Flate, písmo použité na viacerých stránkach sa vkladá raz na dokument, štítky podmnožín sa odvodzujú deterministicky pre reprodukovateľný výstup a voliteľný kompaktný režim zapisuje čistý text ASCII so štandardnými písmami ako nevložený text WinAnsi

Pokrytie štandardov PDF

HotPDF obsahuje podporu špecifickú pre verzie pre praktické funkcie tvorby PDF 1.3, PDF 1.4, PDF 1.5, PDF 1.6 a PDF 1.7 používané v podnikaní, zobrazovaní, publikovaní a aplikáciách na automatizáciu dokumentov; verejné API sú kontrolované voči vybranej verzii PDF, takže generované súbory sa vyhýbajú novším záznamom, keď sa vyžaduje prísna kompatibilita

Aktuálna matrica pokrýva filtre a prediktory, streamy XRef, reťazce prírastkových aktualizácií, šifrovanie AES, zabezpečenie pomocou verejného kľúča, farby DeviceCMYK a ICCBased, vzory dlaždíc, axiálne/radiálne/viacbodové tieňovanie, vložené obrázky, vrstvy, skupiny priehľadnosti, prechody stránok, anotácie, prvky AcroForm, externé háčiky na podpisovanie, metadáta XMP, označené stromy štruktúry PDF, OutputIntents, produkčné boxy stránok, ViewerPreferences, UserUnit, poradie záložiek a vkladanie/vytváranie podmnožín písiem pre písma TrueType, Type 3, CFF, OpenType-CFF a CID-keyed CFF

Ide o široké pokrytie kompatibilné so štandardmi pre podporovaný povrch tvorby HotPDF, nie o plošné tvrdenie, že je implementovaný každý hraničný prípad v ISO 32000-1

Prečo si vybrať HotPDF

Natívne prispôsobenie pre RAD Studio

Používajte známe projekty, balíky, streamy, formuláre a kresliace vzory Delphi a C++Builder namiesto obaľovania samostatného modulu PDF

Moderné funkcie PDF

Vytvárajte dokumenty PDF s formulármi, anotáciami, vrstvami, priehľadnosťou, prechodmi stránok, označenou štruktúrou, šifrovaním, zástupnými symbolmi podpisu a prírastkovými aktualizáciami

Kompaktný, rýchly výstup

Znížte veľkosť PDF pomocou kompresie zlib-ng, spracovania obrázkov libjpeg-turbo, vytvárania podmnožín TrueType, vytvárania podmnožín OpenType-CFF a podpory CID-keyed CFF pre veľké písma CJK

Konkurenčné výhody

Nižšie uvedené schopnosti sú výraznými technickými odlišnosťami pre HotPDF v porovnaní s typickými komponentmi PDF pre Delphi; väčšina konkurenčných komerčných komponentov tieto funkcie buď úplne postráda, alebo sú v produkcii podstatne slabšie; každý riadok sa mapuje na overiteľnú implementáciu a verejný povrch API vo vnútri knižnice

Kompletné tvarovanie a umiestňovanie OpenType

Kompletný substitučný modul GSUB pokrývajúci každý LookupType 1-8 (Single, Multiple, Alternate, Ligature, Contextual, Chained Contextual, Extension, Reverse Chained Contextual), spárovaný s modulom umiestňovania GPOS pokrývajúcim všetkých 9 typov LookupType (párový / samostatný / kontextový kerning, značka na základňu, značka na značku, značka na ligatúru pre jednotlivé komponenty ligatúry, kurzívne pripojenie, vzdialenosť, vertikálny vkrn/vpal); všetky polohy sa emitujú pomocou štandardných textových operátorov PDF, takže každý čitateľ ich vykreslí rovnako

Tvarovanie zložitých písiem na strane producenta

Viac ako 20 písiem tvarovaných na strane producenta, riadených vlastným reťazcom funkcií GSUB písma: arabčina (vrátane Supplement / Extended-A / Extended-B), sýrčina, mongolčinu, N'Ko, adlam, hanifi rohingya, tibetské vrstvenie, dévanágarí a rodina indických písiem, javánčina, usporiadanie značiek v thajčine / laoštine, usporiadanie hebrejských samohlások, khmérčina, mjanmarčina, tai viet, meetei mayek; výstup nesie úplné spätné mapovanie /ToUnicode, takže kopírovanie / vkladanie obnovuje pôvodné kódové body

Proces podpisovania v rámci procesu, žiadne externé závislosti

ASN.1, RSA, AES, rozbalenie PKCS#12 a CMS SignedData (RFC 5652) sú všetky implementované vo vnútri HotPDF; SignPDFWithPFX podpíše zástupný dokument PDF v jednom volaní bez runtime prostredia OpenSSL a bez poskytovateľa kryptografie platformy – celý podpisový reťazec žije vo vašom procese, je reprodukovateľný, auditovateľný a nevyžaduje nasadenie žiadnych natívnych binárnych súborov

Dlhodobé overenie PAdES, od začiatku do konca

Pracovné postupy PAdES B-B, B-T, B-LT a B-LTA sú plne pokryté: časové pečiatky RFC 3161, slovníky dlhodobého overovania DSS / VRI, podpisy časových pečiatok dokumentov, obmedzenia hodnôt Seed Value a XAdES-in-PDF; toto je prísna požiadavka pre elektronické podpisy v súlade s nariadením EÚ eIDAS, kde sa väčšina konkurenčných komponentov zastaví pri základnom podpise CMS

Súlad v troch osiach + predletová kontrola

Nezávislé riadenie profilov pre PDF/A-1/-2/-3, PDF/X-1a/-3/-4 a PDF/UA-1 súčasne – nekompatibilné volania vyvolajú diagnostické výnimky namiesto tichého zápisu nevyhovujúcich súborov PDF; CreatePreflightReport vydáva správy vo formáte text / JSON / HTML / CSV s profilmi INI, zabudovanými predvoľbami, hromadnou agregáciou a vložením dôkazov XMP, validované komplexne voči veraPDF

Rozhranie API Direct File pre viacgigabajtové súbory

Pracuje so súborom PDF na disku bez budovania grafu objektov v pamäti; na 2 GB dokumente s 1,67 milióna objektov: šifrovanie AES-256 ~14 s, dešifrovanie ~16 s, úplný prepis ~6 s; čítanie počtu strán 1,25 GB dokumentu trvá milisekundy; klasické tabuľky xref, streamy XRef, súbory s hybridnými odkazmi a prírastkovo aktualizované dokumenty zostávajú na priamej ceste

Vytváranie podmnožín CFF / OpenType-CFF / CID

TrueType, OpenType-CFF a CID-keyed CFF písma sú všetky podporované pre vytváranie podmnožín pri zachovaní ID glyfov pre text Type0 / Identity-H; dokumenty CJK, ktoré predtým obsahovali 14 MB programy CID-keyed CFF, sa teraz dodávajú s veľkosťou 500 KB – 2 MB bez stratu vykreslených glyfov; vložené programy písiem sú vždy komprimované pomocou Flate, viacstránkové písma sa vkladajú raz na dokument a štítky podmnožín sú deterministické pre reprodukovateľný výstup

Zjednotená fasáda protokolovania počas behu

THPDFLogger + globálny HPDFLog poskytujú diagnostickú fasádu prepínateľnú počas behu: filtrovanie závažnosti Error / Warning / Info / Debug, súčasné zacielenie na súbor + OutputDebugString + konzolu, bezpečné pre vlákna, striedanie s jednou zálohou s veľkosťou 10 MB, rýchla cesta vypnutá s nulovou réžiou; LoadFromFile, predletové správy a záložná cesta prúdu objektov sú už prepojené so štruktúrovanou diagnostikou, ktorú je možné prepínať počas behu bez opätovného zostavenia – prevádzková schopnosť, ktorú väčšina konkurenčných komponentov úplne postráda

Štyri adaptéry reportovacích modulov

Náhradné backendy PDF pre FastReport (TfrxHotPDFExport), QuickReport (TQRHotPDFExportFilter), ReportBuilder (TppHotPDFDevice) a DevExpress ExpressPrinting (pokrývajúci cxGrid / cxRichEdit / cxScheduler / cxPivotGrid); existujúce rozloženia správ naďalej fungujú – mení sa iba emitor PDF

Toto sú dodané možnosti, nie prísľuby do budúcna. Každá vyššie uvedená položka je implementovaná v aktuálnej knižnici, čisto sa kompiluje a úspešne prechádza testami DUnitX a komplexnou validáciou veraPDF; pri hodnotení konkurenčných komponentov požiadajte o dôkaz o úplnom pokrytí GSUB/GPOS LookupType, reťazci PAdES B-LTA v rámci procesu a nameranom šifrovacom výkone pre viacgigabajtové súbory

Výhody pre vývojárov

  • Integrácia zameraná na zdrojový kód udržiava ladenie a nasadenie pod vašou kontrolou
  • Zdieľané príklady pre Delphi a C++Builder uľahčujú overenie správania v oboch jazykových prostrediach
  • Statická integrácia knižníc C tretích strán udržiava závislosti na kompresii a spracovaní obrázkov reprodukovateľné
  • Zamerané pomocné rozhrania API pokrývajú filtre PDF, FlateDecode, LZW, CCITT, masky obrázkov, čiarové kódy, vytváranie podmnožín písiem a pracovné postupy obsahu stránok
  • Brány verzií PDF môžu automaticky povýšiť výstupnú verziu alebo vynútiť prísny súlad s PDF 1.3/1.4/1.5/1.6/1.7 prostredníctvom StrictVersionLock
  • Projekty balíkov pre Delphi a C++Builder pripravené na použitie pokrývajú aktuálne generácie RAD Studio, vrátane verzie 13.1 Florence

Najdôležitejšie novinky v knižnici z poslednej doby

Rozhranie API Direct File pre viacgigabajtové súbory

Rodina DAOpenFileReadOnly / DACopyFile / DASetDocumentInfo / DASaveAsFile a volania EncryptFile / DecryptFile v štýle súbor-súbor pracujú priamo so súborom PDF namiesto budovania grafu objektov v pamäti; na benchmarkovom dokumente s veľkosťou 2 GB a 1,67 milióna objektov trvá šifrovanie AES-256 približne 14 sekúnd, dešifrovanie približne 16 sekúnd a úplný prepis približne 6 sekúnd; otvorenie 1,25 GB dokumentu na zistenie počtu strán trvá milisekundy; klasické tabuľky, toky krížových odkazov, súbory s hybridnými odkazmi a prírastkovo aktualizované dokumenty zostávajú na priamej ceste

Predletové správy

CreatePreflightReport a CreatePreflightReportWithProfile kontrolujú PDF voči podporovaným testom PDF/A, PDF/X a PDF/UA a vytvárajú správy vo formáte text, JSON, HTML alebo CSV s profilmi v štýle INI na potlačenie akceptovaných zistení – pripravené pre brány CI a hromadný príjem dokumentov; ukážka PreflightCLI pridáva rekurzívne spúšťanie priečinkov a agregované panely

Sada nástrojov pre formuláre načítaných dokumentov

HasFormFields a FormFieldExists odpovedajú na otázky o formulároch v načítanom PDF pred akoukoľvek manipuláciou s ním, hodnoty polí je možné čítať a zapisovať podľa indexu alebo názvu a FlattenFormFields vpaľuje interaktívne polia AcroForm do obsahu stránky a oznamuje, koľko polí sploštil – spolu so sploštením XFA na AcroForm, ktoré udržiava formuláre XFA použiteľné v akomkoľvek čitateľovi

Podpisovanie PFX / PKCS#12 v rámci procesu

THotPDF.SignPDFWithPFX(InputPDF, OutputPDF, PFXFile, Password) podpisuje existujúci zástupný dokument PDF v jedinom volaní; celý zásobník ASN.1, RSA, AES, PKCS#12 a CMS SignedData (RFC 5652) je implementovaný vo vnútri HotPDF, takže nie je potrebné žiadne runtime prostredie OpenSSL ani poskytovateľa kryptografie platformy

Dlhodobé overovanie PAdES

Pracovné postupy PAdES B-B, B-T, B-LT a B-LTA sú pokryté od začiatku do konca: vytváranie podpisu s časovými pečiatkami RFC 3161, slovníky dlhodobého overovania DSS / VRI, podpisy časových pečiatok dokumentov a obmedzenia hodnôt Seed Value; vynútenie XAdES-in-PDF a hodnôt seed podpisu sú súčasťou rovnakého povrchu

Súlad s PDF/A, PDF/X a PDF/UA

HotPDF filtruje metódy funkcií voči profilom PDF/A-1 / -2 / -3, PDF/X-1a / -3 / -4 a PDF/UA-1; volania, ktoré by porušili vybraný profil (priehľadnosť v PDF/A-1, JavaScript v PDF/A, externé anotácie v PDF/X, neoznačená štruktúra v PDF/UA), vyvolajú diagnostické výnimky namiesto tichého vytvorenia nekompatibilných dokumentov PDF

Adaptéry reportovacích modulov tretích strán

Náhradné backendy PDF pre štyri najbežnejšie reportovacie moduly Delphi: TfrxHotPDFExport (FastReport 4 / FastReport VCL), TQRHotPDFExportFilter (QuickReport), TppHotPDFDevice (ReportBuilder) a dxHotPDFExportReportLinkToFile/Stream (DevExpress ExpressPrinting System pokrývajúci cxGrid / cxRichEdit / cxScheduler / cxPivotGrid); existujúce reporty naďalej fungujú – mení sa iba emitor PDF

Modul umiestňovania OpenType GPOS

Voliteľné umiestňovanie textu riadené vlastnými údajmi GPOS písma: párový a kontextový kerning pre text zľava doprava a sprava doľava, umiestňovanie značky na základňu, značky na značku a značky na ligatúru pre jednotlivé komponenty ligatúr, kurzívne zarovnanie vstupu/výstupu, umiestňovanie podľa vzdialenosti a vertikálny kerning pre vertikálne písma; umiestňovanie sa emituje pomocou štandardných textových operátorov PDF, takže každá čítačka PDF vykreslí rovnaký výsledok

Pokrytie tvarovania zložitých písiem

Tvarovanie na strane producenta vykresľuje správne spojený a preusporiadaný text pre arabčinu (vrátane blokov Supplement, Extended-A a Extended-B), sýrčinu, mongolčinu, N'Ko, adlam, hanifi rohingya, tibetčinu, dévanágarí a ďalšie indické písma, javánčinu, thajčinu, laoštinu, hebrejčinu, khmérčinu, mjanmarčinu, tai viet a meetei mayek bez spoliehania sa na tvarovač na strane prehliadača; každé písmo je voliteľný prepínač, takže existujúci výstup zostáva bajtovo identický, kým nie je povolený, a kopírovanie/vloženie obnoví pôvodné znaky

Automatické typografické funkcie OpenType

Voliteľné prepínače tvarovania automaticky aplikujú štandardné, ľubovoľné a historické ligatúry písma, kapitálky, starodávne / riadkové / proporcionálne / tabuľkové číslice, horné indexy, dolné indexy, radové číslovky, zlomky, vedecké dolné indexy, čitatele, menovatele, štylistické a kontextové alternatívy, lokalizované formy, formy citlivé na veľkosť písmen, preškrtnutú nulu a vertikálne alternatívy počas výstupu textu, pričom extrakcia textu sa mapuje späť na zdrojové znaky

Kompaktný výstup písma

Vložené programy písiem sú vždy komprimované pomocou Flate, písmo použité na viacerých stránkach sa vloží raz pre celý dokument a štítky podmnožín sa odvodzujú deterministicky z reálne použitých glyfov, takže opakované spustenia produkujú identický výstup; voliteľný režim zapisuje čistý text ASCII so štandardnými písmami ako kompaktný nevložený text WinAnsi, čím sa stránka čistého textu zmenší zo stoviek kilobajtov na niekoľko kilobajtov

Tvarovanie na strane producenta pre viacero písiem

Tvarovanie na strane producenta skladá behy vstupov Unicode do ich prezentačných foriem pred emisiou textu PDF; arabčina pokrýva celú tabuľku spojovacích tried U+0672-06D5 plus viac ako 40 mapovaní Forms-A, s automatickým dodatočným spracovaním ligatúr pre LAM-ALEF, YEH-HAMZA + samohlásky (U+FBEA-FBFB), Allah (U+FDF2) a Bismillah (U+FDFD); povrchy možností pre sýrčinu (GetSyriacJoiningClass), mongolčinu (GetMongolianJoiningClass) a dévanágarí (GetDevanagariCategory / ApplyDevanagariReorder) umožňujú volajúcim spustiť nearabské komplexné písma cez rovnaký modul GSUB

Automatický kanál tvarovania (fáza 8)

Voliteľná vlastnosť ShapingFeatures + enum THPDFShapingFeature (sfArabicGSUB / sfCursiveAttachment / sfStandardLigatures / sfContextualLigatures / sfContextualAlternates / sfIndicShaping) povyšujú moduly OpenType GSUB a GPOS na automatický kanál na strane producenta; natívne arabské init / medi / fina / isol, rlig, calt, rclt, kurzívne pripojenie GPOS, latinské liga / clig a preusporiadanie slabík dévanágarí prebiehajú pri emisii textu s úplným spätným mapovaním /ToUnicode pre správnosť kopírovania / vkladania

Štandardné latinské ligatúry + syntetický kódový bod PUA

Štandardné latinské ligatúry (ff / fi / fl / ffi / ffl / ſt / st cez U+FB00-FB06) sa emitujú automaticky prostredníctvom ApplyLatinLigatureRefinement, keď je povolené sfStandardLigatures; pre náhradné GID v GSUB bez prirodzeného kódového bodu Unicode – tvary klastrov dévanágarí, štylistické alternatívy, CJK ideografické variačné sekvencie – priraďuje AssignSyntheticCodepointForGID kódový bod z oblasti Private-Use-Area (U+E000-F8FF) so zrkadlenou integráciou /CIDToGIDMap + /W + /ToUnicode

Substitučný modul OpenType GSUB

Každý OpenType GSUB LookupType 1-8 (Single, Multiple, Alternate, Ligature, Contextual, Chained Contextual, Extension, Reverse Chained Contextual) je implementovaný ako dopytovací povrch iba pre možnosti (GetSingleSubstituteGlyph, ApplyLigatureSubstitution, ApplyContextualSubst, ApplyReverseChainedContextualSubst a pomocníci pre Multiple / Alternate / Script / LangSys / Feature); MarkUnicodeGlyphUsed ťahá každý náhradný glyf do TTF subsettera, takže vložené podmnožiny písiem zostávajú sebestačné

Formuláre XFA + spúšťače AcroForm + Unicode /DR

Pakety kontajnerov XFA podľa PDF 1.7 §12.7.6 / §12.7.8 sa prenášajú spolu s (alebo namiesto) statickými /Fields prostredníctvom AddXFAPacket; celá rodina spúšťačov polí formulára AcroForm (/AA /K Keystroke, /F Format, /V Validate, /C Calculate) je vystavená ako obaľovacie metódy a RegisterAcroFormFont viaže viacero písiem Unicode na jeden slovník zdrojov AcroForm /DR pre viacjazyčné prvky formulárov

Vytváranie podmnožín písiem a PDF v jazykoch CJK

THotPDF.EnableFontSubsetting vytvára podmnožiny písiem TrueType, OpenType-CFF a CID-keyed CFF pri zachovaní ID glyfov pre text Type0 / Identity-H; dokumenty PDF v jazykoch CJK, ktoré predtým obsahovali 14 MB programy CID-keyed CFF, sa teraz dodávajú s veľkosťou 500 KB – 2 MB bez straty vykreslených glyfov

Prírastkové ukladanie pre viacnásobné podpisy

BeginIncrementalUpdate, SaveIncrementalUpdate, MarkDirty a rozhrania API zástupných symbolov podpisov podporujú aktualizácie PDF len s pridaním obsahu na koniec a pracovné postupy s viacerými podpismi bez prepisovania predtým podpísaných rozsahov bajtov

Pokrytie pokročilých funkcií PDF

  • Verziovo špecifické brány API pre PDF 1.3 / 1.4 / 1.5 / 1.6 / 1.7 + vybrané PDF 2.0 pre Catalog, ViewerPreferences, anotácie, JavaScript, písma Type0, mapy ToUnicode, priehľadnosť, vrstvy a šifrovanie
  • Brány pre súlad s PDF/A-1 / -2 / -3, PDF/X-1a / -3 / -4 a PDF/UA-1, ktoré odmietajú nekompatibilné volania funkcií namiesto tichého porušenia profilu
  • Označené stromy štruktúry PDF s mapami rolí, výstupom StructParents, ParentTree a prvkami štruktúry pre pracovné postupy zamerané na prístupnosť
  • OutputIntents, profily ICC, boxy stránok, otáčanie, UserUnit, poradie záložiek, vzory dlaždíc, alfa ExtGState, režimy miešania, poltóny (Type 1 / 5 / 6 / 10 / 16), prenosové funkcie a odkazy na funkcie generovania čiernej / odstraňovania podkladovej farby
  • Vložené obrázky, viacbodové axiálne gradienty, radiálne gradienty, voľné trojuholníkové siete tieňované podľa Gourauda, siete Coons patch a tensor product patch, obrázky s mäkkou maskou pre alfa kanál na pixel v štýle PNG a opakovane použiteľné výplne vzorov
  • Pomenované cieľové miesta, miniatúry stránok, štýl osnovy na úrovni stránky (farba, tučné písmo, kurzíva), pomenovaný register JavaScript na úrovni dokumentu a celá rodina doplnkov Line / PolyLine / Polygon (titulok, konce čiar, zámer, efekt ohraničenia)
  • Tvarovanie arabčiny na strane producenta pokrýva celú tabuľku spojovacích tried U+0672-06D5 plus viac ako 40 statických mapovaní Arabic Presentation Forms-A, s dodatočným skladaním ligatúr pre LAM-ALEF, páry YEH-HAMZA + samohláska (U+FBEA-FBFB), ligatúru Allah (U+FDF2) a frázu Bismillah (U+FDFD)
  • Povrchy možností tvarovania pre viacero písiem: sýrčina (GetSyriacJoiningClass / GetSyriacPosition), mongolčina (GetMongolianJoiningClass / GetMongolianPosition), dévanágarí (GetDevanagariCategory / ApplyDevanagariReorder) – riadia rovnaký modul GSUB pre zložité nearabské písma
  • Automatický kanál tvarovania fázy 8 riadený voliteľnou vlastnosťou ShapingFeatures: sfArabicGSUB aplikuje natívne arabské init / medi / fina / isol plus rlig / calt / rclt na emitovanie kontextových ID glyfov špecifických pre písmo, sfCursiveAttachment aplikuje kurzívne kotvy GPOS, sfStandardLigatures / sfContextualLigatures emitujú latinské liga / clig (FB00-FB06: ff / fi / fl / ffi / ffl / ſt / st) a sfIndicShaping pred emisiou preusporadúva klastre dévanágarí (Repha + predzákladná I-matra)
  • Plne funkčný substitučný modul OpenType GSUB (LookupType 1-8) s výberom Script / LangSys, uzáverom subsettera TTF (MarkUnicodeGlyphUsed), pokrytím formátu Cmap 12 SMP, parsovaním GDEF, automatickou emisiou ToUnicode CMap s 35 spätne mapovanými položkami ligatúr a vyhľadávaním GetUnicodeGlyphForCodepoint pre volajúcich, ktorí riadia emisiu glyf po glyfe
  • Emisia syntetického kódového bodu PUA (AssignSyntheticCodepointForGID / GetSyntheticCodepointForGID) umožňuje producentom emitovať akékoľvek náhradné GID v GSUB (tvary klastrov dévanágarí, štylistické alternatívy, CJK ideografické variačné sekvencie) cez oblasť Private Use Area U+E000-F8FF so zrkadlenou integráciou /CIDToGIDMap + /W; GetCodepointAdvance sprístupňuje vyrovnávaciu pamäť em-frakcie /W pre výpočty zalamovania
  • Modul umiestňovania OpenType GPOS za voliteľnými prepínačmi tvarovania: párový, samostatný a kontextový (Context / Chained Context) kerning pre text zľava doprava aj sprava doľava, umiestnenie značky na základňu / značky na značku / značky na ligatúru s presnosťou pre jednotlivé komponenty na ligatúrach, kurzívne pripojenie vstupu a výstupu, umiestnenie podľa vzdialenosti a vertikálny kerning vkrn / vpal aplikovaný na vertikálny výstup textu
  • Tvarovanie zložitých písiem na strane producenta pre Arabic Supplement / Extended-A / Extended-B, sýrčinu, mongolčinu, N'Ko, adlam, hanifi rohingya, tibetské vrstvenie, rodinu indických písiem prostredníctvom reťazca indických funkcií písma, javánčinu, usporiadanie značiek v thajčine / laoštine, usporiadanie hebrejských samohlások, khmérčinu, mjanmarčinu, tai viet a meetei mayek, každé za vlastným voliteľným prepínačom so spätným mapovaním ToUnicode pre kopírovanie / vkladanie
  • Automatické typografické funkcie OpenType počas výstupu textu: ligatúry liga / clig / dlig / hlig, kapitálky smcp / c2sc, štýly číslic onum / lnum / pnum / tnum, sups / subs / ordn / frac / sinf / numr / dnom, štylistické alternatívy salt, kontextové alternatívy calt / rclt, lokalizované formy locl, formy case, preškrtnutá nula zero a vertikálne alternatívy vert / vrt2, pričom reťazené substitúcie sú vyriešené späť na zdrojový text v mape ToUnicode CMap
  • Optimalizácia vkladania písiem: vždy komprimované vložené programy písiem, jedna vložená kópia na dokument pre písma použité na viacerých stránkach, deterministické štítky podmnožín pre reprodukovateľný výstup a voliteľný nevložený režim WinAnsi pre čistý text ASCII so štandardnými písmami
  • Textové polia AcroForm, zoznamy, rozbaľovacie zoznamy, začiarkavacie políčka, prepínače, akcie tlačidiel (vrátane rozšírených Named / Hide / Show / ImportData / SubmitForm s používateľsky riadenými /Flags), podpisové polia a generované toky vzhľadu (viacriadkové + comb + rich-text Tx + CID-font /AP)
  • Rodina spúšťačov polí formulára AcroForm (/AA /K Keystroke, /F Format, /V Validate, /C Calculate) s jednou obaľovacou metódou na spúšťač; registrácia písiem multi-Unicode /DR cez RegisterAcroFormFont; podpora kontajnerov XFA (XML Forms Architecture) (PDF 1.7 §12.7.6 / §12.7.8) s AddXFAPacket / ClearXFAPackets / XFAPacketCount a bránami pre súlad s PDF/A + PDF/X, plus sploštenie XFA na AcroForm (ApplyXFAAsAcroForm pre surové bajty XDP, FlattenLoadedXFA pre vložený formulár načítaného PDF), ktoré premieňa statické XFA na natívne polia AcroForm, štýly a grafiku stránky, takže formulár zostáva viditeľný a vyplniteľný v čítačkách bez modulu XFA
  • Prístupový povrch označeného PDF podľa PDF/UA-1: vlastnosti sekvencií označeného obsahu podľa §14.8.4 na BeginTaggedContent (/Lang / /Alt / /ActualText / /E), nastavenia atribútov prvkov štruktúry (/Lang / /E / /T), enum štandardných typov štruktúr podľa tabuľky 333 (THPDFStandardStructureType) plus typovo určené preťaženie AddStructureElement
  • Podpora anotácií pre zvýraznenia, voľný text, odkazy, prílohy súborov, vyskakovacie okná, redigovanie, vodotlač, bohaté médiá, 3D / U3D / PRC, štýly ohraničenia a prepojené vyskakovacie komentáre
  • Štandardné zabezpečenie heslom, bezpečnostné procesory AES-128 / AES-256, hašovanie PDF 2.0 R6, šifrovanie pomocou verejného kľúča príjemcu certifikátu prostredníctvom obálok PKCS#7 dodaných volajúcim a binárne bezpečné spracovanie ne-ASCII názvov farbív / písiem
  • Digitálne podpisy PAdES B-B, B-T, B-LT a B-LTA s časovými pečiatkami RFC 3161, slovníky dlhodobého overovania DSS / VRI, podpisy časových pečiatok dokumentov, obmedzenia hodnôt Seed Value a XAdES-in-PDF
  • Podpisovanie PFX / PKCS#12 v rámci procesu: zásobník ASN.1, RSA, AES, PKCS#12 a CMS SignedData prislúchajúci knižnici podpisuje existujúci zástupný dokument PDF v jednom volaní bez akejkoľvek závislosti od OpenSSL alebo kryptografie platformy
  • Náhradné backendy PDF pre FastReport 4 / FastReport VCL, QuickReport, ReportBuilder a DevExpress ExpressPrinting System, takže existujúce definície správ sa emitujú cez HotPDF bez prepisovania rozloženia

Vysoko výkonný kompresný a zobrazovací zásobník

Aktuálne zostavenia HotPDF používajú zlib-ng v režime kompatibilnom so zlib pre pribalený Flate backend; toky stránok, toky vložených písiem, ToUnicode CMaps, toky obrázkov Flate, výstupy súvisiace s TIFF a pomocné nástroje FlateDecode sú smerované cez vrstvu zlib pre HotPDF

Zostavenia zlib-ng pre Win64x a diagnostické MSVC Win64 obsahujú odosielanie procesora počas behu pre cesty SSE2, SSSE3, SSE4.1, SSE4.2, PCLMULQDQ a AVX2 so zachovanými všeobecnými záložnými riešeniami; Win32 zostáva na všeobecnej sade objektov OMF zlib-ng cez bcc32c, zatiaľ čo objekty Win32 JPEG a TIFF naďalej používajú klasickú cestu OMF bcc32

Štandardné pracovné postupy JPEG používajú pribalenú sadu objektov libjpeg-turbo 3.1.90 prostredníctvom rozhrania API kompatibilného s libjpeg vystaveného v HPDFJpeg.pas; natívne zostavenia pre Win32, Win64 a Win64x teraz obsahujú príslušné sady objektov NASM SIMD a rovnaký natívny JPEG backend je k dispozícii pre integračnú vrstvu TIFF pre prácu s JPEG komprimovaným TIFF

Mostík C runtime v HPDFCLibs.pas teraz rieši malloc, free, realloc, calloc, memcpy, memmove a memset prostredníctvom jednej vrstvy otočenej smerom k Pascalu s 32-bajtovo zarovnanou alokáciou pre natívne vyrovnávacie pamäte priateľské k SIMD

Repozitár obsahuje skripty na reprodukovateľné zostavovanie objektov: Lib\thirdparty\build-bcc32.bat, Lib\thirdparty\build-bcc64x.bat a Lib\thirdparty\build-vc64.bat pre celú sadu natívnych knižníc C, plus skripty len pre zlib-ng pre cielené prebudovanie kompresie

Rýchly príklad v Delphi

program HelloHotPDF;

uses
  System.SysUtils,
  HPDFDoc;

var
  PDF: THotPDF;
begin
  PDF := THotPDF.Create(nil);
  try
    PDF.AutoLaunch := False;
    PDF.FileName := 'HelloHotPDF.pdf';
    PDF.Compression := cmFlateDecode;
    PDF.EnableFontSubsetting := True;
    PDF.BeginDoc;
    PDF.CurrentPage.SetFont('Arial', [], 18);
    PDF.CurrentPage.TextOut(50, 50, 0, 'Hello HotPDF');
    PDF.EndDoc;
  finally
    PDF.Free;
  end;
end.

Obsah balíka

Typické prípady použitia