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

OSCHINA-MIRROR/truthhun-converter

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
readme.md

Введение

Ситуация следующая: наша компания «Количественный анализ» (связана с «Колизеем» на языках JavaScript и Java) поручила мне разработать корпоративный сайт и справочный центр для него. Нужно было создать PDF-документы в офлайн-режиме, чтобы пользователям было удобно их читать и использовать. Я попробовал использовать wkhtmltopdf для создания PDF-документов, но результат оказался неидеальным.

Я посмотрел на документы, созданные с помощью Gitbook и Kindlegen, и они оказались великолепными. Затем я скачал PDF-документы с двух сайтов и изменил их расширения на .xml. Когда я открыл их в текстовом редакторе, то обнаружил, что они были созданы с помощью Calibre. После этого я потратил полмесяца на решение проблемы.

Думаю, многие компании и частные лица могут столкнуться с такой же потребностью. Поэтому я решил упаковать использование Calibre и сделать его открытым исходным кодом, чтобы облегчить жизнь другим людям.

Этот документ расскажет вам, как использовать этот инструмент и как он работает, чтобы вы могли создать свой собственный инструмент на основе вашего языка программирования.

Установка Calibre

  • Скачайте Calibre с сайта https://calibre-ebook.com/download.
  • Установите соответствующую версию Calibre для вашей системы. Обратите внимание, что вам нужна версия 3.x, так как версии 2.x имеют ограниченные функции. В любом случае рекомендуется установить последнюю версию.
  • После установки Calibre добавьте его в переменные среды вашей системы и выполните команду ebook-convert --version. Если она показывает версию 3.x, установка прошла успешно.

Эффект от экспорта документов В качестве примера я использовал «Gogs: китайский документ», который можно найти по адресу https://www.bookstack.cn/books/gogs_zh. Вы можете посетить этот сайт, чтобы увидеть реальный эффект от экспорта документа.

Снимок экрана:

Документ после экспорта (effect.png)

Быстрый опыт использования Если вы успешно установили Calibre и настроили переменные среды, вы можете быстро попробовать его следующим образом:

  • Для пользователей Windows перейдите в каталог bin/win и выполните следующую команду:
./converter.exe ../../example/gogs_zh/config.json
  • Для пользователей Mac перейдите в каталог bin/mac и выполните следующую команду:
./converter ../../example/gogs_zh/config.json
  • Для пользователей Linux перейдите в каталог bin/linux и выполните следующую команду:
./converter ../../example/gogs_zh/config.json

После успешного выполнения команды вы увидите экспортированные документы в каталоге example/gogs_zh/output.

Примеры использования Calibre можно использовать в следующих случаях:

  • Количественный анализ (https://www.myquant.cn) — это наш корпоративный сайт, посвящённый количественному инвестированию. Перейдите на сайт и найдите раздел «Справочный центр», чтобы увидеть эффект от экспорта документов.
  • BookStack (https://www.bookstack.cn) — сайт, основанный на MinDoc. Это открытый исходный код, который можно найти на GitHub по адресу https://github.com/TruthHun/BookStack.
  • MinDoc (https://github.com/lifei6671/mindoc).

Конфигурационный файл Конфигурационным файлом является JSON. Имя файла не ограничено, и вы должны указать имя файла при использовании. Важно отметить, что файл конфигурации должен находиться в корне проекта. Например, в примере проекта gogs_zh конфигурационный файл config.json находится в корне проекта.

Пример конфигурации JSON

{
    "charset": "utf-8",
    "cover": "",
    "date": "2018-01-21",
    "description": "Gogs 的目标是打造一个最简单、最快速和最轻松的方式搭建自助 Git 服务。使用 Go 语言开发使得 Gogs 能够通过独立的二进制分发,并且支持 Go 语言支持的 所有平台,包括 Linux、Mac OS X、Windows 以及 ARM 平台。",
    "footer": "<p style='color:#8E8E8E;font-size:12px;'>本文档使用 <a href='http://www.bookstack.cn' style='text-decoration:none;color:#1abc9c;font-weight:bold;'>书栈(BookStack.CN)</a> 构建 <span style='float:right'>- _PAGENUM_ -</span></p>",
    "header": "<p style='color:#8E8E8E;font-size:12px;'>_SECTION_</p>",
    "identifier": "",
    "language": "zh-CN",
    "creator": "书栈(BookStack.CN)",
    "publisher": "书栈(BookStack.CN)",
    "contributor": "书栈(BookStack.CN)",
    "title": "Gogs中文文档",
    "format": ["epub", "mobi", "pdf"],
    "font_size": "14",
    "paper_size": "a4",
    "margin_left": "72",
    "margin_right": "72",
    "margin_top": "72",
    "margin_bottom": "72",
    "more": [],
    "toc": [{
        "id": 709800000,
        "link": "statement.html",
        "pid": 0,
        "title": "致谢"
    }, {
        "id": 539,
        "link": "539.html",
        "pid": 538,
        "title": "5.1 配置文件手册"
    }, {
        "id": 545,
        "link": "545.html",
        "pid": 543,
        "title": "4.1 自定义模板"
    }, {
        "id": 549,
        "link": "549.html",
        "pid": 548,
        "title": "2.1 注册 Windows 服务"
    }, {
        "id": 554,
        "link": "554.html",
        "pid": 0,
        "title": "1. 简介"
    }, {
        "id": 555,
        "link": "555.html",
        "pid": 554,
        "title": "1.1 变更日志"
    }, {
        "id": 540,
        "link": "540.html",
        "pid": 538,
        "title": "5.2 公告与高阶指南"
    }, {
        "id": 547,
        "link": "547.html",
        "pid": 543,
        "title": "4.2 Web

Это перевод исходного текста. Пожалуйста, обратите внимание, что некоторые детали могут быть потеряны или искажены из-за особенностей перевода. **Конфигурация JSON-объекта:**

* charset — указывает кодировку, по умолчанию используется utf-8.
* cover — изображение обложки размером 800x1068 пикселей в формате jpg, png или gif. Если обложки нет, то значение должно быть пустым.
* date — дата создания документа, указывается в формате год-месяц-день часы:минуты:секунды. По умолчанию используется текущая дата и время.
* title — заголовок документа. Обязательное поле.
* description — описание или резюме документа. Необязательное поле.
* footer и header — содержимое нижнего и верхнего колонтитулов при создании PDF-документа. Действуют только для PDF. Необязательные поля.
* identifier — идентификатор издания. Можно оставить пустым.
* language — язык документа. Обязательное поле, например, zh, en, zh-CN, en-US и т. д.
* creator, publisher, contributor — если не хотите разделять эти значения, можно указать одно и то же значение, например «BookStack.CN». Если хотите разделить, то creator — это автор документа, publisher и contributor — издатель и соавтор соответственно. Эти три поля рекомендуется заполнить.
* format — формат экспортируемого документа, по умолчанию — PDF. Возможные значения: epub, pdf, mobi.
* font_size — размер шрифта по умолчанию, действует только для PDF. Необязательное поле.
* paper_size — формат страницы экспортируемого документа. По умолчанию — A4. Возможные значения: a0, a1, a2, a3, a4, a5, a6, b0, b1, b2, b3, b4, b5, b6, legal, letter.
* margin_left, margin_right, margin_top, margin_bottom — отступы слева, справа, сверху и снизу соответственно, действуют только для PDF. Размер указывается в пунктах (pt), по умолчанию — 72 pt. Необязательные поля.
* more — дополнительные параметры, действуют только для PDF, рекомендуется не использовать.
* toc — список содержания. id и pid — числовые значения, pid обозначает родительский элемент. Значения id должны быть уникальными. link указывает на HTML-ссылку. title обозначает заголовок раздела.

**Использование:**

Для запуска программы необходимо выполнить команду:

bin/converter path/to/config.json


После успешного выполнения программы в каталоге проекта будет создана папка output, куда будут экспортированы файлы. Например, если выбран формат PDF, в папке output появится файл book.pdf.

**Пример использования на языке Go:**

Импортировать пакет:

```golang
import "github.com/TruthHun/converter/converter"

Создать новый экземпляр конвертера:

if Convert, err := converter.NewConverter("path/to/config.json");err==nil{
    Convert.Convert()
}

Другие языки:

Поскольку в настоящее время нет готовых классов и пакетов для PHP, Python и других языков, необходимо создать свой config.json и выполнить следующую команду:

/path/to/converter /path/to/config.json

Принцип работы:

Программа генерирует базовую структуру электронной книги на основе содержимого config.json, затем сжимает и переименовывает файлы в текущем каталоге, создавая файл content.epub. Затем с помощью ebook-convert преобразует его в нужный формат, например:

ebook-convert content.epub output/book.pdf [options]

Это позволяет создавать собственные пакеты для различных языков и вызывать calibre для экспорта документов.

Внимание:

В HTML не следует использовать код JavaScript для рендеринга содержимого документа, так как он не будет выполняться.

Поддержка:

Автор просит поддержать проект, дав ему звезду на GitHub. Также приведены ссылки на другие проекты автора: IT文库 и 书栈(BookStack).

Комментарии ( 0 )

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

Введение

Используя calibre, преобразуйте документы в форматах markdown и html в документы форматов epub, mobi, pdf и др. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/truthhun-converter.git
git@api.gitlife.ru:oschina-mirror/truthhun-converter.git
oschina-mirror
truthhun-converter
truthhun-converter
master