Natywne dopasowanie do RAD Studio
Używaj znanych projektów, pakietów, strumieni, formularzy i wzorców rysowania Delphi i C++Builder zamiast opakowywać oddzielny silnik PDF
HotPDF 2.200.2 dla Delphi i C++Builder
HotPDF umożliwia aplikacjom VCL tworzenie, modyfikowanie, zabezpieczanie, podpisywanie, optymalizowanie, importowanie, kompresowanie i zapisywanie dokumentów PDF bezpośrednio z kodu Delphi lub C++Builder, bez wdrażania zewnętrznego środowiska uruchomieniowego PDF
HotPDF to biblioteka komponentów PDF na poziomie kodu źródłowego dla Delphi i C++Builder. Została stworzona dla oprogramowania desktopowego, które wymaga deterministycznych danych wyjściowych PDF, bezpośredniego rysowania stron, silnej integracji z RAD Studio oraz kompaktowego wdrażania
Komponent obejmuje codzienne generowanie PDF, zaawansowane składanie dokumentów, edycję PDF, wyjście bogate w obrazy, formularze, adnotacje, szyfrowanie, przepływy pracy podpisywania, optymalizację czcionek oraz przepływy pracy oparte na strumieniach z poziomu jednego natywnego interfejsu API
Ostatnie wydania biblioteki rozszerzyły HotPDF z klasycznego edytora PDF do szerszego natywnego zestawu narzędzi PDF, obejmującego bramkowanie funkcji specyficznych dla wersji PDF 1.3 / 1.4 / 1.5 / 1.6 / 1.7, wybrane szyfrowanie PDF 2.0, zgodność ze standardami PDF/A-1 / -2 / -3 + PDF/X-1a / -3 / -4 + PDF/UA-1, podpisy cyfrowe PAdES baseline / extended / long-term-validation, potok podpisywania PFX / PKCS#12 w ramach procesu, który nie zależy od OpenSSL ani zewnętrznych plików binarnych, zapisywanie aktualizacji przyrostowych, tworzenie podzbiorów czcionek CFF / OpenType / CID-keyed CFF oraz adaptery eksportu PDF dla FastReport, QuickReport, ReportBuilder i DevExpress ExpressPrinting, które kierują istniejące raporty przez HotPDF jako pojedynczy backend PDF. Interfejs API Direct File przetwarza wielogigabajtowe pliki PDF z milionami obiektów z pliku do pliku - licznik stron, kopie, przepisywanie informacji o dokumencie oraz szyfrowanie lub deszyfrowanie AES-256 - w kilka sekund, a moduł ładujący odzyskuje teraz również dokumenty opakowane w kontenery transportowe z nieaktualnymi przesunięciami oraz pliki aktualizowane przyrostowo z osieroconymi lub zastąpionymi obiektami
Cykl v2.119.32-51 dodał po stronie producenta kształtowanie znaków arabskich / perskich / urdu (obowiązkowa ligatura LAM-ALEF, 9 liter Arabic Presentation Forms-A), kompletny silnik substytucji OpenType GSUB obejmujący każdy LookupType 1-8 z wyborem Script / LangSys i zamknięciem podzbioru TTF dla glifów zastępczych, obsługę kontenerów XFA (XML Forms Architecture) (AddXFAPacket / ClearXFAPackets / XFAPacketCount), rodzinę wyzwalaczy pól formularza AcroForm /AA /K + /F + /V + /C, rejestrację czcionek multi-Unicode /DR za pomocą RegisterAcroFormFont, ustawienia atrybutów dostępności elementów struktury (/Lang / /E / /T) z wyliczeniem standardowego typu struktury Table 333 i typowanym przeciążeniem AddStructureElement oraz właściwości sekwencji zawartości oznaczonych w BeginTaggedContent
Cykl v2.119.52-68 zamknął automatyczny potok kształtowania Phase 8 i rozszerzył zakres obsługiwanych pism: Arabic Extended-A (w tym U+0750-077F Arabic Supplement oraz U+08A0-08FF Arabic Extended-A) oraz perski / urdu Form-B zostały rozszerzone do pełnej tabeli klas łączenia U+0672-06D5 plus 26 nowych mapowań Forms-A, z późniejszym składaniem dla LAM-ALEF, par YEH-HAMZA + samogłoska (8 ligatur w U+FBEA-FBFB), samodzielnej ligatury Allah (U+FDF2) i 22-kodowej frazy Bismillah (U+FDFD). Nowa opcjonalna właściwość ShapingFeatures + wyliczenie THPDFShapingFeature (sfArabicGSUB / sfStandardLigatures / sfContextualLigatures / sfContextualAlternates / sfIndicShaping) sprawia, że producent automatycznie emituje specyficzne dla czcionki podstawienia rlig / liga / clig / rclt oparte na GSUB, przy czym standardowe ligatury łacińskie (ff / fi / fl / ffi / ffl / ſt / st przez U+FB00-FB06) oraz reorganizacja sylab Devanagari Indic (Repha + pre-base I-matra) dołączają do tego samego potoku. Nowe metody możliwości kształtowania dla pisma syryjskiego (GetSyriacJoiningClass / GetSyriacPosition), mongolskiego (GetMongolianJoiningClass / GetMongolianPosition) oraz Devanagari (GetDevanagariCategory / ApplyDevanagariReorder) pozwalają wywołującym kierować skomplikowane pisma niearabskie przez ten sam silnik GSUB. GetCodepointAdvance udostępnia buforowaną ułamek em /W do obliczeń zawijania, a AssignSyntheticCodepointForGID / GetSyntheticCodepointForGID pozwalają producentowi emitować dowolny glif zastępczy GID z GSUB (kształty klastrów Devanagari, alternatywy stylistyczne, sekwencje wariantów CJK) za pomocą punktów kodowych Private-Use-Area z pełną integracją /CIDToGIDMap + /ToUnicode + /W. Zbiorcza mapa ToUnicode CMap zawiera teraz 35 wpisów odwrotnego mapowania ligatur (8 z rodziny LAM-ALEF + 18 z rodziny YEH-HAMZA + 1 Allah + 1 Bismillah + 7 łacińskich), dzięki czemu kopiowanie/wklejanie w czytniku generuje źródłowe punkty kodowe. Szkielety dokumentacji dla ChangeLog są teraz dostarczane w 11 językach (EN / CN / AR / DE / ES / FR / IT / JA / KO / PT / RU) z interfejsem wyboru języka; limit retencji ChangeLog został zwiększony z 250 do 500 sekcji wersji
Cykl v2.152-v2.190 rozbudował kompletny silnik pozycjonowania OpenType GPOS i rozszerzył zakres obsługi skomplikowanych pism. Opcjonalne opcje kształtowania stosują teraz własny kerning czcionki (parzysty, kontekstowy i od prawej do lewej), rozmieszczanie znaków łączących (znak-do-bazy, znak-do-znaku oraz znak-do-ligatury na komponent), kotwice połączeń pisma łączonego oraz kerning pionowy dla tekstu pionowego, wszystko zapisane jako standardowe operatory tekstowe PDF, dzięki czemu każdy czytnik renderuje ten sam wynik. Kształtowanie po stronie producenta obejmuje teraz pismo arabskie (w tym bloki Supplement, Extended-A i Extended-B), syryjskie, mongolskie, N'Ko, Adlam, Hanifi Rohingya, układanie spółgłosek tybetańskich, Devanagari i inne pisma indyjskie poprzez łańcuch cech Indic czcionki, jawajskie, porządkowanie znaków tajskich i laotańskich, porządkowanie punktów samogłoskowych hebrajskich, khmerskie, birmańskie, Tai Viet oraz Meetei Mayek. Rodzina opcjonalnych funkcji typograficznych OpenType - ligatury standardowe, uznaniowe i historyczne, kapitaliki, cyfry tekstowe / wersalikowe / proporcjonalne / tabelaryczne, indeksy górne, indeksy dolne, liczebniki porządne, ułamki, indeksy dolne naukowe, liczniki, mianowniki, alternatywy stylistyczne i kontekstowe, formy zlokalizowane, formy wrażliwe na wielkość liter, przekreślone zero i alternatywy pionowe - może być stosowana automatycznie podczas wyprowadzania tekstu. Kopiowanie, wklejanie i wyszukiwanie tekstu odzyskują oryginalne znaki we wszystkich kształtowanych danych wyjściowych, w tym w ligaturach i łańcuchowych substytucjach cech. Dane wyjściowe czcionek stały się również mniejsze: osadzone programy czcionek są zawsze kompresowane algorytmem Flate, czcionka używana na kilku stronach jest osadzana raz na dokument, tagi podzbiorów są generowane deterministycznie dla powtarzalnych danych wyjściowych, a opcjonalny tryb kompaktowy zapisuje zwykły tekst ASCII przy użyciu standardowych czcionek jako nieosadzony tekst WinAnsi
HotPDF zawiera specyficzną dla wersji obsługę praktycznych funkcji tworzenia PDF 1.3, PDF 1.4, PDF 1.5, PDF 1.6 i PDF 1.7, używanych przez aplikacje biznesowe, obrazowania, wydawnicze oraz automatyzacji dokumentów. Publiczne interfejsy API są sprawdzane pod kątem wybranej wersji PDF, dzięki czemu generowane pliki unikają nowszych wpisów, gdy wymagana jest ścisła kompatybilność
Bieżąca matryca obejmuje filtry i predyktory, strumienie XRef, łańcuchy aktualizacji przyrostowych, szyfrowanie AES, zabezpieczenia kluczem publicznym, kolory DeviceCMYK i ICCBased, wzorce kafelków, cieniowania osiowe/promieniowe/wielostopniowe, obrazy wbudowane, warstwy, grupy przezroczystości, przejścia stron, adnotacje, widżety AcroForm, zewnętrzne haki podpisywania, metadane XMP, otagowane drzewa struktury PDF, OutputIntents, produkcyjne ramki stron, ViewerPreferences, UserUnit, kolejność Tabs oraz osadzanie/tworzenie podzbiorów czcionek dla czcionek TrueType, Type 3, CFF, OpenType-CFF i CID-keyed CFF
Jest to szeroki zakres obsługi standardów dla obsługiwanego obszaru tworzenia HotPDF, a nie ogólne twierdzenie, że każdy przypadek brzegowy w ISO 32000-1 został zaimplementowany
Używaj znanych projektów, pakietów, strumieni, formularzy i wzorców rysowania Delphi i C++Builder zamiast opakowywać oddzielny silnik PDF
Buduj pliki PDF z formularzami, adnotacjami, warstwami, przezroczystością, przejściami stron, otagowaną strukturą, szyfrowaniem, symbolami zastępczymi podpisów i aktualizacjami przyrostowymi
Zmniejsz rozmiar PDF dzięki kompresji zlib-ng, obrazowaniu libjpeg-turbo, podzbiorom TrueType, podzbiorom OpenType-CFF oraz obsłudze CID-keyed CFF dla dużych czcionek CJK
Poniższe możliwości stanowią wyraźne różnice techniczne dla HotPDF w porównaniu z typowymi komponentami Delphi PDF. Większość konkurencyjnych komponentów komercyjnych albo w ogóle nie ma tych funkcji, albo są one znacznie słabsze w środowisku produkcyjnym. Każdy wiersz odpowiada weryfikowalnej implementacji i publicznemu interfejsowi API wewnątrz biblioteki
Pełny silnik substytucji GSUB obejmujący każdy LookupType 1-8 (Single, Multiple, Alternate, Ligature, Contextual, Chained Contextual, Extension, Reverse Chained Contextual), sparowany z silnikiem pozycjonowania GPOS obejmującym wszystkie 9 LookupTypes (kerning parzysty / pojedynczy / kontekstowy, mark-to-base, mark-to-mark, mark-to-ligature na komponent ligatury, cursive attachment, odległość, pionowe vkrn/vpal). Całe pozycjonowanie jest emitowane za pomocą standardowych operatorów tekstowych PDF, dzięki czemu każdy czytnik renderuje identycznie
Ponad 20 pism kształtowanych po stronie producenta, sterowanych przez własny łańcuch cech GSUB czcionki: arabski (w tym Supplement / Extended-A / Extended-B), syryjski, mongolski, N'Ko, Adlam, Hanifi Rohingya, układanie tybetańskie, Devanagari i rodzina indyjska, jawajski, porządkowanie znaków tajskich / laotańskich, porządkowanie samogłosek hebrajskich, khmerski, birmański, Tai Viet, Meetei Mayek. Dane wyjściowe zawierają pełne odwrotne mapowanie /ToUnicode, dzięki czemu kopiowanie/wklejanie odzyskuje oryginalne punkty kodowe
Rozpakowywanie ASN.1, RSA, AES, PKCS#12 oraz CMS SignedData (RFC 5652) są zaimplementowane wewnątrz HotPDF. SignPDFWithPFX podpisuje zastępczy plik PDF w jednym wywołaniu bez środowiska uruchomieniowego OpenSSL i bez platformowego dostawcy kryptograficznego - cały łańcuch podpisywania znajduje się w Twoim procesie, jest powtarzalny, kontrolowalny i nie wymaga wdrażania żadnych natywnych plików binarnych
Przepływy pracy PAdES B-B, B-T, B-LT i B-LTA są w pełni objęte obsługą: znaczniki czasu RFC 3161, słowniki długoterminowej weryfikacji DSS / VRI, podpisy znaczników czasu dokumentów, ograniczenia wartości początkowych (Seed Value) oraz XAdES-in-PDF. Jest to rygorystyczny wymóg dla podpisów elektronicznych zgodnych z unijnym rozporządzeniem eIDAS, podczas gdy większość konkurencyjnych komponentów kończy na podstawowym podpisywaniu CMS
Niezależne bramkowanie profili dla PDF/A-1/-2/-3, PDF/X-1a/-3/-4 oraz PDF/UA-1 jednocześnie - wywołania niezgodne wywołują wyjątki diagnostyczne zamiast cichego zapisywania niezgodnych plików PDF. CreatePreflightReport generuje raporty tekstowe / JSON / HTML / CSV z profilami INI, wbudowanymi ustawieniami wstępnymi, agregacją wsadową i osadzaniem dowodów XMP, zweryfikowane od początku do końca z veraPDF
Działa na pliku PDF na dysku bez budowania wykresu obiektów w pamięci. Na dokumencie o rozmiarze 2 GB z 1,67 miliona obiektów: szyfrowanie AES-256 ~14 s, deszyfrowanie ~16 s, pełne przepisanie ~6 s; odczytanie liczby stron dokumentu 1,25 GB zajmuje milisekundy. Klasyczne tabele xref, strumienie XRef, pliki o referencjach hybrydowych i dokumenty aktualizowane przyrostowo pozostają na bezpośredniej ścieżce
Czcionki TrueType, OpenType-CFF i CID-keyed CFF mogą być dzielone na podzbiory z zachowaniem identyfikatorów glifów dla tekstu Type0 / Identity-H. Dokumenty CJK, które wcześniej osadzały programy CID-keyed CFF o rozmiarze 14 MB, teraz zajmują od 500 KB do 2 MB bez utraty wyrenderowanych glifów; wbudowane programy czcionek są zawsze kompresowane algorytmem Flate, czcionki wielostronicowe są osadzane raz na dokument, a tagi podzbiorów są deterministyczne w celu uzyskania powtarzalnych wyników
THPDFLogger + globalny HPDFLog oferują przełączalną w czasie rzeczywistym fasadę diagnostyczną: filtrowanie ważności błędów / ostrzeżeń / informacji / debugowania, jednoczesne cele zapisu do pliku + OutputDebugString + konsoli, bezpieczeństwo wątków, pojedyncza kopia zapasowa 10 MB z rotacją, wyłączona szybka ścieżka o zerowym narzucie. Metoda LoadFromFile, raporty weryfikacji wstępnej (preflight) oraz ścieżka awaryjna strumienia obiektów są już powiązane ze strukturalną diagnostyką, którą można przełączać w czasie rzeczywistym bez ponownej kompilacji - możliwość operacyjna, której brakuje większości konkurencyjnych komponentów
Wymienne backendy PDF dla FastReport (TfrxHotPDFExport), QuickReport (TQRHotPDFExportFilter), ReportBuilder (TppHotPDFDevice) i DevExpress ExpressPrinting (obejmujące cxGrid / cxRichEdit / cxScheduler / cxPivotGrid). Istniejące układy raportów nadal działają - zmieniany jest tylko emiter PDF
Są to gotowe i dostarczone możliwości, a nie obietnice na przyszłość. Każdy z powyższych elementów jest zaimplementowany w obecnej bibliotece, kompiluje się bez błędów i przechodzi testy DUnitX oraz weryfikację veraPDF od początku do końca. Oceniając konkurencyjne komponenty, poproś o dowód pełnego pokrycia GSUB/GPOS LookupType, łańcucha PAdES B-LTA działającego w ramach procesu oraz zmierzonej przepustowości szyfrowania wielogigabajtowego
StrictVersionLockRodzina DAOpenFileReadOnly / DACopyFile / DASetDocumentInfo / DASaveAsFile oraz wywołania typu plik-do-pliku EncryptFile / DecryptFile działają bezpośrednio na pliku PDF zamiast budować wykres obiektów w pamięci. Na dokumencie testowym o rozmiarze 2 GB z 1,67 miliona obiektów szyfrowanie AES-256 zajmuje około 14 sekund, deszyfrowanie około 16 sekund, a pełne przepisanie około 6 sekund; otwarcie dokumentu o rozmiarze 1,25 GB w celu pobrania liczby stron zajmuje milisekundy. Klasyczne tabele, strumienie odsyłaczy, pliki referencji hybrydowych i dokumenty aktualizowane przyrostowo pozostają na bezpośredniej ścieżce
CreatePreflightReport oraz CreatePreflightReportWithProfile audytują plik PDF pod kątem obsługiwanych testów PDF/A, PDF/X i PDF/UA i generują raporty tekstowe, JSON, HTML lub CSV, z profilami w stylu INI w celu ukrycia zaakceptowanych ustaleń - gotowe do bramek CI i masowego pobierania dokumentów. Przykładowa aplikacja PreflightCLI dodaje rekurencyjne uruchamianie w folderach i zagregowane pulpity nawigacyjne
HasFormFields i FormFieldExists odpowiadają na pytania dotyczące formularzy we wczytanym pliku PDF przed jego modyfikacją, wartości pól mogą być odczytywane i zapisywane według indeksu lub nazwy, a FlattenFormFields wtapia interaktywne pola AcroForm w zawartość strony i zgłasza, ile pól spłaszczyło - wraz ze spłaszczaniem XFA do AcroForm, które sprawia, że formularze XFA nadają się do użytku w dowolnym czytniku
THotPDF.SignPDFWithPFX(InputPDF, OutputPDF, PFXFile, Password) podpisuje istniejący zastępczy plik PDF w jednym wywołaniu. Pełny stos ASN.1, RSA, AES, PKCS#12 i CMS SignedData (RFC 5652) jest zaimplementowany wewnątrz HotPDF, więc środowisko uruchomieniowe OpenSSL ani platformowy dostawca kryptografii nie są wymagane
Przepływy pracy PAdES B-B, B-T, B-LT i B-LTA są obsługiwane od początku do końca: tworzenie podpisów ze znacznikami czasu RFC 3161, słowniki długoterminowej weryfikacji DSS / VRI, podpisy znaczników czasu dokumentów oraz ograniczenia wartości początkowych (Seed Value). Wymuszanie wartości początkowych podpisów oraz XAdES-in-PDF stanowią część tego samego obszaru
HotPDF bramkuje metody funkcji w stosunku do profili PDF/A-1 / -2 / -3, PDF/X-1a / -3 / -4 oraz PDF/UA-1. Wywołania, które naruszyłyby wybrany profil (przezroczystość w PDF/A-1, JavaScript w PDF/A, zewnętrzne adnotacje w PDF/X, brak tagowania struktury w PDF/UA), zgłaszają wyjątki diagnostyczne zamiast cichego generowania niezgodnych plików PDF
Bezpośrednie backendy PDF dla czterech najpopularniejszych silników raportów Delphi: TfrxHotPDFExport (FastReport 4 / FastReport VCL), TQRHotPDFExportFilter (QuickReport), TppHotPDFDevice (ReportBuilder) oraz dxHotPDFExportReportLinkToFile/Stream (system ExpressPrinting DevExpress obejmujący cxGrid / cxRichEdit / cxScheduler / cxPivotGrid). Istniejące raporty nadal działają - zmieniany jest tylko emiter PDF
Opcjonalne pozycjonowanie tekstu oparte na własnych danych GPOS czcionki: kerning parzysty i kontekstowy dla tekstu od lewej do prawej i od prawej do lewej, pozycjonowanie znak-do-bazy, znak-do-znaku oraz znak na komponent ligatury, wyrównanie wejścia/wyjścia pisma łączonego, pozycjonowanie odległości i pionowy kerning dla czcionek pionowych. Pozycjonowanie jest emitowane za pomocą standardowych operatorów tekstowych PDF, dzięki czemu każdy czytnik PDF renderuje ten sam wynik
Kształtowanie po stronie producenta renderuje poprawnie połączony i uporządkowany tekst dla pisma arabskiego (w tym bloków Supplement, Extended-A i Extended-B), syryjskiego, mongolskiego, N'Ko, Adlam, Hanifi Rohingya, tybetańskiego, Devanagari i innych pism indyjskich, jawajskiego, tajskiego, laotańskiego, hebrajskiego, khmerskiego, birmańskiego, Tai Viet oraz Meetei Mayek bez polegania na shaperze po stronie przeglądarki. Każde pismo jest opcjonalnym przełącznikiem, więc istniejące dane wyjściowe pozostają identyczne pod względem bajtów do momentu włączenia, a kopiowanie/wklejanie odzyskuje oryginalne znaki
Opcjonalne przełączniki kształtowania stosują standardowe, uznaniowe i historyczne ligatury czcionki, kapitaliki, cyfry tekstowe / wersalikowe / proporcjonalne / tabelaryczne, indeksy górne, indeksy dolne, liczebniki porządkowe, ułamki, indeksy dolne naukowe, liczniki, mianowniki, alternatywy stylistyczne i kontekstowe, formy zlokalizowane, formy wrażliwe na wielkość liter, przekreślone zero oraz alternatywy pionowe automatycznie podczas wyprowadzania tekstu, przy czym wyodrębnianie tekstu jest mapowane z powrotem na znaki źródłowe
Osadzone programy czcionek są zawsze kompresowane algorytmem Flate, czcionka używana na kilku stronach jest osadzana raz dla całego dokumentu, a tagi podzbiorów są generowane deterministycznie z faktycznie używanych glifów, dzięki czemu powtarzające się uruchomienia dają identyczne wyniki. Opcjonalny tryb zapisuje zwykły tekst ASCII ze standardowymi czcionkami jako kompaktowy nieosadzony tekst WinAnsi, zmniejszając stronę zwykłego tekstu z setek kilabajtów do zaledwie kilku kilabajtów
Kształtowanie po stronie producenta składa ciągi wejściowe Unicode do ich form prezentacyjnych przed emisją tekstu PDF. Pismo arabskie obejmuje pełną tabelę klas łączenia U+0672-06D5 plus ponad 40 mapowań Forms-A, z automatycznym przebiegiem ligatur dla LAM-ALEF, YEH-HAMZA + samogłoski (U+FBEA-FBFB), Allah (U+FDF2) i Bismillah (U+FDFD). Obszary możliwości dla pisma syryjskiego (GetSyriacJoiningClass), mongolskiego (GetMongolianJoiningClass) oraz Devanagari (GetDevanagariCategory / ApplyDevanagariReorder) pozwalają wywołującym kierować niearabskie skomplikowane pisma przez ten sam silnik GSUB
Opcjonalna właściwość ShapingFeatures + wyliczenie THPDFShapingFeature (sfArabicGSUB / sfCursiveAttachment / sfStandardLigatures / sfContextualLigatures / sfContextualAlternates / sfIndicShaping) podnosi silniki OpenType GSUB i GPOS do poziomu automatycznego potoku po stronie producenta. Natywne arabskie formy init / medi / fina / isol, rlig, calt, rclt, połączenie pisma łączonego GPOS, łacińskie liga / clig oraz reorganizacja Devanagari Indic następują w miarę emitowania tekstu, z pełnym odwrotnym mapowaniem /ToUnicode w celu poprawnego kopiowania/wklejania
Standardowe ligatury łacińskie (ff / fi / fl / ffi / ffl / ſt / st przez U+FB00-FB06) są emitowane automatycznie przez ApplyLatinLigatureRefinement, gdy włączona jest funkcja sfStandardLigatures. Dla substytutów GID w GSUB bez naturalnego punktu kodowego Unicode - kształty klastrów Devanagari, alternatywy stylistyczne, sekwencje wariantów ideograficznych CJK - metoda AssignSyntheticCodepointForGID przydziela punkt kodowy z obszaru Private-Use-Area (U+E000-F8FF) z lustrzaną integracją /CIDToGIDMap + /W + /ToUnicode
Każdy OpenType GSUB LookupType 1-8 (Single, Multiple, Alternate, Ligature, Contextual, Chained Contextual, Extension, Reverse Chained Contextual) jest zaimplementowany jako obszar zapytań służący wyłącznie do sprawdzania możliwości (GetSingleSubstituteGlyph, ApplyLigatureSubstitution, ApplyContextualSubst, ApplyReverseChainedContextualSubst oraz funkcje pomocnicze Multiple / Alternate / Script / LangSys / Feature). Metoda MarkUnicodeGlyphUsed wciąga każdy glif zastępczy do subsettera TTF, dzięki czemu osadzone podzbiory czcionek pozostają samowystarczalne
/DRPakiety kontenerów XFA (PDF 1.7 §12.7.6 / §12.7.8) są przesyłane obok (lub zamiast) statycznych pól /Fields za pomocą AddXFAPacket. Pełna rodzina wyzwalaczy pól formularza AcroForm (/AA /K Keystroke, /F Format, /V Validate, /C Calculate) jest udostępniana jako metody opakowujące, a RegisterAcroFormFont wiąże wiele czcionek Unicode z jednym słownikiem zasobów AcroForm /DR dla wielojęzycznych widżetów formularzy
THotPDF.EnableFontSubsetting tworzy podzbiory czcionek TrueType, OpenType-CFF i CID-keyed CFF, zachowując identyfikatory glifów dla tekstu Type0 / Identity-H. Pliki PDF CJK, które wcześniej osadzały programy CID-keyed CFF o rozmiarze 14 MB, teraz zajmują od 500 KB do 2 MB bez utraty wyrenderowanych glifów
Metody BeginIncrementalUpdate, SaveIncrementalUpdate, MarkDirty oraz interfejsy API symboli zastępczych podpisu obsługują aktualizacje PDF typu append-only i przepływy pracy z wieloma podpisami bez ponownego zapisywania wcześniej podpisanych zakresów bajtów
GetSyriacJoiningClass / GetSyriacPosition), mongolskiego (GetMongolianJoiningClass / GetMongolianPosition), Devanagari (GetDevanagariCategory / ApplyDevanagariReorder) - kierują tym samym silnikiem GSUB dla skomplikowanych pism niearabskichShapingFeatures: sfArabicGSUB stosuje natywne arabskie formy init / medi / fina / isol oraz rlig / calt / rclt w celu emisji specyficznych dla czcionki kontekstowych identyfikatorów glifów, sfCursiveAttachment stosuje kotwice połączeń pisma łączonego GPOS, sfStandardLigatures / sfContextualLigatures emitują łacińskie liga / clig (FB00-FB06: ff / fi / fl / ffi / ffl / ſt / st), a sfIndicShaping reorganizuje klastry Devanagari (Repha + pre-base I-matra) przed emisjąMarkUnicodeGlyphUsed), obsługą formatu Cmap 12 SMP, analizowaniem GDEF, automatyczną emisją ToUnicode CMap z 35 wpisami odwrotnego mapowania ligatur oraz wyszukiwaniem GetUnicodeGlyphForCodepoint dla wywołujących kierujących emisją glif po glifieAssignSyntheticCodepointForGID / GetSyntheticCodepointForGID) pozwala producentom emitować dowolne glify zastępcze GID z GSUB (kształty klastrów Devanagari, warianty stylistyczne, sekwencje wariantów ideograficznych CJK) przez obszar Private Use Area U+E000-F8FF z lustrzaną integracją /CIDToGIDMap + /W. Metoda GetCodepointAdvance udostępnia buforowaną ułamek em /W do obliczeń zawijaniavkrn / vpal stosowany do pionowego wyjścia tekstowegoliga / clig / dlig / hlig, kapitaliki smcp / c2sc, style cyfr onum / lnum / pnum / tnum, sups / subs / ordn / frac / sinf / numr / dnom, alternatywy stylistyczne salt, alternatywy kontekstowe calt / rclt, formy zlokalizowane locl, formy case, przekreślone zero zero oraz alternatywy pionowe vert / vrt2, z łańcuchowymi substytucjami rozwiniętymi z powrotem do tekstu źródłowego w ToUnicode CMap/AA /K Keystroke, /F Format, /V Validate, /C Calculate) z jedną metodą opakowującą na wyzwalacz; rejestracja czcionek multi-Unicode /DR przez RegisterAcroFormFont; obsługa kontenerów XFA (XML Forms Architecture) (PDF 1.7 §12.7.6 / §12.7.8) z AddXFAPacket / ClearXFAPackets / XFAPacketCount oraz bramkami zgodności PDF/A + PDF/X, a także spłaszczanie XFA-do-AcroForm (ApplyXFAAsAcroForm dla surowych bajtów XDP, FlattenLoadedXFA dla osadzonego formularza załadowanego PDF), które zamienia statyczne XFA w natywne pola AcroForm, stylizację i grafikę strony, dzięki czemu formularz pozostaje widoczny i możliwy do wypełnienia w czytnikach bez silnika XFABeginTaggedContent (/Lang / /Alt / /ActualText / /E), ustawienia atrybutów elementów struktury (/Lang / /E / /T), wyliczenie standardowego typu struktury Table 333 (THPDFStandardStructureType) oraz przeciążenie typowane AddStructureElementObecne kompilacje HotPDF używają zlib-ng w trybie zgodnym z zlib dla dołączonego backendu Flate. Strumienie stron, strumienie wbudowanych czcionek, mapy ToUnicode CMap, strumienie obrazów Flate, dane wyjściowe powiązane z TIFF oraz funkcje pomocnicze FlateDecode są kierowane przez warstwę zlib HotPDF
Kompilacje zlib-ng Win64x oraz diagnostyczne MSVC Win64 obejmują dyspacz CPU w czasie rzeczywistym dla ścieżek SSE2, SSSE3, SSE4.1, SSE4.2, PCLMULQDQ i AVX2 z zachowaniem ogólnych ścieżek awaryjnych. Win32 pozostaje przy ogólnym zestawie obiektów OMF zlib-ng przez bcc32c, podczas gdy obiekty Win32 JPEG i TIFF nadal używają klasycznej ścieżki OMF bcc32
Standardowe przepływy pracy JPEG używają dołączonego zestawu obiektów libjpeg-turbo 3.1.90 poprzez zgodny z libjpeg interfejs API udostępniany przez HPDFJpeg.pas. Natywne kompilacje Win32, Win64 i Win64x zawierają teraz odpowiednie zestawy obiektów NASM SIMD, a ten sam natywny backend JPEG jest dostępny dla warstwy integracji TIFF w celu obsługi skompresowanych metodą JPEG plików TIFF
Mostek wykonawczy C w HPDFCLibs.pas rozwiązuje teraz funkcje malloc, free, realloc, calloc, memcpy, memmove i memset przez jedną warstwę skierowaną do Pascala, z 32-bajtowym wyrównaniem alokacji dla natywnych buforów przyjaznych dla SIMD
Repozytorium zawiera skrypty do powtarzalnej kompilacji obiektów: Lib\thirdparty\build-bcc32.bat, Lib\thirdparty\build-bcc64x.bat oraz Lib\thirdparty\build-vc64.bat dla pełnego zestawu natywnych bibliotek C, a także skrypty przeznaczone wyłącznie dla zlib-ng do ukierunkowanej rekompilacji kompresji
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.
Lib: jednostki źródłowe HotPDF, projekty pakietów, statyczne pliki obiektowe oraz wbudowana integracja z zewnętrznymi bibliotekamiDemo\Delphi: przykłady w Delphi dotyczące generowania dokumentów, rysowania, obrazów, ustawień stron, szyfrowania, przepływów pracy łączenia/edycji i innychDemo\C++Builder: przykłady w C++Builder dostosowane do głównych przepływów pracy demonstracyjnych DelphiHtmlHelp: pomoc dotycząca produktu i referencje dla programistów