Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: создать из mysql - html (pdf)  (Прочитано 2029 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн goldskif

  • Автор темы
  • Активист
  • *
  • Сообщений: 527
    • Просмотр профиля
    • Альтернативные проекты
создать из mysql - html (pdf)
« : 16 Марта 2013, 19:50:12 »
В раздумьях я что-то.
Есть огромный форум, отдельные топики которого народ хочет скачать в удобном формате для чтения оффлайн. Но топики в тысячи постов, просто так каждому пользователю открывать - сервер подавится.
Есть какие-нибудь идеи средствами сервера содержимое базы MySQL преобразовать в читабельный HTML или PDF формат и выложить для скачивания.
То есть не формировать по запросу броузера, а по CRONу формировать и писать в виде файла на диск..
Вот какая-то такая задача..
Ubuntu дружелюбная система, но друзей  она, сцуко, выбирает сама...

Оффлайн Yuriy_Y

  • Старожил
  • *
  • Сообщений: 1736
    • Просмотр профиля
    • Новоишимка
Re: создать из mysql - html (pdf)
« Ответ #1 : 16 Марта 2013, 20:11:20 »
Фигасе. Первое, что приходит на ум, написать плагин к движку форума. Надо же, чтоб оформление сохранялось фирменное. Получается, плагин должен вывести на виртуальный ПДФ принтер выбранную ветку форума.
С уважением, Юрий.

Оффлайн Ленивый кот

  • Участник
  • *
  • Сообщений: 165
    • Просмотр профиля
Re: создать из mysql - html (pdf)
« Ответ #2 : 16 Марта 2013, 20:24:39 »
Доброго времени суток.

В своей практике я когда-то использовал комбинацию XML+XSD+XSLT. Т.е. исходные данные поступают в виде XML файла, при этом если для него определена XSD схема (я определял её), то можно сразу же программно проверить содержимое на предмет корректности. В этом же XML файле указывается ссылка на соответствующий ему XSLT, задача которого состоит в том, чтобы на основе исходного XML создать новое представление, нужного формата (XML, HTML, SVG, TXT, PDF, CSV и т.п.). Формат может быть любым, но я для своих нужд генерировал HTML, поскольку этот вариант был наиболее предпочтителен. В составе этого же способа я сразу решал и вопросы локализации, т.к. контент мог отображаться на русском или английском, по желанию юзера.

Для XML можно переназначать ссылки на XSLT файлы, меняя тем самым результат визуального представления контента. Упрощённо говоря, XSLT - это что-то вроде очень навороченного CSS (CSS нервно курит в сторонке).

Если в базе данных сервера контент топиков находится не в формате XML, то и в этом случае его (XML) достаточно просто сгенерировать программно на лету, а далее уже дело техники.

Ну, это всего лишь как вариант... Если станет интересно - могу дать ссылки на рабочие примеры (когда-то упаковывал в это дело плагины для AutoCAD своим пользователям).

С уважением, Андрей
« Последнее редактирование: 16 Марта 2013, 20:35:11 от Ленивый кот »

Оффлайн goldskif

  • Автор темы
  • Активист
  • *
  • Сообщений: 527
    • Просмотр профиля
    • Альтернативные проекты
Re: создать из mysql - html (pdf)
« Ответ #3 : 16 Марта 2013, 20:35:02 »
Не, оформление тут второстепенно. Информация ценнее.
ПО сути, если движок не совсем криво написан, можно из MySQL брать инфу - формировать HTML-файл со встроенным в шапку файлом стилей, тогда внешний вид вроде сохранится при просмотре. Может даже архивировать в ZIP перед записью. Как-то так, наверное.
Ubuntu дружелюбная система, но друзей  она, сцуко, выбирает сама...

Оффлайн Ленивый кот

  • Участник
  • *
  • Сообщений: 165
    • Просмотр профиля
Re: создать из mysql - html (pdf)
« Ответ #4 : 16 Марта 2013, 20:37:22 »
Не, оформление тут второстепенно. Информация ценнее. 
Так и я о том же, главное - это получить данные в формате XML. XSLT "на лету" преобразует данные в читабельный вид (при открытии XML файла в браузере). Кроме того, читать-то вы будете не единички-нолики, как суровые челябинские программисты (я надеюсь)... Кому удобно читать XML-разметку? :)

Получать на выходе сразу HTML - это плохое, не гибкое решение, поскольку в случае необходимости, парсить HTML - это ужас, в то время как работать с XML одно удовольствие. XML позволяет отделить данные от представления, а HTML - это смесь, где всё в куче. XSLT позволяет сделать очень удобный фокус: вы открываете в браузере XML файл, а видите совсем не XML, а сразу оформленный документ (например HTML). Это как тот суслик - мы его не видим, а он есть. :)

Однако, хозяин - барин. На "нет", как говорится, и суда нет :)
« Последнее редактирование: 16 Марта 2013, 20:51:25 от Ленивый кот »

Оффлайн goldskif

  • Автор темы
  • Активист
  • *
  • Сообщений: 527
    • Просмотр профиля
    • Альтернативные проекты
Re: создать из mysql - html (pdf)
« Ответ #5 : 16 Марта 2013, 21:03:50 »
А зачем промежуточное предобразование в XML ? Выгребли из MySQL - дописали HTML и CSS и положили куда надо.
Ubuntu дружелюбная система, но друзей  она, сцуко, выбирает сама...

Оффлайн Ленивый кот

  • Участник
  • *
  • Сообщений: 165
    • Просмотр профиля
Re: создать из mysql - html (pdf)
« Ответ #6 : 16 Марта 2013, 21:14:57 »
А зачем промежуточное предобразование в XML ? Выгребли из MySQL - дописали HTML и CSS и положили куда надо.
А если со временем потребуется изменить формат представления (я не о стилях), либо нужно будет программно обработать данные, либо на их основе сгенерировать новые данные? Генерировать данные на основе HTML достаточно проблематично.

Отделять данные от представления - это годами проверенная общепринятая практике среди программистов. Формат XML создавался именно как простой, универсальный способ хранения/передачи данных. Имея на руках данные в формате XML вы всегда легко сможете на их основе сгенерировать данные иного, нужного вам в конкретной ситуации формата. Сегодня вы можете думать, что вам за глаза хватит HTML, но через какое-то время вдруг окажется, что для каких-то случаев предпочтительней предоставлять информацию в ином виде. Абстрагируя информацию от её представления, вы тем самым заранее смотрите под ноги, чтобы не наступать на грабли.

Программно извлекать информацию из XML несравнимо легче, чем из HTML.
« Последнее редактирование: 16 Марта 2013, 21:18:03 от Ленивый кот »

Оффлайн astrobeglec

  • Активист
  • *
  • Сообщений: 838
  • Самая тяжелая ноша - пророк в извращенном мире...
    • Просмотр профиля
Re: создать из mysql - html (pdf)
« Ответ #7 : 16 Марта 2013, 22:03:18 »
Скорее всего у тебя записи в MySQL хранятся в виде текста сообщения. Значит это работа для Perl скрипта - генеришь шапку, а затем, через DBI тянешь контент из базы...
Я вернулся...

Оффлайн goldskif

  • Автор темы
  • Активист
  • *
  • Сообщений: 527
    • Просмотр профиля
    • Альтернативные проекты
Re: создать из mysql - html (pdf)
« Ответ #8 : 17 Марта 2013, 00:06:15 »
а с другой стороны - в некоторых постах есть аттаченые картинки и не графические файлы. В каком формате тогда лучше сохранять.. ((
Ubuntu дружелюбная система, но друзей  она, сцуко, выбирает сама...

Оффлайн Ленивый кот

  • Участник
  • *
  • Сообщений: 165
    • Просмотр профиля
Re: создать из mysql - html (pdf)
« Ответ #9 : 17 Марта 2013, 00:08:54 »
а с другой стороны - в некоторых постах есть аттаченые картинки и не графические файлы. В каком формате тогда лучше сохранять.. ((
Вообще-то, в составе XML можно хранить и бинарные данные, помимо текстовой информации (если вы не знали).

Оффлайн goldskif

  • Автор темы
  • Активист
  • *
  • Сообщений: 527
    • Просмотр профиля
    • Альтернативные проекты
Re: создать из mysql - html (pdf)
« Ответ #10 : 17 Марта 2013, 00:19:21 »
Пользователю-то в каком формате отдавать. Желательно удобном для чтения. Не в бинарном же.
Ubuntu дружелюбная система, но друзей  она, сцуко, выбирает сама...

Оффлайн astrobeglec

  • Активист
  • *
  • Сообщений: 838
  • Самая тяжелая ноша - пророк в извращенном мире...
    • Просмотр профиля
Re: создать из mysql - html (pdf)
« Ответ #11 : 17 Марта 2013, 00:23:59 »
а с другой стороны - в некоторых постах есть аттаченые картинки и не графические файлы. В каком формате тогда лучше сохранять.. ((

В том же в котором они в БД лежат (если в БД), если нет - то браузерная обработка.

Смотришь БД, по идеи у тебя должна быть таблица с постами, таблица с аттачами, таблицы со структурой форума и данными пользователей. Делаешь Perl скрипт который тебе делает табличку Тема {пользователь-дата/время-сообщение}. Потом тем же Perl формируешь PDF документ.
Я вернулся...

Оффлайн Ленивый кот

  • Участник
  • *
  • Сообщений: 165
    • Просмотр профиля
Re: создать из mysql - html (pdf)
« Ответ #12 : 17 Марта 2013, 09:01:18 »
Пользователю-то в каком формате отдавать. Желательно удобном для чтения. Не в бинарном же.
Я уже подробно объяснял выше, в каком виде отдавать пользователю.

Оффлайн goldskif

  • Автор темы
  • Активист
  • *
  • Сообщений: 527
    • Просмотр профиля
    • Альтернативные проекты
Re: создать из mysql - html (pdf)
« Ответ #13 : 17 Марта 2013, 14:39:07 »
Пользователю-то в каком формате отдавать. Желательно удобном для чтения. Не в бинарном же.
Я уже подробно объяснял выше, в каком виде отдавать пользователю.
В XML ??? И много вы найдете рядовых пользователей, которые будут парсить эту радость?
Ubuntu дружелюбная система, но друзей  она, сцуко, выбирает сама...

Оффлайн Ленивый кот

  • Участник
  • *
  • Сообщений: 165
    • Просмотр профиля
Re: создать из mysql - html (pdf)
« Ответ #14 : 17 Марта 2013, 14:47:31 »
В XML ??? И много вы найдете рядовых пользователей, которые будут парсить эту радость?
Вы очень невнимательно читали то, что я писал выше... Пользователям ничего парсить и не нужно, они открывают XML в браузере и сразу видят оформленный документ.

 

Страница сгенерирована за 0.056 секунд. Запросов: 25.