PDF-вьювер на HTML5

11 январь, 2013 - 11:13Игорь Дериев

Не так давно писал о даже более амбициозном, но пока все-таки чисто исследовательском проекте. В данном же случае все гораздо ближе к реальности.

Mozilla, как очевидный правопреемник Netscape, похоже, не на шутку взялась за продвижение JavaScript. Сообщения о каких-то достижениях в этом благородном деле мелькают довольно часто, а вот и очередное: в текущую бета-версию Firefox встроено средство просмотра PDF, реализованное исключительно средствами HTML5/JavaScript. В основе лежит проект pdf.js, также развиваемый под эгидой Mozilla.

Это довольно важный (неигровой) пример, подтверждающий потенциал HTML5/JavaScript. Аргументы Mozilla также вполне убедительны: открытый код, тем более существенно облегченный (т.к. плагины от Adobe и пр. вынужденно реализуют многие функции, уже присутствующие в браузере), будет более надежным и безопасным. Кроме того, HTML-представление естественно для браузера, т.е. с ним смогут работать другие плагины и функции (к примеру, перевод текста). Наконец, немаловажно, что решение на HTML5/JavaScript может использоваться на различных (в том числе, мобильных) платформах и в других браузерах.

Идея взять рендеринг PDF в свои руки пришла к Mozilla не к первой. Google уже давно использует собственное средство просмотра в Chrome. Но оно реализовано с помощью NaCl, который не нашел поддержки на стороне, и все-равно фактически в виде плагина. Пуристский подход Mozilla для Веба более предпочтителен. К тому же, хотя NaCl, кроме всего прочего, призван улучшать производительность веб-приложений, визуально Chrome обрабатывает PDF не быстрее, чем Firefox с pdf.js. И оба решения несколько уступают (опять же, визуально) оригинальному плагину от Adobe. Но JavaScript, как известно, сегодня находится на пике прогресса, так что со временем разница может и вовсе стереться.

PDF-вьювер на HTML5

На сегодняшний день pdf.js уже рендерит довольно сложные документы. На скриншоте он сообщает о возможных проблемах с конкретным PDF, но при беглом просмотре явные ошибки не обнаружились. Для бета-версии - неплохо.