Всем привет.
Есть ли готовое решение под Drupal 7 для конвертации на ходу файлов формата .fb2 в .doc, .txt или другой формат. В общем стоит такая задача:
1. Пользователь создает ноду, в ней загружает файл (.fb2).
2. Далее при просмотре ноды пользователь видит 3 ссылки:
- Скачать .fb2
- Скачать .doc
- Скачать .txt
3. При нажатии на формат отличный от fb2, модуль должен конвертнуть файл fb2 в формат выбранный пользователем и начать загрузку.
Комментарии
Только если класс на пхп.
Не совсем понятен Ваш ответ.
друпал тут никак не связан. надо писать код.
Да это понятно, меня интересует, если ли подобная реализация в модуле. Я понимаю, что нужно будет пилить под себя.
Класс - это такой контейнер с функциями,который выполняет какую-то общую задачу. Я немного перепутал, возможно даже не класс а библиотека- контейнер классов.
Пример - PHPEXCELL
Я тоже раздумывал над какой-то библиотекой. Но пока подходящего варианта не нашел.
Привет,
fb2 по своей сути является XML файлом
http://www.fictionbook.org/index.php/%D0%9E%D0%BF%D0%B8%D1%81%D0%B0%D0%B...
Поискал чуть - но не нашел готового класса для перекодирования в docx или txt. Соответственно нужно будет все писать ручками. А это работа геморойная и долгая Может есть уже готовая какая-то программка конвертер под UNIX . Тогда в PHP можно делать exec (эта программа) и отдавать нужные файлы.
А так готового модуля и даже класса 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.
если писать с нуля то можно регулярками дергать нужные куски информации..я так доставал доки и эксель..Это общирная тема на самом деле..
Ну да, я думал как:
1. Фильтровать все теги с XML.
2. Если там заголовок или под заголовок выделять в .doc жирным.
3. В fb2 есть картинки, но они бинарные (этот этап я думал пока пропустить, сначала хотя б каркас сделать).
я, для разборов xml (и не только)) использую nokogiri
простенький пример разбора с руби.
у вас php - вам разбирать с Xpath.
конвертировать имеет смысл в html5 (for read online), epub, mobi, pdf.
p.s.
это некая онлайн-библиотека получается, в этом случае:
идиотизм от виндовс-озабоченных, офисс-ограниченных, замороженных в развитии нубовплохо)У меня кстати в html (не в чисто html-файлы, а информация выводится в нодах) и реализовано Возможность прочитать у пользователя есть. Но я не пользовался Xpath, всё сам писал.
Я про .doc так как пример написал. Может быть и другой формат. Мне просто хочется сделать возможность скачать и в других форматах. И я, если честно, не до конца понимаю как правильно сделать такой функционал.
надо решить пару вопросов:
когда конвертируем,где конвертируем и где храним результат.
как вижу я:
после сохранения ноды с файлом fb2,
на отдельной (от веб и бд сервера) машине,
храним в файловой системе.
т.е. нет никаких проблем - используйте сторонние сервисы, пока не напишите свой.
как уже не единожды говорили на эту тему - либрусек отличный пример.
однако еще:
подымите для себя инфу - для чего вообще создавался fb2 и чего с ним можно делать,
ознакомьтесь с примером с точки зрения читателя (ибо для писателя там git с md).
При нажатии пользователем ссылки.
Конвертация на сервере и файлы тоже. Что б не забивать сильно место можна удалять неиспользованные файлы через 30 дней.
Я думал почти так же, разница собственно разница только в времени конвертации файла.
С сторонними в принципе проблем думаю не возникнет. Проблема возникает при написании всего процесса конвертации.
Для моих нужд fb2 подходит полностью, потому я его и выбрал как основной формат. За пример спасибо, с точки зрения читателя отлично сделано.
Я немного проще сделал. С fb2 вытягиваю заголовки разделов и разбиваю их структурно по разделу. Пользователь видит все разделы в отдельном блоке и может переключатся между ними. Конечно код не идеален, есть косяки.