PurgeUnusedResources

Manipulação de documentos, Otimização

Descrição

Varre as camadas de conteúdo da página selecionada e suas dependências de recursos transitivas e, então, remove recursos nomeados não referenciados no escopo de recursos aplicável

As opções padrão recorrem em Form XObjects, tiling patterns, glifos Type 3, aparências de anotações e grupos de soft-mask, retêm espaços de cor referenciados por imagens e outros recursos, removem arrays /ProcSet obsoletos e categorias de recursos vazias e coletam objetos indiretos tornados inalcançáveis pela limpeza

Sintaxe

Delphi

Function TPDFlib.PurgeUnusedResources(Const PageRange: WideString= '';
  Options: Integer= PDF_RESOURCE_PURGE_DEFAULT): Integer; Overload;
Function TPDFlib.PurgeUnusedResources(Const PageRange: WideString;
  Options: Integer; Out Stats: TPDFlibResourcePurgeStats): Integer; Overload;

Parâmetros

PageRangeUma faixa de páginas com base 1 usando a mesma sintaxe das outras APIs de faixa de páginas, ou uma string vazia para todas as páginas
OptionsUma combinação bit a bit das constantes de opção de purga de recursos
StatsRecebe contadores de varredura, segurança, remoção e objetos órfãos

Opções

PDF_RESOURCE_PURGE_RECURSE_FORMSVarre Form XObjects referenciados e respeita seu próprio escopo de recursos ou o herdado
PDF_RESOURCE_PURGE_REMOVE_PROCSETRemove arrays /ProcSet obsoletos
PDF_RESOURCE_PURGE_REMOVE_EMPTYRemove dicionários de categorias de recursos vazios
PDF_RESOURCE_PURGE_AGGRESSIVE_UNKNOWNPermite a limpeza quando um stream de conteúdo contém um operador desconhecido
PDF_RESOURCE_PURGE_DRY_RUNRelata entradas nomeadas removíveis sem mutar o documento
PDF_RESOURCE_PURGE_GARBAGE_COLLECTColeta objetos indiretos tornados inalcançáveis depois da limpeza viva
PDF_RESOURCE_PURGE_RECURSE_PATTERNSVarre o conteúdo e o escopo de recursos independente de tiling patterns referenciados
PDF_RESOURCE_PURGE_RECURSE_TYPE3Varre cada stream CharProc em fontes Type 3 referenciadas usando o escopo de recursos da fonte
PDF_RESOURCE_PURGE_RECURSE_APPEARANCESVarre streams de aparência de anotações normal, rollover, down e de estado nomeado
PDF_RESOURCE_PURGE_RECURSE_SOFT_MASKSVarre streams de grupos de transparência referenciados por dicionários de soft-mask de ExtGState
PDF_RESOURCE_PURGE_SCAN_IMAGE_DEPENDENCIESInspeciona image XObjects, máscaras explícitas, soft-mask images e imagens alternativas em busca de dependências aninhadas
PDF_RESOURCE_PURGE_RECURSE_DEPENDENCIESCombina análise de dependências de pattern, Type 3, aparência, soft-mask e imagem
PDF_RESOURCE_PURGE_DEFAULTCombina toda análise de dependências, recursão de Form, remoção de ProcSet, remoção de categorias vazias e coleta de lixo

Valores retornados

Limpeza vivaO número de entradas de recursos nomeadas removidas
Dry runO número de entradas de recursos nomeadas que podem ser removidas
0Nenhuma entrada nomeada removível, nenhuma página selecionada ou nenhum documento carregado

Observações

A varredura reconhece referências Font, XObject, ExtGState, ColorSpace, Pattern, Shading e Properties, incluindo espaços de cor personalizados em dicionários de imagens inline e dependências indiretas carregadas por objetos de recursos

O closure de dependências cobre espaços de cor de imagens e shadings, bases Indexed, alternates Separation e DeviceN, espaços subjacentes de Pattern, alternates ICCBased, conteúdo de tiling patterns, todos os CharProcs Type 3, estados de aparência de anotações, grupos de soft-mask de ExtGState, máscaras de imagem, soft-mask images e imagens alternativas

Nomes PDF são correspondidos com distinção de maiúsculas e todas as camadas de conteúdo de cada página selecionada são combinadas antes da limpeza

Streams malformados e operadores desconhecidos preservam seu escopo de recursos completo, a menos que PDF_RESOURCE_PURGE_AGGRESSIVE_UNKNOWN esteja definido

Dicionários de recursos compartilhados e herdados são copiados antes da mutação, então a limpeza permanece local à página, Form, pattern, fonte Type 3, aparência ou grupo de soft-mask selecionado

Streams repetidos e entradas de dependências reutilizam resultados de análise em cache, enquanto limites de profundidade e rastreamento de streams ativos terminam ciclos de recursos malformados

O cancelamento está disponível por meio de Abort a partir de um manipulador OnProgress

Exemplo

var
  Stats: TPDFlibResourcePurgeStats;
  Removed: Integer;
begin
  Removed:= PDF.PurgeUnusedResources('1-20',
    PDF_RESOURCE_PURGE_DEFAULT, Stats);
  PDF.SaveToFile('optimised.pdf');
end;

Veja também

TPDFlibResourcePurgeStats, GarbageCollectObjects, OnProgress, Abort