Я пытаюсь использовать функцию поиска в куче связанных PDF-документов, которые у меня есть, но по какой-то причине, когда я ищу что-то простое, например, "ничего", ничего не появляется.

Вот несколько вещей, которые я узнал, пытаясь понять это:

  1. Если я скопирую текст вставки непосредственно из PDF-файла в окно поиска, он найдет эту строку символов, но ввод с клавиатуры не работает для поиска.

  2. В качестве примера того, как выглядит текст, когда я копирую из PDF-файла в свой браузер или любое приложение для работы с текстом, я скопировал текст, который говорит: «Как сотрудник отдела расчета заработной платы, вам необходимо распознавать и понимать различные процессы, которые происходят в процессе расчета заработной платы. "

  3. Вот как это выглядит, когда я на самом деле копирую и вставляю:

                     

Я не знаю, может быть, это вещь кодирования? Может быть, есть способ открыть PDF-файл таким образом, чтобы он преобразовывал его в тот же текст, который принимается моей клавиатурой, чтобы я мог искать нужный мне текст.

Вся помощь очень ценится!

1 ответ1

3

Все эти «персонажи» находятся в Unicode «Область личного пользования». Вместе со шрифтом, который содержит глифы для этих кодовых точек, он выглядит как обычный текст.

Однако запутывание очень слабое. Давайте посмотрим на  , которое предположительно As . Кодовые точки: \uF041 и \uF073 . По совпадению, «латинская заглавная буква A» имеет \u0041 то время как «латинская строчная буква S» имеет \u0073 .

Вам просто нужно пройти через все кодовые точки и вычесть / добавить 0xF000 для преобразования из / в запутанный текст. Это позволит вам скопировать текст из документа или выполнить поиск текста в документе.

Вот некоторый код JavaScript, который будет декодировать текст:

{
  let source = "                     ";

  let decoded = source.replace(/./g, c => {
    let cc = c.codePointAt(0);
    return cc > 0xF000 ? String.fromCodePoint(cc - 0xF000) : c;
  });

  console.log(decoded);
}

Чтобы пойти другим путем, только для отдельных слов:

{
  let source = "understand";

  let coded = source.replace(/./g, c => String.fromCodePoint(c.codePointAt(0) + 0xF000));

  console.log(coded);
}

Оба фрагмента основаны строго на приведенном примере. Если присутствуют другие кодировки махинаций, код требует дальнейшей корректировки.

Вы можете использовать эти фрагменты в консоли разработчика вашего браузера, обычно доступной через F12.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .