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