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