Ромка!eu

  • Отдых
  • Работа
Главная — Блоги — Ромка's blog

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

  • Просмотреть
  • Голоса

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

516
points

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

ВложениеРазмер
pdf2swffield.zip16.2 кб
  • Drupal
  • flash
  • PHP
  • swftools
  • модуль
  • Работа
  • Ромка's blog
  • Quote

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

Anonymous (не проверено) → Чт, 08/27/2009 - 15:59

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

  • ответить
  • quote
  • -29 points

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

Ромка → Пнд, 08/31/2009 - 11:56

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

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

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

  • ответить
  • quote
  • -40 points

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

Anonymous (не проверено) → Пнд, 08/31/2009 - 12:15

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

  • ответить
  • quote
  • -49 points

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

Ромка → Пнд, 08/31/2009 - 13:35

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

  • ответить
  • quote
  • -14 points

Для чайников.

Anonymous (не проверено) → Втр, 09/01/2009 - 19:49

А поле создается где?

  • ответить
  • quote
  • -43 points

Через интерфейс модуля CCK.

Ромка → Чт, 09/03/2009 - 11:37

Через интерфейс модуля CCK. Administer — Content Types — нужный тип контента, например story — Manage Fields — Add Field.

  • ответить
  • quote
  • -33 points

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

Looker (не проверено) → Ср, 02/24/2010 - 10:53

Привет!
Все вроде делаю правильно, но когда начинаю создавать 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.

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

  • ответить
  • quote
  • -34 points

ошибка

Anonymous (не проверено) → Пт, 09/11/2009 - 12:47

вот такая штука вылазит при загрузке 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:
* ==============
* ==============

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

  • ответить
  • quote
  • -29 points

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

Ромка → Пт, 09/11/2009 - 17:46

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

  • ответить
  • quote
  • 1 point

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

Anonymous (не проверено) → Чт, 12/10/2009 - 20:50

Привет, спасиб тебе Ромка:) но тут дело такое:
Создал материал, сохранил (всё успешно), лезу в ноду, а там...
[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)

  • ответить
  • quote
  • -18 points

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

Anonymous (не проверено) → Сб, 02/27/2010 - 10:55

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

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

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

/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

  • ответить
  • quote
  • -6 points

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

Anonymous (не проверено) → Ср, 07/21/2010 - 16:45

Добрый день!

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

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

  • ответить
  • quote
  • 4 points

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

Anonymous → Пт, 11/26/2010 - 18:26

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

  • ответить
  • quote
  • -16 points

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

Антон Ибрагимов → Чт, 12/23/2010 - 13:39

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

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

  • ответить
  • quote
  • -10 points

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

Sora (не проверено) → Втр, 02/22/2011 - 11:38

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

  • ответить
  • quote
  • -15 points

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Доступны HTML теги: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и параграфы переносятся автоматически.
  • Вы можете использовать тэг <code></code> для подсветки синтаксиса программного кода. The supported tag styles are: <foo>, [foo].
  • You may quote other posts using [quote] tags.

Подробнее о форматировании

CAPTCHA
Если вы человек, а не робот, то введите текст с картинки. Если вы робот, то велкам ту майкрософт.ком.

Обо мне

Всем привет!
Меня зовут
Роман Архаров, я профессиональный веб-разработчик, программирую на языках PHP, Python и Action-Script, в работе использую фреймворки Drupal и Django. В этом блоге я размещаю заметки и статьи, связанные с моей работой, отдыхом и другими интересными мне темами.

Похожие заметки

  • Пример разработки плагина для модуля CCK
  • Тестирование модуля "Inner poll"
  • Разработка модуля для Drupal. Часть2
  • Разработка модуля для Drupal. Часть1. Введение
  • Несколько статей о Друпале

Популярные заметки

  • AJAX. Обмен данными между клиентом и сервером, закачка на сервер файлов без перезагрузки страницы при помощи библиотеки jQuery.
  • Темизация Drupal. Часть 1
  • Темизация Drupal. Часть 2. Анатомия темы оформления Drupal
  • Кнопки Home, End и Page Up, Page Down в Mac OS
  • Пример разработки плагина для модуля CCK
  • Разработка модуля для Drupal. Часть1. Введение
  • Авторизация на Drupal-сайте с помощью аккаунта ВКонтакте
  • Разработка сайта на Drupal. Часть 1. Введение.
  • Разработка сайта на Drupal. Часть 4. Пример разработки корпоративного интранет-сайта на Drupal
  • Разработка модуля для Drupal. Часть3. Cron и темизация

Подписка


Последние комментарии

  • Oz → Швабрашвабр2 → слабовато для
  • loan → Вращение изображений при помощи Javascript → answer this topic
  • CopelandLacey33 → Доставка → reply this post
  • vitsss → Авторизация на Drupal-сайте с помощью аккаунта вКонтакте → hostinh nic.ru and vk api
  • dimasikov → Автоматическая "газетная" верстка (верстка в несколько колонок) → Я похожее делал для с этим
  • max2012 → Разработка сайта на Drupal. Часть 2. Архитектура Drupal. → Подвесные потолки Опосля
  • Антон → Темизация Drupal. Часть 4. Темизация Views → Отлично!
  • Itsmypersonal → Зима 2010. Поездка в Тайланд, Индонезию и Сингапур. Часть 2 — Пхукет → Пхукет - да!
  • Sheldon → Перетаскивание ячеек таблицы. Table drag and drop — плагин для jQuery → Здравствуйте! Подскажите
  • Sheldon → Home sheep home → Одна из тех игр в которые

Новые заметки

  • Проба пера в HTML5 + canvas. Эффект ластика
  • Шесть рукопожатий
  • Доклад на DrupalConfMoscow 2011
  • Статусы разных сущностей в Друпале 6
  • Футер, прибитый к низу страницы
  • Путешествие по Перу и Боливии. Часть 2
  • Путешествие по Перу и Боливии. Часть 1
  • Несколько панорам из путешествия по Перу и Боливии
  • Авторизация на Drupal-сайте с помощью аккаунта ВКонтакте
  • Home sheep home

Тэги

dckyiev09 Drupal jquery Боливия Отдых Перу Работа Штуки-дрюки зима 2010 модуль статья темизация
еще тэги

Вход для пользователей

Что такое OpenID?
  • Войти по OpenID
  • Скрыть вход по OpenID
  • Зарегистрироваться
  • Запросить новый пароль

Навигация

  • Exchange rate
  • Vote up/down
  • Переход по внешней ссылке
  • Последние сообщения
  • Фотогалереи

Курсы валют

  • 100 Казахских тенге — 20,1498 (+0.15)
  • 10 Украинских гривен — 37,2360 (+0.27)
  • 10 Китайских юаней — 47,4699 (+0.32)
  • 100 Японских иен — 38,4888 (+0.04)
  • 1 Доллар США — 29,8923 (+0.21)
  • 1 Евро — 39,6282 (+0.15)
  • 10000 Белорусских рублей — 36,1892 (+0.39)
  • 1 Турецкая лира — 16,9602 (-0.06)

10 случайных заметок

  • С Новым Годом!
  • Разработка сайта на Drupal. Часть 4. Пример разработки корпоративного интранет-сайта на Drupal
  • Запустил на сайте новый небольшой сервис "тИЦ и PR одной кнопкой"
  • Перетаскивание строк таблицы. Table drag and drop — плагин для jQuery
  • Несколько статей о Друпале
  • Validation — восхитительный короткометражный фильм
  • О планах
  • Странное поведение Java-script в IE. Один и тот же скрипт в Firefox работает, а в IE – нет.
  • Закончил работу над адаптацией скрипта Fotonotes для Drupal 6
  • Отладка CSS. Расширения Firebug, View formatted Source и Web Developer для Firefox

Случайные фото

Я на
Копенгаген, Кристиания, Граффити 7
Вид на Мраморную церковь с площади Амалиенборг
Я и бамбук
На подходе к Красной поляне...
Еще одно фото замка
Сочи ночью
Автописта
Закат в Гаване
Норвегия, Нордсетер
Собака
Оригинальная дорожная разметка в Гаване
Оденсе
Просто море
Я и кокос... Где то я это уже видел...
Я с местным рональдом
  • Отдых
  • Работа

При использовании материалов с сайта, пожалуйста, ставьте ссылку на источник. E-mail для связи: mne@romka.eu.