SearchAndReplaceTextInContent

Извлечение, Unicode, редактирование содержимого

Описание

Заменяет каждое непересекающееся вхождение запроса в поддерживаемом тексте страницы, используя точные диапазоны исходных байтов и проверенное отображение шрифта

Метод сохраняет окружающий текст, существующие числовые корректировки TJ и исходный якорь последующего текста; пустая замена удаляет только совпавшие символы

Все выбранные совпадения планируются и перезаписываются до фиксации содержимого страницы; непредставимый текст, неполные отображения шрифта или неподдерживаемое исходное расположение отклоняют запрос, не заменяя ни одного символа выбранного текста страницы

Синтаксис

Delphi

Function TPDFlib.SearchAndReplaceTextInContent(Const Query, Replacement: WideString; Options: TPDFlibSearchOptions; Const PageRange: WideString): Integer;

Параметры

Query должен быть непустым; Replacement может быть пустым; PageRange использует существующий синтаксис диапазонов страниц, а пустой диапазон выбирает все страницы

Эта точка входа делегирует в SearchAndReplaceTextInContentEx с ReplacementFontID 0, поэтому замена использует проверенный исходный шрифт

Возвращаемые значения

Возвращает число заменённых совпадений или 0 при их отсутствии либо отклонённом запросе; чтобы различить эти исходы, проверьте GetLastUnicodeReplacementDiagnostics

LastErrorCode 535 сообщает о недопустимом входе или лимитах захвата; 537 — о неподдерживаемом редактировании или кодировке; корректный поиск без совпадений завершается со статусом completed и replacedHits 0

Примечания

Отображения берутся из полностью поддерживаемой ToUnicode CMap или проверенной кодировки простого шрифта, включая поддерживаемые имена глифов Differences; никакое преобразование системных кодовых страниц и никакая угаданная кодировка глифов не используются

Наследование через именованный UseCMap, неразрешённые отображения, продвижения шрифтов Type3, вертикальный текст, вложенный текст Form, синтетические символы, замены ActualText, транскодированные строки, совпадения через границы слоёв и частичные кластеры лигатур сообщаются как неподдерживаемые

Полный кластер лигатуры может быть заменён, когда его исходные байты и Unicode-отображение проверены; префиксы и суффиксы остаются в исходном шрифте

Опции поиска сохраняют прежний смысл, включая регистр, целые слова, подстановочные знаки, диакритику, каноническую эквивалентность и ограничения по графемам; soAcrossLines и вызовы внутри открытой области API отклоняются

Планирование поддерживает до 4096 совпадений; захваченные снимки источника ограничены 64 МиБ на поток и 512 МиБ суммарно, плюс 64 МиБ записей о расположении в источнике; парсер отображения шрифта также применяет ограниченные лимиты токенов и code-space с суммами по транзакции 262144 отображений и 8 млн единиц UTF-16

Эти лимиты ограничивают удерживаемые данные захвата и планирования; существующие загрузка и рендеринг страниц имеют собственные выделения памяти, поэтому гарантий абсолютного пика потребления они не дают

Общие потоки содержимого и словари ресурсов копируются для выбранных страниц; выбор документа восстанавливается, а устаревшие списки текстовых блоков после успешной правки нужно извлекать заново

Операция меняет активное содержимое страницы и не является API безопасного стирания: отсоединённые объекты или прежние инкрементальные ревизии могут удерживать исходные байты

См. также

SearchAndReplaceTextInContent, SearchAndReplaceTextInContentEx, GetLastUnicodeReplacementDiagnostics, SearchText