1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/fisher52-epubBuilder

Клонировать/Скачать
README.md 11 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 09.06.2025 10:17 ae91ff5

Общие сведения

<?php
function создать_epub($заголовок, $автор, $содержимое) {
    // Создаем файл content.html
    $content_html = '<html xmlns="http://www.w3.org/1999/xhtml"><head><title>' . $заголовок . '</title></head><body>' . $содержимое . '</body></html>';
    file_put_contents('content.html', $content_html);

    // Создаем архив EPUB
    $zip = new ZipArchive();
    $epub_file = 'output.epub';
    if ($zip->open($epub_file, ZipArchive::CREATE) === TRUE) {
        $zip->addFile('mimetype', 'mimetype');
        $zip->addFile('container.xml', 'META-INF/container.xml');
        $zip->addFile('content.opf', 'OEBPS/content.opf');
        $zip->addFile('toc.ncx', 'OEBPS/toc.ncx');
        $zip->addFile('content.html', 'OEBPS/content.html');
        $zip->close();
    }

    // Удаляем временный каталог
    unlink('content.html');

    // Возвращаем путь к созданному EPUB файлу
    return $epub_file;
}

// Пример использования функции
$заголовок = 'Пример книги';
$автор = 'Автор';
$содержимое = '<p>Это содержимое книги.</p>';
``````php
$epub_file = создать_epub($заголовок, $автор, $содержимое);
echo 'EPUB файл создан: ' . $epub_file;
?>
В свободное время люблю читать книги на своём iReader, конечно, не обходится без небольших повседневных романов, чтобы убить время. Вот в чём удобство iReader – удобство чтения сетевых текстов. Несмотря на то, что утверждается, что есть 50 000 источников книг, многие официальные романы, которые мне интересны, найти на нём невозможно, так как эксклюзивные права на многие из них принадлежат другим. Тогда приходится искать где-то другие ресурсы (обычно это завершённые книги, которые не были опубликованы в течение двух-трёх лет, что меньше влияет на автора). Также читаю официальные версии, но они не доступны в собственном магазине приложения, и нет возможности сохранить их для офлайн-чтения. Кроме уже подготовленных ресурсов, другие EPUB-файлы, хотя и могут использоваться, имеют не всегда удовлетворительное содержание и форматирование. Самостоятельная подготовка этих файлов требует много времени. Некоторые могут спросить, почему не использовать конвертационные инструменты, такие как EasyPub, ePUBee Magic и другие. Даже есть онлайн-конвертация [ePUBee](http://cn.epubee.com). Да, имея столько доступных инструментов, нет необходимости изобретать велосипед. Конечно, эти инструменты имеют общие черты, добавляющие рекламу в местах, видимых и невидимых для вас.
В свободное время люблю читать книги на своём iReader, конечно, не обходится без небольших повседневных романов, чтобы убить время. Вот в чём удобство iReader – удобство чтения сетевых текстов. Несмотря на то, что утверждается, что есть 50 000 источников книг, многие официальные романы, которые мне интересны, найти на нём невозможно, так как эксклюзивные права на многие из них принадлежат другим. Тогда приходится искать где-то другие ресурсы (обычно это завершённые книги, которые не были опубликованы в течение двух-трёх лет, что меньше влияет на автора). Также читаю официальные версии, но они не доступны в собственном магазине приложения, и нет возможности сохранить их для офлайн-чтения. Кроме уже подготовленных ресурсов, другие EPUB-файлы, хотя и могут использоваться, имеют не всегда удовлетворительное содержание и форматирование. Самостоятельная подготовка этих файлов требует много времени. Некоторые могут спросить, почему не использовать конвертационные инструменты, такие как EasyPub, ePUBee Magic и другие. Даже есть онлайн-конвертация [ePUBee](http://cn.epubee.com). Да, имея столько доступных инструментов, нет необходимости изобретать велосипед. Конечно, эти инструменты имеют общие черты, добавляющие рекламу в местах, видимых и невидимых для вас.
```Возможно, я слишком привержен идеалу и не могу этого терпеть. Поэтому я потратил два вечера на создание этого инструмента без рекламы и без ограничений — epubBuilder. Это всего лишь ранняя версия, которую можно использовать локально, немного изменив, можно запустить в Интернете и превратить его в онлайн-инструмент. Неужели это не прекрасно?## Инструкция по использованию

Откройте `index.php`, увидите следующий текст. Необходимые для заполнения поля указаны в примечаниях ниже, заполните их в соответствии с вашими данными. После заполнения используйте режим CLI, введите в консоли `php index.php`.

```php
<?php
define('ROOT', dirname(__FILE__) . '/');
define('TMPDIR', ROOT . 'tmp');
define('OS', TMPDIR . '/OEBPS/');
require ROOT . 'lib/epub.class.php';

## Заполняемая область, не изменять вышеуказанный код
$config = [
    'styles' => '', // путь к пользовательским стилям, локальный
    'txtPath' => ROOT . 'укажите здесь имя вашего txt файла', // положите txt файл в ту же директорию, что и index.php
    'coverImg' => '', // путь к пользовательскому изображению обложки, может быть URL, но лучше хранить локально
    'toc' => false, // включить ли таблицу содержания. ireader плохо поддерживает таблицу содержания (не поддерживает dl dd теги), по умолчанию отключено.
    'patternType' => 1, // обязательное поле, тип структуры книги, см. ниже описание параметров
    'creater' => '', // автор, обязательное поле
    'bookName' => '', // название книги, обязательное поле
    'language' => 'zh-CN', // язык, по умолчанию китайский
    'date' => date("Y-m-d"), // дата публикации, по умолчанию текущая дата
];


## Заполняемая область завершена, не изменять нижеуказанный код

(new epub($config))->epub_builder();

Описание параметра patternType

1 — Глава/Раздел/Секция/Эпизод/Сезон/Том №xxxx. Рекомендуемый стандартный формат, большинство произведений соответствуют этому типу. Пример: Глава 1520 — У меня есть парень.2 — Тип 1 + Введение/Пролог/Первая глава/Пролог/Заключительная глава/Заключение/Эпилог/Эпизод. Расширенный тип 1, включающий другие типы заголовков. Пример: Эпизод — Моя история с парнем.

3 — Тип 2, но с пробелами перед заголовками, что увеличивает точность соответствия. Пример: Введение — Я тебя называю мужем.

4 — Глава/Раздел № — Заголовок. Обычный формат для английских книг. Пример: Глава 1 — Я пришёл из Земли.

5 — Текст №. Нестандартный формат. Пример: Текст 12 6
Номер
Заголовок. Часто используемый заголовок на晋江, пример: 1 Я Лэй Минглун,閣下?

Реализация

Реализация метода довольно проста. Эссенцией формата EPUB является ZIP-архив, поэтому необходимо создать соответствующие HTML-страницы для каждой главы и соответствующую информацию о содержании, а затем упаковать их вместе. HTML-страницы и информация о содержании создаются с использованием шаблонных файлов, что позволяет обрабатывать все стандартные форматы.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/fisher52-epubBuilder.git
git@api.gitlife.ru:oschina-mirror/fisher52-epubBuilder.git
oschina-mirror
fisher52-epubBuilder
fisher52-epubBuilder
master