Обновление: Как обратиться к точному местоположению в файле PDF? - PullRequest
0 голосов
/ 24 сентября 2018

Может быть, этот вопрос кажется немного странным, но он имеет очень практический вариант использования.

Предположим, что мы выбрали произвольный раздел файла PDF для создания контрольной суммы, такой как выделенный текст (выделенный текст) на следующем снимке экрана:

enter image description here

И затем мы генерируем контрольную сумму из выделенного текста, используя хэш-функцию.Мы доставляем (а не отправляем) весь файл PDF вместе с этой контрольной суммой получателю, так что этот получатель НЕ знает, какой раздел файла PDF был выбран и хеширован. И этот получатель хочет проверить эту контрольную сумму.Таким образом, они должны точно знать, какой раздел файла PDF был выбран и хеширован.Итак, нам нужно найти решение, с помощью которого этот получатель может найти точное положение выделенного и хешированного текста.

Поскольку хеш-функция необратима , вопрос в том, что:

Как этот приемник может найти точно выбранный и хешированный текст в файле PDF?

Например, возможно ли определить точное местоположение и положение выделенного и хешированного текста в файле PDF?(Это очень чувствительно, поскольку даже неправильный символ или пробел может привести к сбою проверки контрольной суммы.)

Есть ли надежный подход для этой задачи?

Примечание 1: Если вопрос недостаточно ясен, пожалуйста, дайте мне знать, чтобы объяснить его более подробно.

Важно: Обратите внимание, что из-за ограниченного пространства,мы можем хранить только значение контрольной суммы плюс некоторые ограниченные данные, которые показывают положение выделенного текста, а это означает, что мы не можем хранить весь выделенный текст .

вариант использования: мы намерены проверить целостность выбранных текстов в документе с помощью верификатора.Контрольная сумма вместе с информацией, относящейся к хешированному тексту, будет храниться в блокчейне, поэтому из-за ограничений хранения в блокчейне (это дорого) мы не можем хранить весь выделенный и хешированный текст в блокчейне, вместо этого мы храним тольконекоторая полезная информация, которая обращается к точному положению выделенного и хешированного текста.Верификатор имеет доступ ко всему документу, однако они не знают, какой раздел документа был хэширован.Они должны знать это, чтобы проверить контрольную сумму.

Предположим, ex.у проверяющего есть сертификат (бумага), он должен доказать, что является владельцем сертификата. Он сканирует сертификат (лучше оцифровывать его в любой формат).Эмитент сертификата выбрал некоторые чувствительные части сертификата (например, информация о владельце и т. Д.) И хэшировал их отдельно в каждом выбранном разделе для генерации контрольной суммы.Когда проверяющий (владелец) доставляет сертификат верификатору, он должен проверить все контрольные суммы.на этом этапе он должен знать, какие части сертификата были хэшированы.Итак, нам нужно прикрепить полезные данные к контрольным суммам, по которым верификатор может находить хешированные разделы.

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

Обновление: Этот вопрос относится к ( БЕСПЛАТНО инструменту для просмотра координат в PDF ), где с помощью инструмента мы сможем найти точные (x, y) координаты выделенного текста.Я еще не уверен, что этот инструмент можно использовать для моего вопроса.

1 Ответ

0 голосов
/ 24 сентября 2018

Обратите внимание, что файл PDF не содержит текст .Он содержит дерево объектов, некоторые из которых являются потоками, которые содержат упрощенный вариант Postscript, содержащий команды , которые сообщают средству визуализации, какие глифы поместить куда (или другие команды для визуализации графикивывод).

Я бы порекомендовал использовать такой инструмент, как mutool из пакета mupdf, чтобы распаковать потоки в небольшом PDF-документе и открыть его в текстовом редакторе, чтобы увидеть, как он выглядит.как.

Поэтому, когда вы выбираете «текст» в рендере, вы подключаетесь к процессу рендерера, который помещает глифы на страницу.Теперь средство визуализации может приложить некоторые усилия для повторного перевода символов в текст, что основывается на (1) наличии таблиц для этого в PDF, (2) предположениях о том, как работает приложение, создавшее PDF (например, оно выложило глифыв том же порядке, что и исходный текст).Если вы хешируете этот повторно переведенный текст, он всегда будет зависеть от метода, использованного средством визуализации для повторного перевода.

Таким образом, ваш вариант использования (для чего бы он ни был полезен) потребует идентичных программ рендеринга дляотправитель и получатель.

С другой стороны, принимая во внимание либо встроенные шрифты, либо идентичные шрифты, рендеринг детерминирован (в частности, в одном и том же рендерере).Поэтому самым простым способом было бы просто записать точный выбор вашей позиции на странице и номер страницы, а затем отправить эту информацию.

Редактировать

ЕслиВы сканируете бумажный документ в первую очередь, и вам нужно отметить несколько прямоугольных областей, выбрать какой-либо формат для изображения, найти точное положение пикселей в прямоугольниках, извлечь пиксели внутри прямоугольника в некоторый определенный формат (например, RGB 8+8 + 8) и хешируем эти данные.Затем передайте положение прямоугольника вместе с хешем.

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

Это потребует архивирования отсканированных изображений (в формате PDF или в любой другой форме).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...