HotPDF 2.200.2 pro Delphi a C++Builder

Nativní generování, úpravy, podepisování, výstup v souladu se standardy, optimalizace písem a zpracování obrázků pro aplikace RAD Studio

HotPDF umožňuje VCL aplikacím vytvářet, upravovat, zabezpečovat, podepisovat, optimalizovat, importovat, komprimovat a ukládat PDF dokumenty přímo z kódu Delphi nebo C++Builder bez nutnosti nasazení externího PDF runtime

Přehled projektu

HotPDF je knihovna PDF komponent na úrovni zdrojového kódu pro Delphi a C++Builder; je navržena pro desktopový software, který vyžaduje deterministický PDF výstup, přímé kreslení na stránku, silnou integraci s RAD Studio a kompaktní nasazení

Tato komponenta pokrývá běžné generování PDF, pokročilé sestavování dokumentů, úpravy PDF, výstup s vysokým podílem obrázků, formuláře, anotace, šifrování, podepisování, optimalizaci písem a streamované pracovní postupy z jediného nativního API rozhraní

Nedávná vydání knihovny rozšířila HotPDF z klasického nástroje pro zápis PDF na širší nativní sadu nástrojů pro PDF, která pokrývá filtrování funkcí specifických pro verze PDF 1.3 / 1.4 / 1.5 / 1.6 / 1.7, vybrané šifrování PDF 2.0, shodu se standardy PDF/A-1 / -2 / -3 + PDF/X-1a / -3 / -4 + PDF/UA-1, digitální podpisy PAdES baseline / extended / long-term-validation, in-process PFX / PKCS#12 podepisování, které nezávisí na OpenSSL ani na externích nativních binárních souborech, ukládání přírůstkových aktualizací, subsetting písem CFF / OpenType / CID-keyed CFF a adaptéry pro export PDF pro FastReport, QuickReport, ReportBuilder a DevExpress ExpressPrinting, které směrují své stávající sestavy přes HotPDF jako jediný PDF backend; rozhraní Direct File API zpracovává vícesouborové PDF s miliony objektů o velikosti několika gigabajtů stylů file-to-file - počty stránek, kopie, přepisy informací o dokumentu a AES-256 šifrování nebo dešifrování - během několika sekund a zavaděč nyní také obnovuje dokumenty zabalené v přepravních kontejnerech s neplatnými offsety a přírůstkově aktualizované soubory s osiřelými nebo nahrazenými objekty

Cyklus v2.119.32-51 přidal tvarování arabštiny / perštiny / urdštiny na straně producenta (povinná ligatura LAM-ALEF, arabské prezentační formy-A o 9 písmenech), plně funkční OpenType GSUB substituční engine pokrývající každý LookupType 1-8 s výběrem Script / LangSys a uzavřením TTF subsetteru pro náhradní glyfy, podporu kontejneru XFA (XML Forms Architecture) (AddXFAPacket / ClearXFAPackets / XFAPacketCount), rodinu spouštěčů formulářových polí AcroForm /AA /K + /F + /V + /C, registraci písem s více Unicode /DR přes RegisterAcroFormFont, settery atributů přístupnosti strukturních prvků (/Lang / /E / /T) s výčtem standardních typů struktur Table 333 a typovaným přetížením AddStructureElement a vlastnosti sekvence označeného obsahu na BeginTaggedContent

Cyklus v2.119.52-68 dokončil automatickou pipeline tvarování Phase 8 a rozšířil pokrytí písem: Arabic Extended-A (včetně U+0750-077F Arabic Supplement a U+08A0-08FF Arabic Extended-A) a Persian / Urdu Form-B byly rozšířeny do plné tabulky spojovacích tříd U+0672-06D5 plus 26 nových mapování Forms-A s post-pass skládáním pro LAM-ALEF, dvojice YEH-HAMZA + samohláska (8 ligatur v U+FBEA-FBFB), samostatnou ligaturu Alláh (U+FDF2) a 22-kódovou frázi Bismillah (U+FDFD); nová volitelná vlastnost ShapingFeatures + výčet THPDFShapingFeature (sfArabicGSUB / sfStandardLigatures / sfContextualLigatures / sfContextualAlternates / sfIndicShaping) způsobuje, že producent automaticky emituje substituce rlig / liga / clig / rclt specifické pro písmo na základě GSUB, přičemž do stejné pipeline se zapojují latinské standardní ligatury (ff / fi / fl / ffi / ffl / ſt / st přes U+FB00-FB06) and změna pořadí slabik dévanágarí (Repha + pre-base I-matra); nové metody schopnosti tvarování pro syrštinu (GetSyriacJoiningClass / GetSyriacPosition), mongolštinu (GetMongolianJoiningClass / GetMongolianPosition) a dévanágarí (GetDevanagariCategory / ApplyDevanagariReorder) umožňují volajícím řídit nearabská složitá písma přes stejný GSUB engine; GetCodepointAdvance vystavuje nacachovanou em-frakci /W pro výpočty zalamování a AssignSyntheticCodepointForGID / GetSyntheticCodepointForGID umožňují producentovi emitovat jakýkoli náhradní GID z GSUB (tvary klastrů dévanágarí, stylistické alternace, sekvence variací CJK) přes kódové body Private-Use-Area s plnou integrací /CIDToGIDMap + /ToUnicode + /W; kumulativní ToUnicode CMap nyní obsahuje 35 reverzních mapovacích položek ligatur (8 LAM-ALEF + 18 rodiny YEH-HAMZA + 1 Alláh + 1 Bismillah + 7 latinských), takže kopírování/vkládání v klientské čtečce produkuje zdrojové kódové body; kostry dokumentace pro ChangeLog jsou nyní dodávány v 11 jazycích (EN / CN / AR / DE / ES / FR / IT / JA / KO / PT / RU) s uživatelským rozhraním pro výběr jazyka; limit pro uchovávání ChangeLog byl zvýšen ze 250 na 500 verzí

Cyklus v2.152-v2.190 vybudoval kompletní OpenType GPOS pozicovací engine a rozšířil pokrytí složitých písem; volitelné možnosti tvarování nyní aplikují vlastní kerning písma (párový, kontextový a zprava doleva), umisťování kombinačních značek (značka-k-základně, značka-ke-značce a značka-k-ligatuře pro jednotlivé komponenty), kotevní body kurzivního spojení a vertikální kerning pro vertikální text, vše zapsané jako standardní PDF textové operátory, takže jakákoli čtečka vykreslí stejný výsledek; tvarování na straně producenta nyní pokrývá arabštinu (včetně bloků Supplement, Extended-A a Extended-B), syrštinu, mongolštinu, N'Ko, adlam, hanifi rohingya, skládání tibetských souhlásek, dévanágarí a další indická písma prostřednictvím sady indických funkcí písma, javánštinu, řazení značek v thajštině a laoštině, řazení hebrejských vokálových bodů, khmerštinu, myanmarštinu, tai viet a meetei mayek; rodina volitelných typografických funkcí OpenType - standardní, diskreční a historické ligatury, kapitálky, starodávné / verzálkové / proporcionální / tabulkové číslice, horní indexy, dolní indexy, ordinály, zlomky, vědecké dolní indexy, čitatele, jmenovatele, stylistické a kontextové alternace, lokalizované formy, formy citlivé na velikost písmen, přeškrtnutá nula a vertikální alternace - může být automaticky aplikována během výstupu textu; kopírování, vkládání a vyhledávání textu obnovuje původní znaky ve veškerém tvarovaném výstupu, včetně ligatur a zřetězených substitučních funkcí; výstup písem se také zmenšil: vložené programy písem jsou vždy komprimovány metodou Flate, písmo použité na více stránkách se vloží do dokumentu pouze jednou, tagy podmnožin jsou odvozeny deterministicky pro reprodukovatelný výstup a volitelný kompaktní režim zapisuje čistý ASCII text se standardními písmy jako nevložený WinAnsi text

Pokrytí standardů PDF

HotPDF obsahuje podporu specifickou pro verze pro praktické funkce vytváření PDF 1.3, PDF 1.4, PDF 1.5, PDF 1.6 a PDF 1.7 používané v podnikových aplikacích, zpracování obrazu, publikování a automatizaci dokumentů; veřejná API jsou kontrolována vůči vybrané verzi PDF, takže generované soubory se vyhýbají novějším položkám, když je vyžadována přísná kompatibilita

Současná matice pokrývá filtry a prediktory, streamy XRef, řetězce přírůstkových aktualizací, šifrování AES, zabezpečení veřejným klíčem, barvy DeviceCMYK a ICCBased, vzory dlaždicování, axiální/radiální/vícestupňové stínování, vložené obrázky, vrstvy, skupiny průhlednosti, přechody stránek, anotace, prvky AcroForm, externí háčky pro podepisování, metadata XMP, stromy tagovaných PDF struktur, OutputIntents, produkční boxy stránek, ViewerPreferences, UserUnit, pořadí karet a vkládání/subsetting písem pro TrueType, Type 3, CFF, OpenType-CFF a CFF s klíčem CID

Jedná se o široké pokrytí podporovaného rozhraní pro tvorbu v HotPDF v souladu se standardy, nikoli o paušální tvrzení, že je implementován každý hraniční případ v ISO 32000-1

Proč zvolit HotPDF

Nativní integrace s RAD Studio

Používejte známé projekty, balíčky, streamy, formuláře a kreslicí vzory Delphi a C++Builder namísto obalování samostatného PDF enginu

Moderní funkce PDF

Vytvářejte PDF s formuláři, anotacemi, vrstvami, průhledností, přechody stránek, tagovanou strukturou, šifrováním, zástupnými symboly pro podpisy a přírůstkovými aktualizacemi

Kompaktní a rychlý výstup

Zmenšete velikost PDF pomocí komprese zlib-ng, zpracování obrázků libjpeg-turbo, subsettingu TrueType, subsettingu OpenType-CFF a podpory CFF s klíčem CID pro velká písma CJK

Konkurenční výhody

Níže uvedené schopnosti představují zásadní technické odlišnosti HotPDF oproti typickým PDF komponentám pro Delphi; většina konkurenčních komerčních komponent tyto funkce buď zcela postrádá, nebo jsou v produkčním nasazení výrazně slabší; každý řádek odpovídá ověřitelné implementaci a veřejnému API rozhraní uvnitř knihovny

Kompletní OpenType tvarování + pozicování

Kompletní substituční engine GSUB pokrývající každý LookupType 1-8 (Single, Multiple, Alternate, Ligature, Contextual, Chained Contextual, Extension, Reverse Chained Contextual), spárovaný s pozicovacím enginem GPOS pokrývajícím všech 9 typů LookupType (párový / samostatný / kontextový kerning, značka-k-základně, značka-ke-značce, značka-k-ligatuře pro jednotlivé komponenty, kurzivní připojení, vzdálenost, vertikální vkrn/vpal); veškeré pozicování je emitováno pomocí standardních textových operátorů PDF, takže se vykresluje identicky v každé čtečce

Tvarování složitých písem na straně producenta

Více než 20 písem tvarovaných na straně producenta, řízených vlastním řetězcem funkcí GSUB písma: arabština (včetně Supplement / Extended-A / Extended-B), syrština, mongolština, N'Ko, adlam, hanifi rohingya, skládání tibetských souhlásek, dévanágarí a rodina indických písem, javánština, řazení značek v thajštině / laoštině, řazení hebrejských vokálů, khmerština, myanmarština, tai viet, meetei mayek; výstup nese plné reverzní mapování /ToUnicode, takže kopírování/vkládání obnovuje původní kódové body

In-process zásobník podepisování, nulové externí závislosti

ASN.1, RSA, AES, rozbalování PKCS#12 a CMS SignedData (RFC 5652) jsou plně implementovány uvnitř HotPDF; SignPDFWithPFX podepisuje zástupné PDF jedním voláním bez OpenSSL runtime a bez systémového poskytovatele kryptografie - celý řetězec podepisování běží ve vašem procesu, je reprodukovatelný, auditovatelný a nevyžaduje nasazení žádných nativních binárních souborů

Dlouhodobé ověřování PAdES, end-to-end

Pracovní postupy PAdES B-B, B-T, B-LT a B-LTA jsou plně pokryty: časová razítka RFC 3161, slovníky dlouhodobého ověřování DSS / VRI, podpisy časových razítek dokumentů, omezení Seed Value a XAdES-v-PDF; toto je přísný požadavek na elektronické podpisy splňující nařízení EU eIDAS, kde většina konkurenčních komponent končí u základního podepisování CMS

Tříosá shoda + Preflight

Nezávislé filtrování profilů pro PDF/A-1/-2/-3, PDF/X-1a/-3/-4 a PDF/UA-1 současně - nekompatibilní volání vyvolávají diagnostické výjimky namísto tichého zápisu nevyhovujících PDF; CreatePreflightReport generuje textové / JSON / HTML / CSV sestavy s profily INI, vestavěnými předvolbami, dávkovou agregací a vložením důkazů XMP, vše ověřeno end-to-end proti veraPDF

Direct File API pro soubory o velikosti mnoha gigabajtů

Pracuje s PDF na disku bez sestavování grafu objektů v paměti; na dokumentu o velikosti 2 GB s 1,67 miliony objektů: šifrování AES-256 trvá ~14 s, dešifrování ~16 s, plný přepis ~6 s; přečtení počtu stránek 1,25 GB dokumentu trvá milisekundy; klasické tabulky xref, streamy XRef, hybridní referenční soubory a přírůstkově aktualizované dokumenty zůstávají na přímé cestě

Subsetting CFF / OpenType-CFF / CID

Písma TrueType, OpenType-CFF a CFF s klíčem CID jsou plně subsetovatelná při zachování ID glyfů pro text Type0 / Identity-H; dokumenty CJK, které dříve vkládaly 14 MB programy písem CFF s klíčem CID, nyní odcházejí s velikostí 500 KB - 2 MB bez ztráty vykreslených glyfů; vložené programy písem jsou vždy komprimovány metodou Flate, vícestránková písma se vkládají jednou na dokument a tagy podmnožin jsou deterministické pro reprodukovatelný výstup

Jednotná fasáda pro běhové protokolování (runtime logging)

THPDFLogger + globální HPDFLog poskytují za běhu přepínatelnou diagnostickou fasádu: filtrování závažnosti Error / Warning / Info / Debug, současný zápis do souboru + OutputDebugString + konzole, vláknově bezpečné, 10 MB rotace s jednou zálohou, rychlá cesta s nulovou režií při vypnutí; LoadFromFile, preflight sestavy a záložní cesta objektových streamů jsou již propojeny se strukturovanou diagnostikou, kterou lze přepínat za běhu bez opětovného sestavení - provozní schopnost, kterou většina konkurenčních komponent zcela postrádá

Čtyři adaptéry tiskových sestav

Snadno vyměnitelné PDF backendy pro FastReport (TfrxHotPDFExport), QuickReport (TQRHotPDFExportFilter), ReportBuilder (TppHotPDFDevice) a DevExpress ExpressPrinting (pokrývající cxGrid / cxRichEdit / cxScheduler / cxPivotGrid); stávající rozvržení sestav fungují dál - mění se pouze emitor PDF

Jedná se o dodané schopnosti, nikoli o sliby z plánu vývoje. Každá výše uvedená položka je implementována v aktuální knihovně, čistě se kompiluje a úspěšně prochází testy DUnitX a end-to-end validací veraPDF; při hodnocení konkurenčních komponent požadujte důkaz o plném pokrytí GSUB/GPOS LookupType, in-process řetězci PAdES B-LTA a měřené propustnosti šifrování pro vícesouborové dokumenty o velikosti několika gigabajtů

Výhody pro vývojáře

  • Integrace orientovaná na zdrojový kód udržuje ladění a nasazení pod vaší kontrolou
  • Sdílené příklady pro Delphi a C++Builder usnadňují ověření chování v obou jazykových sadách
  • Statická integrace C knihoven třetích stran udržuje závislosti na kompresi a zpracování obrázků reprodukovatelné
  • Zaměřená pomocná API pokrývají PDF filtry, FlateDecode, LZW, CCITT, masky obrázků, čárové kódy, subsetting písem a pracovní postupy obsahu stránek
  • Filtrování verzí PDF může automaticky povýšit verzi výstupu nebo vynutit přísnou shodu s PDF 1.3/1.4/1.5/1.6/1.7 pomocí StrictVersionLock
  • Hotové balíčkové projekty Delphi a C++Builder pokrývají současné generace RAD Studio, včetně 13.1 Florence

Nedávné zajímavosti z knihovny

Direct File API pro soubory o velikosti mnoha gigabajtů

Rodina DAOpenFileReadOnly / DACopyFile / DASetDocumentInfo / DASaveAsFile a volání EncryptFile / DecryptFile pracují přímo se souborem PDF namísto sestavování objektového grafu v paměti; na benchmarkovém dokumentu o velikosti 2 GB s 1,67 miliony objektů trvá šifrování AES-256 přibližně 14 sekund, dešifrování přibližně 16 sekund a úplný přepis přibližně 6 sekund; otevření dokumentu o velikosti 1,25 GB pro zjištění počtu stránek trvá milisekundy; klasické tabulky, streamy křížových odkazů, hybridní referenční soubory a přírůstkově aktualizované dokumenty zůstávají na přímé cestě

Preflight sestavy

CreatePreflightReport a CreatePreflightReportWithProfile auditují PDF vůči podporovaným kontrolám PDF/A, PDF/X a PDF/UA a generují sestavy v textu, JSON, HTML nebo CSV, s profily ve stylu INI pro potlačení akceptovaných nálezů - připraveno pro CI a dávkový příjem dokumentů; demo PreflightCLI přidává rekurzivní spouštění složek a agregované řídicí panely

Sada nástrojů pro formuláře v načtených dokumentech

HasFormFields a FormFieldExists odpovídají na otázky týkající se formulářů v načteném PDF před manipulací s ním, hodnoty polí lze číst a zapisovat podle indexu nebo názvu a FlattenFormFields zažehluje interaktivní pole AcroForm do obsahu stránek a hlásí, kolik polí zploštil - společně se zploštěním XFA-na-AcroForm, které udržuje formuláře XFA použitelné v jakékoli čtečce

In-process podepisování PFX / PKCS#12

THotPDF.SignPDFWithPFX(InputPDF, OutputPDF, PFXFile, Password) podepisuje stávající zástupné PDF v jediném volání; celý zásobník ASN.1, RSA, AES, PKCS#12 a CMS SignedData (RFC 5652) je implementován uvnitř HotPDF, takže není vyžadován žádný OpenSSL runtime ani systémový poskytovatel kryptografie

Dlouhodobé ověřování PAdES

Pracovní postupy PAdES B-B, B-T, B-LT a B-LTA jsou pokryty end-to-end: vytváření podpisů s časovými razítky RFC 3161, slovníky dlouhodobého ověřování DSS / VRI, podpisy časových razítek dokumentů a omezení Seed Value; XAdES-v-PDF a vynucování hodnot seed podpisu jsou součástí stejného rozhraní

Shoda s PDF/A, PDF/X a PDF/UA

HotPDF filtruje metody funkcí vůči profilům PDF/A-1 / -2 / -3, PDF/X-1a / -3 / -4 a PDF/UA-1; volání, která by narušila vybraný profil (průhlednost v PDF/A-1, JavaScript v PDF/A, externí anotace v PDF/X, netagovaná struktura v PDF/UA), vyvolávají diagnostické výjimky namísto tichého vytváření nevyhovujících PDF

Adaptéry tiskových sestav třetích stran

Snadno vyměnitelné PDF backendy pro čtyři nejběžnější tiskové enginy pro Delphi: TfrxHotPDFExport (FastReport 4 / FastReport VCL), TQRHotPDFExportFilter (QuickReport), TppHotPDFDevice (ReportBuilder) a dxHotPDFExportReportLinkToFile/Stream (DevExpress ExpressPrinting System pokrývající cxGrid / cxRichEdit / cxScheduler / cxPivotGrid); stávající sestavy fungují dál - mění se pouze emitor PDF

Pozicovací engine OpenType GPOS

Volitelné pozicování textu řízené vlastními daty GPOS písma: párový a kontextový kerning pro text zleva doprava a zprava doleva, umisťování značka-k-základně, značka-ke-značce a značka pro jednotlivé komponenty ligatur, kurzivní zarovnání vstupu/výstupu, pozicování vzdálenosti a vertikální kerning pro vertikální písma; pozicování je emitováno pomocí standardních textových operátorů PDF, takže každá čtečka PDF vykresluje stejný výsledek

Pokrytí tvarování složitých písem

Tvarování na straně producenta vykresluje správně spojený a přeuspořádaný text pro arabštinu (včetně bloků Supplement, Extended-A a Extended-B), syrštinu, mongolštinu, N'Ko, adlam, hanifi rohingya, tibetštinu, dévanágarí a další indická písma, javánštinu, thajštinu, laoštinu, hebrejštinu, khmerštinu, myanmarštinu, tai viet a meetei mayek bez spoléhání se na shaper na straně prohlížeče; každé písmo je volitelný přepínač, takže stávající výstup zůstává bajtově identický, dokud není povolen, a kopírování/vkládání obnovuje původní znaky

Automatické typografické funkce OpenType

Volitelné přepínače tvarování automaticky aplikují standardní, diskreční a historické ligatury písma, kapitálky, starodávné / verzálkové / proporcionální / tabulkové číslice, horní indexy, dolní indexy, ordinály, zlomky, vědecké dolní indexy, čitatele, jmenovatele, stylistické a kontextové alternace, lokalizované formy, formy citlivé na velikost písmen, přeškrtnutou nulu a vertikální alternace během výstupu textu, přičemž extrakce textu je zpětně mapována na zdrojové znaky

Kompaktní výstup písem

Vložené programy písem jsou vždy komprimovány metodou Flate, písmo použité na více stránkách se vloží jednou pro celý dokument a tagy podmnožin jsou odvozeny deterministicky z reálně použitých glyfů, takže opakovaná spuštění produkují identický výstup; volitelný režim zapisuje čistý ASCII text se standardními písmy jako kompaktní nevložený WinAnsi text, čímž zmenší stránku čistého textu ze stovek kilobajtů na několik kilobajtů

Vícejazyčné tvarování na straně producenta

Tvarování na straně producenta skládá Unicode vstupy do jejich prezentačních forem před emisí textu PDF; arabština pokrývá plnou tabulku spojovacích tříd U+0672-06D5 plus více než 40 mapování Forms-A, s automatickým post-passem ligatur pro LAM-ALEF, YEH-HAMZA + samohlásky (U+FBEA-FBFB), Alláh (U+FDF2) a Bismillah (U+FDFD); rozhraní funkcí pro syrštinu (GetSyriacJoiningClass), mongolštinu (GetMongolianJoiningClass) a dévanágarí (GetDevanagariCategory / ApplyDevanagariReorder) umožňují volajícím řídit nearabská složitá písma přes stejný GSUB engine

Automatická pipeline tvarování (Phase 8)

Volitelná vlastnost ShapingFeatures + výčet THPDFShapingFeature (sfArabicGSUB / sfCursiveAttachment / sfStandardLigatures / sfContextualLigatures / sfContextualAlternates / sfIndicShaping) povyšuje enginy OpenType GSUB a GPOS na automatickou pipeline na straně producenta; nativní arabština init / medi / fina / isol, rlig, calt, rclt, GPOS kurzivní připojení, latinská liga / clig a reorientace slabik dévanágarí probíhají při emisi textu s plným reverzním mapováním /ToUnicode pro správnost kopírování/vkládání

Latinské standardní ligatury + syntetický kódový bod PUA

Latinské standardní ligatury (ff / fi / fl / ffi / ffl / ſt / st přes U+FB00-FB06) jsou emitovány automaticky přes ApplyLatinLigatureRefinement, pokud je povoleno sfStandardLigatures; pro náhradní GID z GSUB bez přirozeného kódového bodu Unicode - tvary klastrů dévanágarí, stylistické alternace, CJK ideografické variační sekvence - alokuje AssignSyntheticCodepointForGID kódový bod Private-Use-Area (U+E000-F8FF) s zrcadlenou integrací /CIDToGIDMap + /W + /ToUnicode

Substituční engine OpenType GSUB

Každý OpenType GSUB LookupType 1-8 (Single, Multiple, Alternate, Ligature, Contextual, Chained Contextual, Extension, Reverse Chained Contextual) is implemented as a capability-only query surface (GetSingleSubstituteGlyph, ApplyLigatureSubstitution, ApplyContextualSubst, ApplyReverseChainedContextualSubst, and the Multiple / Alternate / Script / LangSys / Feature helpers); MarkUnicodeGlyphUsed stahuje každý náhradní glyf do TTF subsetteru, takže vložené podmnožiny písem zůstávají soběstačné

Formuláře XFA + spouštěče AcroForm + Unicode /DR

Kontejnerové pakety XFA podle PDF 1.7 §12.7.6 / §12.7.8 jsou přenášeny vedle (nebo místo) statických /Fields pomocí AddXFAPacket; celá rodina spouštěčů polí formuláře AcroForm (/AA /K stisk klávesy, /F formát, /V validace, /C výpočet) je vystavena jako obalovací metody a RegisterAcroFormFont váže více písem Unicode k jedinému slovníku prostředků AcroForm /DR pro vícejazyčné formulářové prvky

Subsetting písem a PDF v jazycích CJK

THotPDF.EnableFontSubsetting provádí subsetting písem TrueType, OpenType-CFF a CFF s klíčem CID při zachování ID glyfů pro text Type0 / Identity-H; PDF v jazycích CJK, která dříve vkládala 14 MB programy písem CFF s klíčem CID, nyní odcházejí s velikostí 500 KB - 2 MB bez ztráty jakýchkoli vykreslených glyfů

Přírůstkové ukládání s více podpisy

API BeginIncrementalUpdate, SaveIncrementalUpdate, MarkDirty a zástupné symboly podpisů podporují aktualizace PDF pouze pro připojení (append-only) a pracovní postupy s více podpisy bez přepisování dříve podepsaných rozsahů bajtů

Pokrytí pokročilých funkcí PDF

  • Filtrování API specifické pro verze PDF 1.3 / 1.4 / 1.5 / 1.6 / 1.7 + vybrané PDF 2.0 pro Catalog, ViewerPreferences, anotace, JavaScript, písma Type0, mapy ToUnicode, průhlednost, vrstvy a šifrování
  • Filtry shody PDF/A-1 / -2 / -3, PDF/X-1a / -3 / -4 a PDF/UA-1, které odmítají nekompatibilní volání funkcí namísto tichého porušení profilu
  • Stromy tagovaných PDF struktur s mapami rolí, StructParents, výstupem ParentTree a strukturními prvky pro pracovní postupy orientované na přístupnost
  • OutputIntents, ICC profily, boxy stránek, rotace, UserUnit, pořadí Tabs, vzory dlaždicování, ExtGState alpha, režimy prolnutí, půltóny (Type 1 / 5 / 6 / 10 / 16), přenosové funkce a reference funkcí pro generování černé / odstranění podkladové barvy
  • Vložené obrázky, vícestupňové axiální gradienty, radiální gradienty, volné / mřížkové trojúhelníkové sítě stínované metodou Gouraud, sítě Coons patch a tensor product patch, obrázky s maskou průhlednosti (soft-mask) pro per-pixel alfa ve stylu PNG a opakovaně použitelné výplně vzorů
  • Pojmenované cíle, miniatury stránek, stylování osnovy na úrovni stránek (barva, tučné, kurzíva), registrací pojmenovaných JavaScriptů na úrovni dokumentu a celá doplňková rodina Line / PolyLine / Polygon (popisek, zakončení čar, záměr, efekt ohraničení)
  • Tvarování arabštiny na straně producenta pokrývá plnou tabulku spojovacích tříd U+0672-06D5 plus více než 40 statických mapování Arabic Presentation Forms-A, s post-pass skládáním ligatur pro LAM-ALEF, dvojice YEH-HAMZA + samohláska (U+FBEA-FBFB), ligaturu Alláh (U+FDF2) a frázi Bismillah (U+FDFD)
  • Rozhraní funkcí pro tvarování více písem: syrština (GetSyriacJoiningClass / GetSyriacPosition), mongolštinu (GetMongolianJoiningClass / GetMongolianPosition), dévanágarí (GetDevanagariCategory / ApplyDevanagariReorder) - řídí stejný GSUB engine pro složitá nearabská písma
  • Automatická pipeline tvarování Phase 8 řízená volitelnou vlastností ShapingFeatures: sfArabicGSUB aplikuje nativní arabské init / medi / fina / isol plus rlig / calt / rclt pro emisi kontextových ID glyfů specifických pro písmo, sfCursiveAttachment aplikuje kurzivní kotvy GPOS, sfStandardLigatures / sfContextualLigatures emitují latinské liga / clig (FB00-FB06: ff / fi / fl / ffi / ffl / ſt / st) a sfIndicShaping mění pořadí klastrů dévanágarí (Repha + pre-base I-matra) před emisí
  • Plně funkční substituční engine OpenType GSUB (LookupType 1-8) s výběrem Script / LangSys, uzavřením TTF subsetteru (MarkUnicodeGlyphUsed), pokrytím Cmap format 12 SMP, parsováním GDEF, automatickou emisí ToUnicode CMap s 35 položkami reverzního mapování ligatur a vyhledáváním GetUnicodeGlyphForCodepoint pro volající, kteří řídí emisi glyf po glyfu
  • Emise syntetických kódových bodů PUA (AssignSyntheticCodepointForGID / GetSyntheticCodepointForGID) umožňuje producentům emitovat jakýkoli náhradní GID z GSUB (tvary klastrů dévanágarí, stylistické alternace, CJK ideografické variační sekvence) přes Private Use Area U+E000-F8FF se zrcadlenou integrací /CIDToGIDMap + /W; GetCodepointAdvance vystavuje nacachovanou em-frakci /W pro výpočty zalamování
  • Pozicovací engine OpenType GPOS za volitelnými přepínači tvarování: párový, samostatný a kontextový (Context / Chained Context) kerning pro text zleva doprava i zprava doleva, umístění značka-k-základně / značka-ke-značce / značka-k-ligatuře s přesností na jednotlivé komponenty ligatur, kurzivní připojení vstup-výstup, pozicování vzdálenosti a vertikální kerning vkrn / vpal aplikovaný na vertikální výstup textu
  • Tvarování složitých písem na straně producenta pro Arabic Supplement / Extended-A / Extended-B, syrštinu, mongolštinu, N'Ko, adlam, hanifi rohingya, skládání tibetských souhlásek, rodinu indických písem prostřednictvím sady indických funkcí písma, javánštinu, řazení značek v thajštině / laoštině, řazení hebrejských vokálových bodů, khmerštinu, myanmarštinu, tai viet a meetei mayek, každé za vlastním volitelným přepínačem s reverzním mapováním ToUnicode pro kopírování/vkládání
  • Automatické typografické funkce OpenType během výstupu textu: ligatury liga / clig / dlig / hlig, kapitálky smcp / c2sc, styly číslic onum / lnum / pnum / tnum, sups / subs / ordn / frac / sinf / numr / dnom, stylistické alternace salt, kontextové alternace calt / rclt, lokalizované formy locl, formy case, přeškrtnutá nula zero a vertikální alternace vert / vrt2, s řetězenými substitucemi vyřešenými zpět na zdrojový text v ToUnicode CMap
  • Optimalizace vkládání písem: vždy komprimované vložené programy písem, jedna vložená kopie na dokument pro písma použitá na více stránkách, deterministické tagy podmnožin pro reprodukovatelný výstup a volitelný nevložený režim WinAnsi pro čistý ASCII text se standardními písmy
  • Textová pole AcroForm, seznamy, rozevírací seznamy, zaškrtávací políčka, přepínače, akce tlačítek (včetně rozšířených Named / Hide / Show / ImportData / SubmitForm s uživatelsky řízenými /Flags), pole pro podpisy a generované streamy vzhledu (víceřádkový + hřebenový + Tx s bohatým textem + /AP s písmem CID)
  • Rodina spouštěčů polí formuláře AcroForm (/AA /K stisk klávesy, /F formát, /V validace, /C výpočet) s jednou obalovací metodou na spouštěč; registrace písem s více Unicode /DR přes RegisterAcroFormFont; podpora kontejneru XFA (XML Forms Architecture) (PDF 1.7 §12.7.6 / §12.7.8) s AddXFAPacket / ClearXFAPackets / XFAPacketCount a filtry shody s PDF/A + PDF/X, plus zploštění XFA-na-AcroForm (ApplyXFAAsAcroForm pro syrové bajty XDP, FlattenLoadedXFA pro vložený formulář načteného PDF), které převádí statické XFA na nativní pole AcroForm, stylování a grafiku stránek, takže formulář zůstává viditelný a vyplnitelný ve čtečkách bez XFA enginu
  • Rozhraní přístupnosti tagovaného PDF podle PDF/UA-1: vlastnosti sekvence označeného obsahu podle §14.8.4 na BeginTaggedContent (/Lang / /Alt / /ActualText / /E), settery atributů strukturních prvků (/Lang / /E / /T), výčet standardních typů struktur Table 333 (THPDFStandardStructureType) plus typované přetížení AddStructureElement
  • Podpora anotací pro zvýraznění, volný text, odkazy, přílohy souborů, vyskakovací okna, redigování, vodoznak, bohatá média, 3D / U3D / PRC, styly ohraničení a vyskakovací okna propojených komentářů
  • Standardní zabezpečení heslem, šifrovací moduly AES-128 / AES-256 security handlers, PDF 2.0 R6 hashing, certificate-recipient public-key encryption through caller-supplied PKCS#7 envelopes, and binary-safe handling of non-ASCII colorant / font names
  • Digitální podpisy PAdES B-B, B-T, B-LT a B-LTA s časovými razítky RFC 3161, slovníky dlouhodobého ověřování DSS / VRI, podpisy časových razítek dokumentů, omezení Seed Value a XAdES-v-PDF
  • In-process podepisování PFX / PKCS#12: ASN.1, RSA, AES, PKCS#12 a CMS SignedData přibalené v knihovně podepisují stávající zástupné PDF v jednom volání bez jakékoli závislosti na OpenSSL nebo kryptografii platformy
  • Snadno vyměnitelné PDF backendy pro FastReport 4 / FastReport VCL, QuickReport, ReportBuilder a DevExpress ExpressPrinting System, takže stávající definice sestav se emitují přes HotPDF bez přepisování rozvržení sestav

Vysoce výkonná komprese a zásobník pro zpracování obrazu

Aktuální sestavení HotPDF používají zlib-ng v režimu kompatibilním se zlib pro přibalený Flate backend; streamy stránek, streamy vložených písem, mapy ToUnicode CMaps, streamy Flate obrázků, výstupy související s TIFF a pomocné funkce FlateDecode jsou směrovány přes zlib vrstvu HotPDF

Sestavení zlib-ng pro Win64x a diagnostické MSVC Win64 obsahují běhové přidělování CPU pro instrukční sady SSE2, SSSE3, SSE4.1, SSE4.2, PCLMULQDQ a AVX2 s ponecháním obecných záloh; Win32 zůstává na obecné sadě OMF objektů zlib-ng přes bcc32c, zatímco JPEG a TIFF objekty pro Win32 nadále používají klasickou cestu OMF bcc32

Standardní pracovní postupy JPEG používají přibalenou sadu objektů libjpeg-turbo 3.1.90 prostřednictvím rozhraní API kompatibilního s libjpeg vystaveného v HPDFJpeg.pas; nativní sestavení pro Win32, Win64 a Win64x nyní obsahují příslušné sady objektů NASM SIMD a stejný nativní JPEG backend je k dispozici pro integrační vrstvu TIFF pro zpracování JPEG komprimovaných TIFF

C runtime most v HPDFCLibs.pas nyní překládá malloc, free, realloc, calloc, memcpy, memmove a memset přes jednu vrstvu orientovanou na Pascal, s 32bajtovým zarovnáním alokace pro nativní vyrovnávací paměti podporující SIMD

Repozitář obsahuje reprodukovatelné skripty pro sestavení objektů: Lib\thirdparty\build-bcc32.bat, Lib\thirdparty\build-bcc64x.bat a Lib\thirdparty\build-vc64.bat pro celou sadu nativních C knihoven, plus skripty pouze pro zlib-ng pro zaměřené nové sestavení komprese

Rychlý pří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íčku

Typické případy použití