Swftools и модуль Pdf2SWfField для Друпала

Это устаревший пост, перенесённый из старой версии сайта. Ссылки, примеры кода и другая информация в нём, вероятнее всего, потеряли актуальность.

Заказчику захотелось просматривать на сайте PDF-документы через flash-проигрыватель. Adobe Reader есть не у всех, да и выглядит он скучно, а к флешовому проигрывателю можно, при желании, прикрутить множество красивых эффектов. Ну и, разумеется, руками конвертировать файлы из формата PDF в SWF заказчик не захотел. Поиски готового решения ничего не дали, по этому я написал свой модуль для Друпала, который, используя бесплатный набор утилит swftools, конвертирует закачанный PDF в SWF и выводит его в самописном вьюере.

Модуль представляет из себя плагин к CCK, зависит от FileField и использует для вывода просмотрщика возможности модуля SWFTools (он не имеет никакого отношения к проекту swftools.org). Иными словами, для работы моего модуля нужны все три перечисленных выше модуля. Кроме того, на сервере должна быть установлена последняя версия swftools, я тестировал модуль с swftools 0.9 и глюков с конвертированием данных не обнаружил, за другие версии не ручаюсь. Последнее ограничение означает, что модуль не будет работать на 99,99% виртуальных хостингов. Установка swftools не должна вызвать проблем, особенно если воспользоваться вот этой инструкцией.

Демонстрация работы модуля доступна здесь: http://romka.eu/article/testovyy-dokument-demonstriruyushchiy-vozmozhnosti-modulya-pdf2swf.

Результатом работы серверной части модуля является файл, для просмотра которого у пользователей должен быть установлен Flash Player 9.

Серверная часть, на данный момент, обладает всем тем функционалом, который я изначально задумывал реализовать: после установки модуля администратор в свойствах любого типа контента (admin/content/node-type/имя_типа_контента/fields) может добавить поле File->Pdf2Swf, для каждого создаваемого поля можно указать путь к утилите pdf2swf (она входит в комплект swftools); параметры, использующиеся для вызова утилиты; и размеры flash-просмотрщика, который будет показан пользователям.

После добавления нового поля пользователи сайта смогут закачивать документы в формате PDF, которые автоматически, в реальном времени, будут на сервере конвертироваться в SWF. Очереди операций не поддерживаются (у заказчика не было такой задачи, а у меня времени), по этому обработка одного документа, особенно при низкой скорости соединения, может занять до нескольких минут и пользователи должны быть к этому готовы. У меня конвертирование одного файла размером 18 мегабайт занимает около 30 секунд, к этому времени нужно добавить время на аплоад файла на север. На выходе получается swf-файл, представляющий из себя остановленное на первом кадре слайдшоу из страниц загруженного pdf-документа без каких-либо элементов управления. Этот файл в дальнейшем будет загружаться в просмотрщик, который добавит необходимую навигацию и эффекты.

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

В мыслях есть на основе swftools сделать сервис аналогичный scribd.com (он тоже swftools использует) с парой таких фич, которых там я не нашел, но мне они показались интересными. А еще интегрировать все это добро с AWS и вообще красота получится.