SearchAndReplaceTextInContentEx
Extração, Unicode, edição de conteúdo
Descrição
Substitui todas as ocorrências não sobrepostas da consulta em texto de página suportado, usando faixas exatas de bytes da origem e um mapeamento de fonte verificado
O método preserva o texto vizinho, os ajustes numéricos TJ existentes e a âncora original do texto seguinte; uma substituição vazia exclui apenas os caracteres correspondentes
Todas as ocorrências selecionadas são planejadas e reescritas antes de o conteúdo da página ser confirmado; texto não representável, mapeamentos de fonte incompletos ou uma localização de origem não suportada rejeitam o pedido sem substituir nenhum texto de página selecionado
Sintaxe
Delphi
Function TPDFlib.SearchAndReplaceTextInContentEx(Const Query, Replacement: WideString; Options: TPDFlibSearchOptions; Const PageRange: WideString; ReplacementFontID: Integer): Integer;DLL
Function DLSearchAndReplaceTextInContentEx(InstanceID: Integer; Query: PWideChar; Replacement: PWideChar; Options: Integer; PageRange: PWideChar; ReplacementFontID: Integer): Integer; Stdcall;
Function DLSearchAndReplaceTextInContentExA(InstanceID: Integer; Query: PAnsiChar; Replacement: PAnsiChar; Options: Integer; PageRange: PAnsiChar; ReplacementFontID: Integer): Integer; Stdcall;ActiveX
Function PDFlib::SearchAndReplaceTextInContentEx(Query: WideString; Replacement: WideString; Options: Integer; PageRange: WideString; ReplacementFontID: Integer): Integer;Parâmetros
ReplacementFontID 0 usa a fonte original; um valor positivo deve identificar uma fonte no documento selecionado com uma codificação verificada completa
Uma fonte de substituição é selecionada apenas para os trechos de substituição, e a fonte original é restaurada antes dos sufixos intactos; este método não escolhe nem instala uma fonte automaticamente
Options na DLL e no ActiveX usa as flags de busca como bits 1, 2, 4, 8, 16, 32, 64 e 128 na ordem do enum; soAcrossLines é o bit 16 e não é suportado aqui; bits desconhecidos são rejeitados por essas fachadas
Strings de entrada na DLL A usam a configuração de conversão ANSI para wide da instância; use o ponto de entrada wide para passar Unicode independentemente dessa configuração
Valores retornados
Retorna o número de correspondências substituídas, ou 0 para nenhuma correspondência ou um pedido rejeitado; examine a GetLastUnicodeReplacementDiagnostics para distinguir esses resultados
LastErrorCode 535 reporta entrada inválida ou limites de captura; 537 reporta edição ou codificação não suportada; uma busca válida sem correspondências reporta completed com replacedHits 0
Observações
Os mapeamentos vêm de uma CMap ToUnicode totalmente suportada ou de uma codificação de fonte simples verificada, incluindo nomes de glifo Differences suportados; nenhuma conversão de página de código do sistema ou codificação de glifo adivinhada é usada
Fontes simples devem fornecer PDF Widths, FirstChar e LastChar válidos, ou usar um nome exato de fonte Type1 das quatorze padrão sem Widths; fallback de fonte do sistema e casamento frouxo de nomes não autorizam avanço exato
Herança de UseCMap nomeada, mapeamentos não resolvidos, avanços de fonte Type3, escrita vertical, texto de Form aninhado, caracteres sintéticos, substituições de ActualText, strings transcodificadas, correspondências entre camadas e clusters parciais de ligadura são reportados como não suportados
Um cluster completo de ligadura pode ser substituído quando os bytes originais e o mapeamento Unicode dele são verificados; prefixos e sufixos permanecem na fonte original
As opções de busca mantêm o significado existente delas, incluindo restrições de maiúsculas e minúsculas, palavra inteira, curinga, diacrítico, equivalência canônica e grafema; soAcrossLines e chamadas durante um escopo de API aberto são rejeitadas
O planejamento suporta até 4096 correspondências; snapshots de origem capturados são limitados a 64 MiB por stream e 512 MiB no total, com 64 MiB de registros de localização de origem capturados; o parser de mapeamento de fonte também aplica limites limitados de token e de code space, com totais transacionais de 262144 mapeamentos e 8 Mi unidades de destino UTF-16
Esses limites restringem a captura retida e os dados de planejamento; o carregamento e a renderização de páginas existentes têm alocações próprias, então eles não são uma garantia de pico absoluto de uso de memória
Fluxos de conteúdo e dicionários de recursos compartilhados são copiados para as páginas selecionadas; a seleção do documento é restaurada e listas desatualizadas de blocos de texto devem ser extraídas de novo depois de uma edição bem-sucedida
Esta operação altera o conteúdo da página ativa e não é uma API de apagamento seguro: objetos desanexados ou revisões incrementais anteriores podem reter os bytes originais
Veja também
SearchAndReplaceTextInContent, SearchAndReplaceTextInContentEx, GetLastUnicodeReplacementDiagnostics, SearchText