THotPDF.SubsetLoadedFonts Method

Riscrive i programmi TrueType, OpenType CFF, CFF grezzi e Type 1 incorporati supportati, così da conservare solo i glifi raggiungibili dal contenuto del documento caricato

Dichiarazione

function SubsetLoadedFonts(
    const Options: THPDFLoadedFontSubsetOptions;
    out AInfo: THPDFLoadedFontSubsetInfo): Integer; overload;
function SubsetLoadedFonts(
    out AInfo: THPDFLoadedFontSubsetInfo): Integer; overload;

Raggiungibilità

Il contenuto di pagina viene sempre analizzato, inclusi gli operatori di visualizzazione del testo e le selezioni font locali alla risorsa

IncludeFormXObjects include ricorsivamente i Form XObjects invocati con le risorse ereditate, con rilevamento dei cicli e una profondità di annidamento limitata

IncludeAnnotationAppearances include le appearance normal, rollover e down oltre ai dizionari di stato, e quando è abilitato segue anche i Form XObjects usati da quelle appearance

Ogni codice carattere segue la propria encoding dichiarata, poi l'eventuale CMap Type0 e CIDToGIDMap, prima di arrivare al glyph ID incorporato stabile; le mappe CID esistenti e i dati ToUnicode non vengono rinumerati

I glifi compositi TrueType conservano la chiusura ricorsiva delle componenti, mentre i layer COLR v0 e le dipendenze paint dei glifi COLR v1 conservano ogni outline referenziato

I font semplici Type 1 seguono le encoding Standard, WinAnsi, MacRoman o MacExpert più Differences, poi riscrivono i CharStrings inutilizzati in dati PFB, binari spezzati PDF o PFA esadecimali senza cambiare il layout dello stream incorporato

Opzioni

CampoDefaultSignificato
MinimumSavingsBytes1Riduzione minima dello stream codificato richiesta perché un candidato venga adottato
EnforceSignaturePermissionsTrueRifiuta qualunque riscrittura quando il documento contiene un campo firma
IncludeFormXObjectsTrueSegue i Form XObjects annidati invocati
IncludeAnnotationAppearancesTrueSegue gli stream e gli stati delle appearance delle annotazioni

Risultato e sicurezza

Il valore restituito è il numero di programmi font incorporati riscritti, mentre AInfo riporta copertura della scansione, fallimenti di mapping o decodifica, glifi usati, byte risparmiati e conseguenze sulle firme

Un programma font resta identico byte per byte quando un codice raggiungibile non è mappabile, il suo formato non è supportato, il subsetting fallisce o il candidato codificato non raggiunge la soglia di risparmio

La riscrittura Type 1 fallisce in modo sicuro con più segmenti binari PFB, una encoding esplicita di font semplice non analizzabile, un nome di glifo richiesto mancante o un layout CharString non supportato; versioni COLR sconosciute e programmi sfnt privi di tabelle outline sparse restano anch'essi invariati

Tutti i candidati vengono analizzati prima della modifica, e la policy firme predefinita restituisce zero con RefusedBySignaturePolicy impostato; disabilitare la policy consente la riscrittura e imposta SignaturesInvalidated ogni volta che un documento firmato cambia

Esempio

var
  Info: THPDFLoadedFontSubsetInfo;
begin
  PDF.LoadFromFile('input.pdf');
  if PDF.SubsetLoadedFonts(Info) > 0 then
    PDF.SaveToFile('subset.pdf');
end;

Ottimizzazione di risorse e immagini