рендеринг PDF на веб-сайт аля Google документы - PullRequest
3 голосов
/ 05 марта 2010

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

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

Кто-нибудь знает, как они это делают?Или из какой-либо библиотеки, которую мы могли бы использовать для получения сопоставимого результата?

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

Заранее благодарим за любую помощь

PS: Java-проект, использующий wicket.

1 Ответ

2 голосов
/ 05 марта 2010

У меня есть несколько предложений, но реализовать это будет непросто.Удачи!

Первый подход:

Сначала используйте библиотеку типа pdf-renderer (https://pdf -renderer.dev.java.net / ) для преобразованияPDF в изображение.Храните эти изображения на вашем сервере или используйте технику кеширования.Преобразование PDF в изображение не сложно.

Затем используйте библиотеку JavaScript Type Select (http://www.typeselect.org/)) для наложения текстовых данных на ваш текст. Этот текст можно выбрать, пока реальный текст все еще находится висходное изображение. Чтобы получить исходный текст, посмотрите следующий подход или сделайте это сами, см. заключение.

Исходный текст затем должен быть наложен на изображение, что является болью.

Второй подход:

Спецификации PDF позволяют связывать текстовую информацию со шрифтом. Большинство документов используют подмножество шрифтов Type-3 или Type-1, которые (часто) используют стандартный набор символов (я думалэто был Unicode, но не уверен) .Если ваш PDF-документ не содержит стандартный набор символов (то есть он определил свой собственный), невозможно узнать, какие символы являются какими глифами (символами) и, следовательно, вы не можете преобразовать втекстовое представление.

Прочитайте документ PDF, прочитайте графические объекты, проанализируйте инструкции (используйте спецификацию PDF для получения дополнительной информации.)в этом процессе) для визуализации текста, преобразования их в HTML.Преобразование HTML может выбирать соответствующие теги (например, <H1> и <p>, но также <b> и <i>) на основе параметров используемых шрифтов (их имен и атрибутов) и инструкций (межбуквенный интервал, межстрочный интервал, size, face) в графических объектах.
Вы можете использовать библиотеку pdf-renderer для чтения и анализа PDF-файлов, а затем самостоятельно кодировать HTML-переводчик.Это непросто и не охватывает все случаи документов PDF.

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

Вывод:

Вы можете выбрать первый подход, второй подход или оба.

Я бы не пошел в направлении оптического распознавания символов (OCR), так как это действительно избыточно в такой проблеме, так каку этого также есть несколько недостатков.Этот подход использует Google.Если есть персонажи, которые не распознаются, обработка выполняется человеком.

Если вы занимаетесь обработкой человека;вы можете использовать только библиотеку Type Select и преобразование PDF в изображение и выполнить OCR самостоятельно, что, вероятно, является самым простым (человек как машина = разумно дешевым, смеется) способом решения проблемы.

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