Причина банальная: высокая сложность для автоматического формирования файла PDF в нужном нам виде. Есть множество программ-генераторов, но мы не нашли ни одной, которая бы создавала файлы в приемлемом виде прямо из HTML. Приходилось вручную создавать и сопровождать файлы в формате DOC из которых уже и создавался PDF-файл.
[spoiler]
Этот процесс был крайне трудоёмким. После исправления даже одной запятой в курсе приходилось выполнять довольно много действий, чтобы данное изменение оказалось в файле формата PDF.
А вот в CHM нам удалось сделать полуавтоматическую генерацию. Вот именно потому что эта процедура "полуавтоматическая", то мы и не стали включать её в продукт как штатный функционал.
Причина тоже проста: если для Windows хостингов можно использовать штатную майкрософтовскую программулинку, то для Linux'a, увы, есть сложности:
- программы есть, но их надо еще тестировать насколько они корректно формируют CHM файлы (трудоёмко);
- вряд ли эти программы присутствуют на хостингах и не каждый хостинг позволяет запускать внешние программы.
Создаёте раздел, скажем /generator на вашем сайте с доступом только для тех, кому нужно и размещаете в этом разделе файлы с архива. После этого по пути ваш_сайт/generator/index.php откроется страница со списком курсов на вашем проекте. У нас она выглядит так:
Пользователь отмечает нужные курсы и нажимает кнопочку Сгенерировать архив для CHM (в конце списка). (Придётся подождать, если курсов много. Кроме того, при больших объёмах возможны проблемы с генерацией, связанные с ограничениями хостинга.) Затем скачивает на локальные компьютер полученный архив и распаковывает их.
На локальном компьютере должна быть установлена программа
В распакованном архиве есть файл run.bat, который и нужно запустить. Если путь к HTML Help Workshop указан правильно, то пользователю нужно только созерцать процесс создания файлов CHM:
В итоге имеем готовые к использованию файлы:
В генераторе, при необходимости, можно поменять временную папку, где формируются архивы ($destFolder) и конечную папку, куда они складываются ($destArchiveFolder).
Внимание! Нельзя до окончания загрузки архивов формировать новые! Проблема в том, что используется одна и та же временная папка при генерации, поэтому нельзя генерировать параллельно. Хотя, это можно решить, каждый раз создавая рэндомную подпапку и очищая ее после завершения генерации. Но это уже сами, если нужно.
Ведь все курсы есть на сайте
И если это для того, чтобы их можно было скачать на локальный компьютер, то лучше и проще дать линки на готовые chm, как тут
Или \то для курсов, созданных разработчиками?
Роберт, объясните пожалуйста.
Роберту огромное спасибо - сможем попробовать "полуавтоматизировать" выгрузку документации теперь и из учебных курсов.
На Битриксе сделано достаточно много образовательных проектов. Им это может пригодиться.
А для тех, кто хочет изучать курсы Битрикса, то для них будут простые ссылки, как вы и говорите.
1) скрипт в вин-1251 кодировке. Пришлось перекодировать в УТФ-8 для себя.
2) у меня, кстати, архив не скачивался. Создался в корне, потом руками пришлось его архивировать и скачивать.
3) Поскольку я сменил кодировку скирпта на УТФ8, то формально файлы получили УТФ8 кодировку, но фактически 1251. Т.е. пришлось их обратно в 1251 перекодировать ручками уже после скачивания...
=(
А вот карту (которая в XML, как я понимаю) перекодировать не удалось - там кодировка менялась посимвольно похоже, так что пункты превратились в полную ахинею.
При желании конечно можно ручками с сайта всё продублировать, но это уже не комильфо...
А так за 39уе можно было б и купить для коммерческого использования, без проблем...
Это пример для bsm.hhk. Т.е. его кодируй перекодируй - уже ничего не сделаешь.
Я предполагаю, что причина в УТФ-8 кодировке сайта (пробовал запускать ваш скрипт в УТФ8 и первичной ВИН1251 кодировке - результат одинаковый).
Я весьма удивлён.
=)
Решение возможно такое: импортировать штатными механизмами курс с сайта на локальную установку, которая должна быть в 1251.
Потом с этой установки скачать архив для генерации CHM.
Завтра попробую )))
очень полезный скрипт!
необходимые измененя для utf8:
1.
if ( ! ($arCourse = $rsCourse->Fetch()) )
throw new Exception();
/**/добавлено
if (0==0)
{$arCourse['NAME']=utf8win1251($arCourse['NAME']);
//echo $arCourse['NAME'];
}
/**/
2.
public function processItem($arItem, $itemNum)
{/*добавлено*/
if (0==0)
{$arItem['~NAME']=utf8win1251($arItem['~NAME']);
echo "1".$arItem['~NAME'];
}
3. находим charset=windows-1251, заменяем windows-1251 на utf-8
4. если перекодировать index.php в utf, необходимо изменить:
. 'Compiled file=' . preg_replace('/[^A-Za-zА-Яа-я0-9_\-]/', '_', $arCourse['NAME']) . ".chm\r\n"