Конвертор с fb2 на лету (Drupal 7)

Аватар пользователя animan animan 5 ноября 2015 в 21:26

Всем привет.

Есть ли готовое решение под Drupal 7 для конвертации на ходу файлов формата .fb2 в .doc, .txt или другой формат. В общем стоит такая задача:
1. Пользователь создает ноду, в ней загружает файл (.fb2).
2. Далее при просмотре ноды пользователь видит 3 ссылки:
- Скачать .fb2
- Скачать .doc
- Скачать .txt
3. При нажатии на формат отличный от fb2, модуль должен конвертнуть файл fb2 в формат выбранный пользователем и начать загрузку.

Комментарии

Аватар пользователя animan animan 5 ноября 2015 в 23:58

Lotar wrote:
друпал тут никак не связан. надо писать код.

Да это понятно, меня интересует, если ли подобная реализация в модуле. Я понимаю, что нужно будет пилить под себя.

Аватар пользователя dashiwa dashiwa 6 ноября 2015 в 2:19

Класс - это такой контейнер с функциями,который выполняет какую-то общую задачу. Я немного перепутал, возможно даже не класс а библиотека- контейнер классов.
Пример - PHPEXCELL

Аватар пользователя animan animan 6 ноября 2015 в 19:46

dashiwa wrote:
Класс - это такой контейнер с функциями,который выполняет какую-то общую задачу. Я немного перепутал, возможно даже не класс а библиотека- контейнер классов.
Пример - PHPEXCELL

Я тоже раздумывал над какой-то библиотекой. Но пока подходящего варианта не нашел.

Аватар пользователя alexsaab alexsaab 6 ноября 2015 в 11:39

Привет,

fb2 по своей сути является XML файлом

http://www.fictionbook.org/index.php/%D0%9E%D0%BF%D0%B8%D1%81%D0%B0%D0%B...

Поискал чуть - но не нашел готового класса для перекодирования в docx или txt. Соответственно нужно будет все писать ручками. А это работа геморойная и долгая Smile Может есть уже готовая какая-то программка конвертер под UNIX . Тогда в PHP можно делать exec (эта программа) и отдавать нужные файлы. Smile

А так готового модуля и даже класса XML увы - НЕТ.

С ув., Алекс

Аватар пользователя animan animan 6 ноября 2015 в 20:24

alexsaab wrote:
Привет,

fb2 по своей сути является XML файлом

http://www.fictionbook.org/index.php/%D0%9E%D0%BF%D0%B8%D1%81%D0%B0%D0%B...

Поискал чуть - но не нашел готового класса для перекодирования в docx или txt. Соответственно нужно будет все писать ручками. А это работа геморойная и долгая Smile Может есть уже готовая какая-то программка конвертер под UNIX . Тогда в PHP можно делать exec (эта программа) и отдавать нужные файлы. Smile

А так готового модуля и даже класса XML увы - НЕТ.

С ув., Алекс


Верно, и то что fb2 структурирован как XML это очень хорошо. В txt в принципе проблем запихнуть я не вижу (вот пример того что нашел http://www.hashbangcode.com/blog/convert-sitemapxml-file-urllisttxt-file-using-php). А вот з другими форматами сложнее. Хотя под docx вроде есть инструкция по конвертации с xml в docx: https://msdn.microsoft.com/en-us/library/ee840137%28v=office.12%29.aspx. Наверное буду пробовать писать с 0.

Аватар пользователя dashiwa dashiwa 6 ноября 2015 в 20:22

если писать с нуля то можно регулярками дергать нужные куски информации..я так доставал доки и эксель..Это общирная тема на самом деле..

Аватар пользователя animan animan 6 ноября 2015 в 20:31

dashiwa wrote:
если писать с нуля то можно регулярками дергать нужные куски информации..я так доставал доки и эксель..Это общирная тема на самом деле..

Ну да, я думал как:
1. Фильтровать все теги с XML.
2. Если там заголовок или под заголовок выделять в .doc жирным.
3. В fb2 есть картинки, но они бинарные (этот этап я думал пока пропустить, сначала хотя б каркас сделать).

Аватар пользователя multpix multpix 7 ноября 2015 в 14:12

"Maximus_fonar" wrote:
Ну да, я думал как:

я, для разборов xml (и не только)) использую nokogiri
простенький пример разбора с руби.

у вас php - вам разбирать с Xpath.

конвертировать имеет смысл в html5 (for read online), epub, mobi, pdf.

p.s.
это некая онлайн-библиотека получается, в этом случае:

  • входной формат - fb2 (хорошо)
  • выходной формат - doc (идиотизм от виндовс-озабоченных, офисс-ограниченных, замороженных в развитии нубов плохо)
Аватар пользователя animan animan 7 ноября 2015 в 20:54

multpix wrote:
"Maximus_fonar" wrote:
Ну да, я думал как:

я, для разборов xml (и не только)) использую nokogiri
простенький пример разбора с руби.

у вас php - вам разбирать с Xpath.

конвертировать имеет смысл в html5 (for read online), epub, mobi, pdf.

p.s.
это некая онлайн-библиотека получается, в этом случае:

  • входной формат - fb2 (хорошо)
  • выходной формат - doc (идиотизм от виндовс-озабоченных, офисс-ограниченных, замороженных в развитии нубов плохо)


У меня кстати в html (не в чисто html-файлы, а информация выводится в нодах) и реализовано Smile Возможность прочитать у пользователя есть. Но я не пользовался Xpath, всё сам писал.

Я про .doc так как пример написал. Может быть и другой формат. Мне просто хочется сделать возможность скачать и в других форматах. И я, если честно, не до конца понимаю как правильно сделать такой функционал.

Аватар пользователя multpix multpix 8 ноября 2015 в 12:57

надо решить пару вопросов:
когда конвертируем,где конвертируем и где храним результат.

как вижу я:
после сохранения ноды с файлом fb2,
на отдельной (от веб и бд сервера) машине,
храним в файловой системе.

т.е. нет никаких проблем - используйте сторонние сервисы, пока не напишите свой.

как уже не единожды говорили на эту тему - либрусек отличный пример.

однако еще:
подымите для себя инфу - для чего вообще создавался fb2 и чего с ним можно делать,
ознакомьтесь с примером с точки зрения читателя (ибо для писателя там git с md).

Аватар пользователя animan animan 9 ноября 2015 в 20:14

multpix wrote:
когда конвертируем

При нажатии пользователем ссылки.

multpix wrote:
где конвертируем и где храним результат

Конвертация на сервере и файлы тоже. Что б не забивать сильно место можна удалять неиспользованные файлы через 30 дней.

multpix wrote:
как вижу я:
после сохранения ноды с файлом fb2,
на отдельной (от веб и бд сервера) машине,
храним в файловой системе.

Я думал почти так же, разница собственно разница только в времени конвертации файла.

multpix wrote:

нет никаких проблем - используйте сторонние сервисы, пока не напишите свой.

С сторонними в принципе проблем думаю не возникнет. Проблема возникает при написании всего процесса конвертации.

multpix wrote:
однако еще:
подымите для себя инфу - для чего вообще создавался fb2 и чего с ним можно делать,
ознакомьтесь с примером с точки зрения читателя (ибо для писателя там git с md).

Для моих нужд fb2 подходит полностью, потому я его и выбрал как основной формат. За пример спасибо, с точки зрения читателя отлично сделано.

Я немного проще сделал. С fb2 вытягиваю заголовки разделов и разбиваю их структурно по разделу. Пользователь видит все разделы в отдельном блоке и может переключатся между ними. Конечно код не идеален, есть косяки.