THotPDF.SubsetLoadedFonts Method
Przepisuje obsługiwane osadzone programy TrueType, OpenType CFF, surowe CFF i Type 1 tak, aby zachowały wyłącznie glify osiągalne z zawartości wczytanego dokumentu
Deklaracja
function SubsetLoadedFonts(
const Options: THPDFLoadedFontSubsetOptions;
out AInfo: THPDFLoadedFontSubsetInfo): Integer; overload;
function SubsetLoadedFonts(
out AInfo: THPDFLoadedFontSubsetInfo): Integer; overload;
Osiągalność
Zawartość strony jest zawsze skanowana, łącznie z operatorami pokazywania tekstu i wyborami fontów lokalnymi względem resource
IncludeFormXObjects rekurencyjnie dołącza wywoływane Form XObjects z dziedziczonymi resource, z wykrywaniem cykli i ograniczoną głębokością zagnieżdżenia
IncludeAnnotationAppearances dołącza wyglądy normal, rollover i down oraz słowniki stanów, a po włączeniu śledzi także Form XObjects używane przez te wyglądy
Każdy kod znaku podąża za swoim zadeklarowanym kodowaniem, następnie za ewentualnym CMap Type0 i CIDToGIDMap, zanim dotrze do stabilnego osadzonego ID glifu; istniejące mapy CID i dane ToUnicode nie są ponownie numerowane
Złożone glify TrueType zachowują rekurencyjne domknięcie komponentów, a warstwy COLR v0 i zależności malowania glifów COLR v1 zachowują każdy przywołany kontur
Proste fonty Type 1 podążają za kodowaniem Standard, WinAnsi, MacRoman lub MacExpert oraz Differences, a następnie przepisują nieużywane CharStrings w danych PFB, binarnych rozdzielonych PDF lub heksadecymalnych PFA bez zmiany układu osadzonego streama
Opcje
| Pole | Domyślnie | Znaczenie |
|---|---|---|
MinimumSavingsBytes | 1 | Minimalna wymagana redukcja zakodowanego streama, zanim kandydat zostanie przyjęty |
EnforceSignaturePermissions | True | Odmowa każdego przepisywania, gdy dokument zawiera pole podpisu |
IncludeFormXObjects | True | Śledzenie wywoływanych zagnieżdżonych Form XObjects |
IncludeAnnotationAppearances | True | Śledzenie streamów wyglądów adnotacji i ich stanów |
Wynik i bezpieczeństwo
Wartością zwracaną jest liczba przepisanych osadzonych programów fontów, a AInfo raportuje pokrycie skanowania, błędy mapowania lub dekodowania, użyte glify, oszczędność bajtów i konsekwencje dla podpisów
Program fontu pozostaje bez zmian bajt po bajcie, gdy dowolny osiągalny kod nie może zostać zmapowany, jego format jest nieobsługiwany, subsetyzacja zawodzi albo zakodowany kandydat nie osiąga progu oszczędności
Przepisywanie Type 1 kończy się bezpieczną odmową przy wielu binarnych segmentach PFB, niemożliwym do sparsowania jawnym kodowaniu prostego fontu, braku żądanego glifu lub nieobsługiwanym układzie CharString; nieznane wersje COLR oraz programy sfnt bez rozrzedzonych tabel konturów również pozostają bez zmian
Wszystkie kandydaci są analizowani przed mutacją, a domyślna polityka podpisów zwraca zero z ustawioną flagą RefusedBySignaturePolicy; jej wyłączenie pozwala na przepisywanie i ustawia SignaturesInvalidated, gdykolwiek zmienia się podpisany dokument
Przykład
var
Info: THPDFLoadedFontSubsetInfo;
begin
PDF.LoadFromFile('input.pdf');
if PDF.SubsetLoadedFonts(Info) > 0 then
PDF.SaveToFile('subset.pdf');
end;