Введение
Ситуация следующая: наша компания «Количественный анализ» (связана с «Колизеем» на языках JavaScript и Java) поручила мне разработать корпоративный сайт и справочный центр для него. Нужно было создать PDF-документы в офлайн-режиме, чтобы пользователям было удобно их читать и использовать. Я попробовал использовать wkhtmltopdf для создания PDF-документов, но результат оказался неидеальным.
Я посмотрел на документы, созданные с помощью Gitbook и Kindlegen, и они оказались великолепными. Затем я скачал PDF-документы с двух сайтов и изменил их расширения на .xml. Когда я открыл их в текстовом редакторе, то обнаружил, что они были созданы с помощью Calibre. После этого я потратил полмесяца на решение проблемы.
Думаю, многие компании и частные лица могут столкнуться с такой же потребностью. Поэтому я решил упаковать использование Calibre и сделать его открытым исходным кодом, чтобы облегчить жизнь другим людям.
Этот документ расскажет вам, как использовать этот инструмент и как он работает, чтобы вы могли создать свой собственный инструмент на основе вашего языка программирования.
Установка Calibre
Эффект от экспорта документов В качестве примера я использовал «Gogs: китайский документ», который можно найти по адресу https://www.bookstack.cn/books/gogs_zh. Вы можете посетить этот сайт, чтобы увидеть реальный эффект от экспорта документа.
Снимок экрана:
Документ после экспорта (effect.png)
Быстрый опыт использования Если вы успешно установили Calibre и настроили переменные среды, вы можете быстро попробовать его следующим образом:
./converter.exe ../../example/gogs_zh/config.json
./converter ../../example/gogs_zh/config.json
./converter ../../example/gogs_zh/config.json
После успешного выполнения команды вы увидите экспортированные документы в каталоге example/gogs_zh/output.
Примеры использования Calibre можно использовать в следующих случаях:
Конфигурационный файл Конфигурационным файлом является 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 )