Новости IT, хостинга
  Android, Apple, Facebook, Google, Linux, Microsoft, Samsung, Twitter, Интернет, Россия, браузеры, обновление ПО, онлайн-сервисы, операционные системы, планшеты, рынок ИТ, сделки, смартфоны, социальные сети, уязвимости  
  новостей: 10378
  комментариев: 2684

Полноценная программа для чтения PDF, написанная целиком на JavaScript


Увидел свет первый работоспособный релиз проекта pdf.js, в рамках которого создано приложение для просмотра PDF-файлов, написанное целиком на JavaScript с использованием технологий HTML5. Код проекта распространяется под лицензией BSD. По заявлению разработчиков в представленной версии им удалось полностью обеспечить корректное отображение PDF-обзора JavaScript-движка Tracemonkey, которое использовалось в качестве эталонного PDF-документа. Протестировать pdf.js в работе можно на данной странице http://andreasgal.github.com/pdf.js/multi_page_viewer.html.

Из особенностей pdf.js можно отметить:
Поддержка масштабирования и навигации по страницам,
Поддержка динамической загрузки шрифтов Type 1 и TrueType;
Решение проблем с качеством отображения элементов страниц, например, отображаются тени для рамок и градиенты;
Попиксельный вывод содержимого;
Возможность вывода диаграмм и графиков;
Реализация навигационного элемента, выполненного в виде столбца с эскизами страниц;
Поддержка работы со сжатыми объектами;
Так как код написан на безопасном высокоуровневом языке, он не подвержен уязвимостям, свойственным бинарным плагинам для просмотра PDF.


С технической стороны, в pdf.js используется своеобразная JIT-компиляция PDF: изначально представленные в файле бинарные массивы преобразуются в потоки байткода PDF, который затем транслируется в JavaScript-представление и выполняется. Сгенерированная на основе PDF JavaScript-программа выводит данные через HTML-тег canvas. При этом транслируемый в JavaScript байткод PDF можно разделить на простой и сложный. Простой код сводится к таким операциям, как "нарисовать кривую" или "вывести текст". Сложный код определяет такие операции, как "заполнение областей с затенением по маске". Усложняет реализацию то, что интегрированные в PDF данные, такие как шрифты и изображения, могут храниться в сжатом или закодированном виде.

К сожалению не обходится и без проблем, таких как трудность реализации поддержки вывода на печать и выделения текста при попиксельном формировании изображения. Кроме того, возможностей canvas недостаточно для полноценного рендеринга PDF. Потенциальным решением является дополнительное задействование SVG, но использование SVG потребляет значительно больше ресурсов. В качестве компромиса изучается вариант с начальной быстрой отрисовкой через canvas, формированим более качественного SVG-варианта в фоне и замещеним canvas-варианта на SVG-вариант, после того как изображение будет готово.

Из планов на будущее отмечается реализация поддержки более качественного пиксельного рендеринга документов, оформленных в соответствии со спецификацией PDF 1.7. Ожидается расширение числа поддерживаемых web-браузеров (в настоящее время разработчики используют ночные сборки Firefox, в других браузерах полная работоспособность пока не гарантируется). Переработка внутренней архитектуры для поддержки технологии WebWorkers для обеспечения параллельного выполнения задач, требующих интенсивных вычислений. Оптимизация отзывчивости интерфейса и создание варианта для встраивания pdf.js в web-приложения.

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


Источник: openent.ru

  6 июля 2011 629
Версия для печати

← предыдущая новость следующая новость →

Мой комментарий
Ваше имя*:
Email:
Комментарий*:
Зарегистрироваться автоматически: Вы будете зарегистрированы на сайте автоматически при добавлении комментария. Обязательно заполните поле Email для этого.
Сумма чисел 7 и 14*:            


Хостеры (2465)
HostDB (35)
Софт (2640)
Железо (993)
Интернет (1435)
Статистика и аналитика (3324)




Отправить сообщение администратору

Сумма чисел 10 и 8*:


Яндекс цитирования
сообщить о неточности