пятница, 21 января 2011 г.

Конвертер PDF в HTML. Вариантов море, а нужного нет.

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

Сразу отпали:
  • Утилиты типа Apache PDFBox и Amyuni OCR Module. Все они позволяют извлечь текст, но не сохраняют форматирование
  • Утилиты типа ImageMagick, способные конвертировать PDF в набор JPEG-файлов. Нам нужен текст.
  • Сервисы для конвертации PDF-документов, типа сервиса Adobe, а так же сервисы включения PDF-документов в веб-страниц типа, scribd
  • Adobe Acrobat. Конвертировать PDF в HTML он умеет, а вот программно использовать его не получается.
  • XtremePDFConverter на VCL, способный конвертировать PDF в RTF. Мы его пробовали три года назад. Форматирование при конвертировании сохраняет не плохо, но имелись серьезные проблемы с кодировкой. Например, датские символы не конвертировались. Скачал с сайта текущую демоверсию (3.0.1), проверил - проблема с датскими символами осталась.
Поискал в google "PDF to HTML". Вывалился гигантский список недорогих утилит типа PDF Ripper и IntraPDF. Попробовал несколько штук - у всех качество очень посредственное. Форматирование портится просто чудовищно, некоторые PDF документы вообще не воспринимаются...

Более глубокий поиск дал следующие варианты:
  • pdftohtml - бесплатный конвертер, основанный на старой версии xpdf 2.02. Последняя версия pdftohtml 0.40 датирована 2006 годом. Во многих случаях, эта утилита работает отлично. Но, к сожалению, некоторые PDF-документы ей не по зубам - валится с ошибкой. Движок xpdf уже давно обновился, текущая версия - 3.02pl5 (октябрь 2010 года). Вот только обновлений pdftohtml под нее нет.
  • BCL easy converter. Качество преобразования отличное, документы, на которых pdftohtml вылетает, конвертит на ура. Но цена крайне высока: ~$4000 за серверную лицензию и более $1000 за лицензию разработчика.
  • Компоненты iText и iTextSharp. Они позволяют распарсить PDF документ, и построить в памяти объектную модель документа. Далее, эту модель можно попробовать использовать для создания HTML документа. Правда, готового решения мне не попалось.
  • CrawfordTech's Transforms. Не ясно, что за зверь. Судя по описанию - какой-то универсальный конвертер, позволяющий конвертировать друг в друга форматы Xerox, Postscript, PDF, AFP, PCL и т.д. Надо изучать. Запросил у них демоверсию.
  • ABBYY PDF Transformer 3.0. Конечно, с этим продуктом та же проблема, что с Adobe Acrobat - он не предназначен для использования программным образом. Но у ABBI есть SDK, которое можно попробовать использовать для наших целей. Написал в ABBYY письмо, посмотрим что ответят.
Как видите, 100%-подходящего варианта нет. Остается искать дальше :(

12 комментариев:

  1. Держите меня в курсе дела. Сам мучаюсь :(
    wolfus@wolfus.ru

    ОтветитьУдалить
  2. Появится что интересное - отпишу сюда. Но пока ничего нового нет. С CrawfordTech's Transforms связываться не стали - это не то.

    ОтветитьУдалить
  3. Столкнулись с той-же задачей, если удастся найти решение - отпишите sauron918 )( mail.ru
    Спасибо!

    ОтветитьУдалить
  4. e-PDF To HTML Converter еще адекватно конвертирует
    http://www.e-pdfconverter.com/pdf-to-html/index.html

    ОтветитьУдалить
  5. Спасибо за ссылку. Потестил - действительно очень не плохой конвертер. Отлично сохраняет форматирование, разработчикам респект. Вот только с кодировками наблюдается проблема. Символы с точками наверху превращаются в символы без точек и т.д. пример 1, Пример 2.

    ОтветитьУдалить
  6. Здравствуйте, уважаемый DV. Я сейчас решаю ровно ту же проблему, и наталкиваюсь ровно на те же трудности. Можно узнать, чем всё закончилось, и был ли найден идеальный PDF -> html конвертер?

    ОтветитьУдалить
  7. Добрый день, Алексей. Проблему тогда так толком и не решили. В проекте задействовали pdftohtml - в большинстве случаев его возможностей достаточно. Через некоторое время я же переключился на другие проекты и больше этим вопросом не занимался.

    ОтветитьУдалить
  8. боролся с такой же проблемой.
    и лучшее решение это конвертить в rtf, а с него в html

    ОтветитьУдалить
  9. Больше всего нравится пока что онлайн-сервис http://www.zamzar.com/ но идеального ничего нет :(

    ОтветитьУдалить
  10. Sorry I reply in English, I do not speak Russian and I got here by using google translate. I do not understand why you ruled out Amyuni PDF Creator, since it has an "ExportToHTML" method that preserves formating. The latest version (5.0) even has an "ExportToHTML5" method that preserves vector graphics in the HTML output by using SVG tags.

    ОтветитьУдалить
    Ответы
    1. Hi,
      Sorry, my article is pretty old and I don't remember details at this moment. I had set of sample pdf files from my customer and tried to find converter that is able to convert the files to HTML in more or less proper way. If I remember correctly, there were next files in the set:

      1) http://www.norgesvel.no/FLIB/3093-Veien%20til%20biovarme.pdf

      2) http://www.allfarveg.no/oslo/allfarveg.nsf/0/EE86A7E0E4179A9BC1256F900041057E/$FILE/E39+Nr.2.pdf

      (set was much bigger, but I lost info about other files, sorry).

      I've just tried to download Amyuni PDF Creator, opened first file, executed "PDF Creator Viewer\PDFCreactiveDoc.exe", selected "export to html" ... and got message, that conversion is impossible (?) So I wasn't able to check current version of Amyuni PDF Creator. Most probably I do smth wrong, sorry.

      If you give me instructions how to make conversion properly, I am ready to check conversion again and update info in the article.

      Удалить
  11. Poppler is a PDF rendering library based on the xpdf-3.0 code base.
    https://poppler.freedesktop.org/

    ОтветитьУдалить