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

Submitted by Ромка on Чт, 20/08/2009 - 23:55

Ромка аватар

Заказчику захотелось просматривать на сайте 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-vozmozhnos....

Результатом работы серверной части модуля является файл, для просмотра которого у пользователей должен быть установлен 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 и вообще красота получится.

ВложениеРазмер
Package icon pdf2swffield.zip16.2 KB

16 Comments

Очень интересное решение!

Ромка! Очень все интересно выглядит на Вашем сайте, хотели попробовать у себя на локальном сайте. Установили все модули. А дальше не знаем, что делать ,т.к. в Друпале полные чайники. Не могли бы Вы сделать скринкаст.
.

Ромка аватар

А локальный сервер какой? Тут

А локальный сервер какой? Тут скринкаст не поможет, так как основная фича заключается в том, что в системе должен быть установлен набор утилит swftools и под разные операционки он ставится по разному. Например, в Дебиане и его потомках нужно выполнить команду aptitude install swftools, в винду нужно просто скачать и распаковать утилиты в какую-нибудь папку.

Если swftools установлен, то при создании нового поля нужно заменить путь /usr/local/bin/pdf2swf (по умолчанию по этому пути ставится свфтулс в Юникс системах при установке из исходников) на путь, по которому находится файл pdf2swf.exe.

Больше модулю ничего не требуется, если утилиты установлены, то и модуль будет работать.

Установка под Денвер на Винде.

У нас установлен Denver на Винде. Инсталляция получилась, модули и темы установили осталось запустить Ваш модуль, если получиться будем очень рады.
Просим потому, что пытаемся сделать что-то интересное, а как только выходишь за рамки сайта визитки, сталкиваешься с трудностями на которые часто не находишь ответа. Друпал. ру похоже занимается, только разводом на бабки. Что, очень сильно мешает популяризации Друпал. Ведь можно все делать красиво.
Попытаемся еще раз, если не получиться придется отказаться от Друпал.

Ромка аватар

Скачайте и запустите этот

Скачайте и запустите этот файл: http://swftools.org/swftools-0.9.0.exe, затем, когда будете создавать поле типа pdf2swf, замените в его настройках строчку /usr/local/bin/pdf2swf на c:\Program files\swftools\pdf2swf.exe (или на тот путь, по которому проинсталлируете свфтулс).

Привет! Все вроде делаю

Привет!
Все вроде делаю правильно, но когда начинаю создавать page, выскакивает вот это:
warning: Parameter 1 to theme_pdf2swffield_widget() expected to be a reference, value given in Z:\home\looker\www\includes\theme.inc on line 617.

решение?
спасибо!

ошибка

вот такая штука вылазит при загрузке pdf файла:

* home/u152685/new.velo-travel.ru/www/ --zlib -t --flashversion 9 /home/u152685/new.velo-travel.ru/www/sites/default/files/46.pdf -o /home/u152685/new.velo-travel.ru/www/sites/default/files/46.pdf.swf
* pdf2swf output:
* ==============
* ==============

что делать? =(

Ромка аватар

Swftools какой версии стоит

Swftools какой версии стоит на хостинге? Начало команды какое-то неправильное: "home/u152685/new.velo-travel.ru/www/ --zlib -t --flashversion". Здесь первым делом должен быть указан путь к pdf2swf, то есть должна быть строчка вида: " /usr/bin/pdf2swf --zlib -t --flashversion". Эта настройка задается в настройках виджета CCK.

Не могу вывести swf-ку

Привет, спасиб тебе Ромка:) но тут дело такое:
Создал материал, сохранил (всё успешно), лезу в ноду, а там...
[No player is configured to play a series mixed media files. Check the SWF Tools file handling settings on the configuration page.]
при этом в SWFTools->File handling, напротив любого варианта плеера написано примерно следующее FlowPlayer - Missing flowplayer/FlowPlayerClassic.swf - Download here, как прикрутить туда твою листалку вообще ума не приложу, подсажи плизз
Заранее благодарен.

<<Мож кому-нить пригодится>>
Всё это дело крутится у меня под денвером на локалхосте. упорно не хотело конвертить файлы - поборол так:
в pdfswffield_inc.php внёс изменения:
$output = $doc_root . $file->filepath . ".swf";// by Romka
$output=str_replace("/","\\",$output);//<-------------------- new (for windows only)
$input = $doc_root . $file->filepath;// by Romka
$input=str_replace("/","\\",$input);//<-------------------- new (for windows only)

Здравствуйте, Рома! Все

Здравствуйте, Рома!

Все установил как требует ваше содержание.

Что это может быть после загрузки ПДФ файла:

/usr/local/bin/pdf2swf --zlib -t --flashversion 9 Z:/home/ASTCOMCOMPANY/www/sites/default/files/1_2.PDF -o Z:/home/ASTCOMCOMPANY/www/sites/default/files/1_2.PDF.swf
pdf2swf output:
==============
--0 => NOTICE processing PDF page 1 (792x612:0:0) (move:0:0)
--1 => NOTICE File contains jpeg pictures
--2 => NOTICE File contains pbm pictures
--3 => WARNING Approximating advance value for glyph 223
--4 => NOTICE Writing SWF file Z:/home/ASTCOMCOMPANY/www/sites/default/files/1_2.PDF.swf

документ не листается

Добрый день!

Отличный модуль спс, все установил, файл pdf 5 страниц прикладываю, все гуд загружается и показывает а листать не дает. Показывает только первую страницу.

Подстакжите как исправить

Отличный модуль ! От меня

Отличный модуль !
От меня заказчик потребовал отображение pdf документов во флеш. Переделал ваш модуль для использования вне Drupal. При это возникла одна проблема - при просмотре документа в несколько страниц, страницы постоянно циклически перелистываються ...

Здравствуйте, Роман. При

Здравствуйте, Роман.
При установке данного скрипта, у меня возникли проблемы.
На том месте, где должен быть PDF файл, текст: "You are missing some Flash content that should appear here! Perhaps your browser cannot display it, or maybe it did not initialize correctly."

При путешествии по просторам интерната, обнаружил совет:

1. Go to Site configuration >> SWF tools >> File Handling

2. Set "Default player for a list of mixed media" as FlowPlayer 3.

Все так и сделал, но...

Он не может найти файл "flowplayer-3.0.7.swf". Пробовал качать разные версии этого скрипта, не помогает, в настройках при заливке этого плеера, версию изменял, но увы, запустить Ваш скрипт так и не удалось.

З.Ы. Пробовал менять вид отображения, при смене на "SWF file with pager", совсем ничего нет.

Заранее благодарен.

Развитие проекта

Я правильно понимаю что развитие проекта прекращено?