Модуль для просмотра PDF-файлов через flash-просмотрщик

Главные вкладки

Аватар пользователя Ромка Ромка 21 августа 2009 в 14:32

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

Интерфейс аплоада файлов на сервер реализован как плагин к Друпальским модулям CCK и FileField, для вывода преобразованного файла на экран используются собственный flash viewer, который при необходимости может быть заменен на любой другой, и модуль для Друпала SWFTools (он не имеет отношения к swftools.org, просто тезка).

Устанавливается и настраивается модуль также как и любой плагин к CCK:

  • активируем модуль на странице admin/build/modules;
  • на странице admin/content/node-type/имя_типа_контента/fields добавляем поле File->Pdf2Swf;
  • в настройках поля можно указать путь к pdf2swf, если он не совпадает с тем что уже задан, и размеры просмотрщика;
  • в Display options нужно выбрать вариант "SWF viewer with pager".

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

ВложениеРазмер
Иконка пакета pdf2swffield.zip16.2 КБ

Комментарии

Аватар пользователя x3 x3 22 августа 2009 в 5:28

Может быть я что-то упустил, но почему бы просто и поставить на сайте ссылку, открывающуюся в новом окне, на этот файл. Пример: http://i.booknik.ru/files/putevoditel.pdf Откройте этот файлик в новом окне. Первое, что нашёл.
Если человек хочет просматривать pdf, пусть установит adobe reader - это как аксиома. Reader к тому имеет интеграцию с Oper, IE, и Firefox, с другими не пробовал. Он бесплатен. Не вижу причину отказываться от него. У меня стоит 9 версия, очень симпатичный. Немного прожорлив к ресурсам, но при современных мощностях компов - это капля в море.

Плюсы этого решения:

1. Не надо устанавливать дополнительные модули

2. Нет конвертации в реальном времени

Эти 2 пункта избавляют сервер от лишней нагрузки, что в случае с друпалом является большим плюсом.

3. Adobe reader бесплатен и стоит почти у всех пользователей. Имеет интеграцию с браузерами. Если пользователь хочет смотреть flash, то он обычно устанавливает adobe flasch player. Тоже самое и с .pdf!

4. При загрузке документа виден индикатор загрузки.

5. При просмотре документа используется уже привычная среда adobe reader'a со множеством полезных и не очень настроек.

6. Простота по сравнению с Вашим решением. Пользователю необходимо лишь установить Adobe reader. Нет reader'a - нет и pdf файлов.

Теперь перейдём к вашему модулю. Сам его пока не устанавливал, лишь посмотрел пример на Вашем сайте.

1. За модуль спасибо, возможно кому-то он понадобится. Старания и потраченное время должны всегда вознаграждаться, пусть даже и банальным СПАСИБО!

2. Я предпочитаю жёсткую компоновку, не люблю, когда документ ездит из стороны в сторону. Хотелось, чтобы вы добавили полосы прокрутки, с ними действительно удобней.

3. При перетаскивании текста вверх нужно, чтобы курсор менял форму на руку, как в adobe reader. Пользователи любят привычные вещи.

4. Единственный плюс Вашего решения (лично моё мнение и только моё) это универсальность, т.к. документы могут просматривать все, даже те, кто не установил adobe reader.

На этом всё!

А теперь маленький вопросик, касающийся этой самой универсальности. Вы сказали, что сам pdf выводится через flash плеер. А теперь вопрос, если пользователь не устанавливал никакие дополнения типа adobe flash player. Может ли он полноценно просматривать этот pdf, как я понял, НЕТ, не может!!!!

Если пользователь установил flash player, то вероятнее всего он установить и adobe reader!

Теперь второй вопросик. Вы сказали, что пользователь кидает pdf файл на сервер и на сервере утилита (скрипт) конвертит его в swf! Теперь на сервере два файла: pdf и swf ? Или первый автоматом удаляется, а то как-то не хорошо, когда на серваке исчезает свободное место.

Буду очень благодарен, если Вы ответите на мой коммент, путём цитирования каждого предложения и дадите ему подробного объяснение. Мне очень интересна Ваша точка зрения.

Аватар пользователя Ромка Ромка 22 августа 2009 в 14:10

Собственно, условие просматривать пдф через флэш было поставлено заказчиком, по этому все преимущества адоб ридера здесь роли не играют.

"x3" wrote:
1. Не надо устанавливать дополнительные модули

"x3" wrote:
2. Нет конвертации в реальном времени

Да это и не проблема вовсе. Само существование модуля дополнительной нагрузки на сервер не создает, ресурсы отъедаются только во время конвертирования, но, по крайней мере в моем случае, таких конвертаций планируется не больше одной в день, а то и меньше, так что проблемы в первых двух пунктах не вижу.

"x3" wrote:
3. Adobe reader бесплатен и стоит почти у всех пользователей. Имеет интеграцию с браузерами. Если пользователь хочет смотреть flash, то он обычно устанавливает adobe flasch player. Тоже самое и с .pdf!

У себя в блоге в описании модуля об этом писал: Adobe Reader есть не у всех, да и выглядит он скучно, а к флешовому проигрывателю можно, при желании, прикрутить множество красивых эффектов.

"x3" wrote:
4. При загрузке документа виден индикатор загрузки.

Здесь тоже есть индикатор, причем можно нарисовать прогресс бар любого вида.

"x3" wrote:
5. При просмотре документа используется уже привычная среда adobe reader'a со множеством полезных и не очень настроек.

Это не всегда нужно. Посмотрите на любой PDF-журнал (например, http://devouti.livejournal.com/), там кроме навигации и зума, обычно, ничего больше не нужно, зато стильный внешний вид имеет важное значение. Понятное дело, текущий просмотрщик, который идет в комплекте с модулем, не идет ни в какое сравнение с тем что я привел тут, но он еще будет дорабатываться, кроме того, любой желающий, умеющий работать с Action-script, легко может разработать свою версию просмотрщика с бриджем и поэтессами.

"x3" wrote:
2. Я предпочитаю жёсткую компоновку, не люблю, когда документ ездит из стороны в сторону. Хотелось, чтобы вы добавили полосы прокрутки, с ними действительно удобней.

3. При перетаскивании текста вверх нужно, чтобы курсор менял форму на руку, как в adobe reader. Пользователи любят привычные вещи.

Это уже вопросы флэш вьюера. Здесь я в первую очередь презентую серверную часть модуля, вьюер пока примитивен и будет дорабатываться (хотя точно не в ближайшее время).

"x3" wrote:
А теперь маленький вопросик, касающийся этой самой универсальности. Вы сказали, что сам pdf выводится через flash плеер. А теперь вопрос, если пользователь не устанавливал никакие дополнения типа adobe flash player. Может ли он полноценно просматривать этот pdf, как я понял, НЕТ, не может!!!!

По заверениям Adobe flash player стоит почти на 100% компьютеров. В отличии от Адоб Ридера.

"x3" wrote:
Если пользователь установил flash player, то вероятнее всего он установить и adobe reader!

Совершенно не факт. Флэш плейер может пригодиться в десятке других случаев, например для просмотра роликов на ютьюбе, по этому вероятность того что он уже установлен в системе гораздо выше, чем вероятность того что в системе есть Ридер. Кроме того, вьюер выводится средствами модуля swftools, который, в свою очередь, для отображения использует SWFObject, который позволит легко и быстро без перезагрузки страницы скачать и установить flash-плейер.

"x3" wrote:
Теперь второй вопросик. Вы сказали, что пользователь кидает pdf файл на сервер и на сервере утилита (скрипт) конвертит его в swf! Теперь на сервере два файла: pdf и swf ? Или первый автоматом удаляется, а то как-то не хорошо, когда на серваке исчезает свободное место.

Ну это уже совсем мелочность какая-то. Да, пдф на сайте остается, но это сделано специально, для того чтобы можно было вывести ссылку на скачивание оригинального файла. При желании можно сделать так, чтобы пдф автоматом удалялся после конвертирования, но я не вижу в этом абсолютно никакого смысла.

Аватар пользователя inc inc 22 августа 2009 в 14:44

Спасибо за реализацию интересной идеи.
Пример http://devouti.livejournal.com/ очень красивый.
Еще понравилось, что у pdf контента отсутствует возможность копирования, что бывает нужно в некоторых случаях.

Аватар пользователя Ромка Ромка 22 августа 2009 в 17:27

"inc" wrote:
Пример http://devouti.livejournal.com/ очень красивый.

Этот пример реализован при помощи сервиса http://issuu.com/, еще есть http://scribd.com, он, на мой взгляд, менее красивый результат выдает. В идеале, хотелось бы разработать инструмент для получения результата аналогичного иссуу.ком с помощью ресурсов локального сервера, без передачи исходного документа третьим сервисам.

Аватар пользователя Ромка Ромка 24 августа 2009 в 10:37

"volzanin" wrote:
нужно попробовать в деле и сравнить с другими.

А есть другие? Я искал и не нашел готовых решений. Ну кроме интеграции с внешними сервисами, что для меня было неприемлемо.

Аватар пользователя devouti devouti 25 августа 2009 в 22:31

Спасибо, что упомянули о нашем журнале:) Это очень приятно!
Когда доработаете "листалку", свисните нам, пожалуйста. (devoutimagazine at gmail.com)

Потому что своими силами у меня получается только то, о чём Вы упомянули, т.е. заливать pdf на сторонний сайт, а затем вставлять код с красивым просмотром на devouti.livejournal.com и на devouti.narod.ru.
А вот на нашем основном сайте devouti.ru, из-за недостатка умения программирования, точнее его отсутствия, пока это не удаётся сделать. А очень хотелось бы))

Доработаете, напишите, плиз:
[,Devou'ti:] | Настасья Щербина

Аватар пользователя Ромка Ромка 26 августа 2009 в 15:08

devouti wrote:
Спасибо, что упомянули о нашем журнале:) Это очень приятно!
Когда доработаете "листалку", свисните нам, пожалуйста. (devoutimagazine at gmail.com)

Потому что своими силами у меня получается только то, о чём Вы упомянули, т.е. заливать pdf на сторонний сайт, а затем вставлять код с красивым просмотром на devouti.livejournal.com и на devouti.narod.ru.
А вот на нашем основном сайте devouti.ru, из-за недостатка умения программирования, точнее его отсутствия, пока это не удаётся сделать. А очень хотелось бы))

Доработаете, напишите, плиз:
[,Devou'ti:] | Настасья Щербина


Обязательно. Сейчас ищу опенсорс листалку, которую можно будет доработать и прикрутить к модулю, пока присматриваюсь к http://www.rubenswieringa.com/blog/flex-book-component-beta. По-моему самое то что надо.

upd. Ух, нашел еще один шикарный пейджфлип движок: http://megazine.mightypirates.de.
upd2.Кстати, буду рад, если найдутся желающие помочь доработать вьюер.

Аватар пользователя x3 x3 25 августа 2009 в 23:16

м-да, что-то нужно делать с сылками, а то дашь просто пример, а тут гляди и владелец придёт.

Аватар пользователя narciruss narciruss 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:
* ==============
* ==============

что делать? Sad

Аватар пользователя Ромка Ромка 13 сентября 2009 в 12:55

У вас swftools на хостинге установлен? Если установлен, то убедитесь, что правильно прописан путь к pdf2swf в свойствах виджета Pdf2SwfField. Если не установлен, то установите.

Аватар пользователя vgoodvin vgoodvin 29 октября 2009 в 12:19

Спасибо. Все работает.
Проблемы возникали только с утилитой pdf2swf. Не конвертировались файлы с русскими символами и/или пробелами в названии.

Аватар пользователя vgoodvin vgoodvin 12 ноября 2009 в 13:19

Если в типе материала кроме поля для pdf есть другие поля для заргузки файлов, то при загрузке вылазит сообщение

* /www.site.com/sites/default/files/videos/Vanilla sky - Umbrella cnt Rihanna.flv -o /www.site.com/sites/default/files/videos/Vanilla sky - Umbrella cnt Rihanna.flv.swf
* pdf2swf output:
* ==============
* ==============

Никакой конвертации не происходит просто вылазит сообщение.

Аватар пользователя alekseyguriev alekseyguriev 6 апреля 2011 в 2:31

Во первых: огромное спасибо Роману за модуль.
Есть пара вопросов, касающихся конфигурации SWF viewer'a. Как в нем можно отрегулировать скорость зума, зум по умолчанию и отступы для прелоадера? С флешем раньше не работал. Заранее спасибо.