Project Gutenberg工具,用于生成EPUB和其他电子书格式。
项目描述
Ebookmaker
Ebookmaker是Project Gutenberg用于格式转换的工具。它可以从HTML构建HTML5、EPUB2、EPUB3和Kindle文件(包括KF8),还可以从reST源构建这些格式和PDF文件。
如果您正在为Ebookmaker准备HTML文件,那么使用说明可能会对您有所帮助。
先决条件
- Python3 >= 3.7
仅用于Kindle生成
- Calibre (https://calibre-ebook.com/)(用于制作Kindle文件)
- 可能需要安装Calibre的ebook-convert命令行工具https://manual.calibre-ebook.com/generated/en/cli-index.html
仅用于验证
- EpubCheck(用于EPUB验证)要使用EPUBCheck验证,请首先从https://www.w3.org/publishing/epubcheck/下载并安装EPUBCheck。如果调用它的命令是
java -jar /Applications/epubcheck-4.2.6/epubcheck.jar
,则将此行添加到~/.ebookmaker或/etc/ebookmaker.conf中:epub_validator: java -jar /Applications/epubcheck-4.2.6/epubcheck.jar
,然后通过将--validate
添加到Ebookmaker的命令行调用或通过在~/.ebookmaker中将validate设置为true来开启验证。 - W3C "Nu"验证器(用于HTML5验证)https://validator.github.io/validator/将此行添加到~/.ebookmaker或/etc/ebookmaker.conf中:
html_validator: [您的安装路径]/vnu-runtime-image/bin/vnu
,然后通过将--validate
添加到Ebookmaker的命令行调用或通过在~/.ebookmaker中将validate设置为true来开启验证。 - 在MacOS上,您可能需要创建安全例外。在我的系统中,我必须执行
sudo xattr -r -d com.apple.quarantine /Users/eric/vnu-runtime-image/lib
仅用于封面生成
- Cairo https://www.cairographics.org/download/
- Noto Sans和Noto Sans CJK
- CentOS或RedHat:
yum install google-noto-sans-cjk-fonts; yum install google-noto-sans-fonts
- Ubuntu:
apt-get install fonts-noto-cjk fonts-noto
- CentOS或RedHat:
仅用于从RST转换
- Libertinus Serif和Libertinus Sans https://github.com/alerque/libertinus
- 对于Linux,
- 下载最新版本https://github.com/alerque/libertinus/releases/latest
- 解压,将.otf文件放入~/.fonts
- 更新字体目录
fc-cache -f -v
- 对于Linux,
- DejaVu Sans Mono https://dejavu-fonts.github.io/
- TexLive(从TeX和rst构建PDF)
与Python 3.8进行了测试
安装
(主分支,可编辑安装)pipenv install ebookmaker
使用ebookmaker.conf文件传递到您的kindlegen、tex和groff程序的路径,如果它们不在您的PATH中。编辑ebookmaker.conf并将其复制到/etc/ebookmaker.conf以重置路径。将ebookmaker.conf复制到~/.ebookmaker以覆盖/etc/ebookmaker.conf中的设置或设置默认命令行选项。
示例调用
(从您运行pipenv install
的目录)
pipenv shell
ebookmaker -v -v --make=epub.images --output-dir=/Documents/pg /Documents/library/58669/58669-h/58669-h.htm
或者
pipenv run ebookmaker -v -v --make=epub.images --output-dir=/Documents/pg /Documents/library/58669/58669-h/58669-h.htm
您是pipenv新手吗?
安装pipenv(可能是pip install --user pipenv
,具体取决于您的默认Python)
$ pip3 install --user pipenv
默认安装位置是${HOME}/.local/bin
,如果需要,请将其添加到登录shell的${PATH}中。
更改目录到您想要创建ebookmaker环境的位置。然后,要初始化Python 3虚拟环境,请执行
$ pipenv --three
每当您想要进入此环境时,请移动到该目录并执行
$ pipenv shell
安装gutenberg模块
$ pipenv install ebookmaker
检查您的安装
$ ebookmaker --version
EbookMaker 0.12.0
由于您在shell中,您可以导航到一本书的目录并转换它
$ ebookmaker -v -v --make=epub.images --ebook 10001 --title "The Luck of the Kid" --author "Ridgwell Cullum" luck-kid.html
更新
将 $ cd ebookmaker
切换到您运行 $ pipenv install ebookmaker
的位置。
然后
运行
$ pipenv update ebookmaker
测试
按照上述方法安装。
将 $ cd ebookmaker
切换到您运行 $ pip install ebookmaker
的位置。
然后
运行
$ git checkout master
运行
$ pipenv install -e .
运行
$ python setup.py test
Travis-CI 将在 gutenbergtools org 提交的分支上运行测试。
在 Windows 机器上运行 Ebookmaker 的说明(改编自 @windymilla)
- 从 python.org 安装 Python 3.7+。安装 Kindlegen。将其添加到路径中。
- 添加系统环境变量:右键单击“我的电脑”,然后属性,然后高级,然后环境变量,然后新建。变量名设置为 PYTHON_HOME,并将其设置为 Python 文件夹。
- 编辑 Path 变量,并在其末尾添加
;%PYTHON_HOME%\;%PYTHON_HOME%\Scripts\
- 通过在新的命令窗口中输入
python
来检查。它应该运行您的 Python 版本。使用^Z
& Enter 退出 python。 - 在命令窗口中,输入
pip3 install --user pipenv
。脚本可能会警告它已将脚本放入如C:\Users\myname\AppData\Roaming\Python\Python37\Scripts
这样的文件夹中,并要求将其添加到 Path 环境变量中。这样做——不要忘记新文件夹名前的分号!(可能只需将新安装的文件从安装位置复制到主 Python 脚本文件夹中,例如%PYTHON_HOME%\Scripts
?) - 关闭旧命令窗口并启动一个新的(以获取新的路径)
- 为 ebookmaker 创建一个文件夹,例如
C:\DP\ebookmaker
- 在命令窗口中,转到新文件夹
- 输入
pipenv install ebookmaker
—— 安装需要一段时间。它还会创建一个“虚拟环境”,有一个新文件夹,例如C:\Users\myname\.virtualenvs\ebookmaker-cgaQuYhi
- (可选——仅当您需要 ebookmaker 为您创建封面,而您未提供封面时)下载 GTK+ 以获取 Cairo。预编译的 Win32 二进制文件在此:[http://ftp.gnome.org/pub/gnome/binaries](http://ftp.gnome.org/pub/gnome/binaries) ... _win32.zip 将其解压到文件夹中,例如
C:\DP\gtk
,并将C:\DP\gtk\bin
添加到 Path 环境变量中。退出命令窗口并启动一个新的来获取新的路径。转到 ebookmaker 文件夹,C:\DP\ebookmaker
- 使用
pipenv run python ebookmaker --version
检查 ebookmaker 版本。如果不起作用(应该会,但我们没有成功)尝试- 查看
C:\Users\myname\.virtualenvs\
并找到您的虚拟环境名称——它应该是类似于ebookmaker-cgaQuYhi
的东西 - 使用
pipenv run python C:\Users\myname\.virtualenvs\<name of virtualenv>\Scripts\ebookmaker --version
检查 ebookmaker 版本。
- 查看
- (现在 Cairo 是可选的,不应发生)如果有类似找不到“cairo”或“cairo-2”的错误,检查您的 libcairo 和 libcairo-2 路径是否存在。如果它们存在,编辑 cairocffi 软件包中的 init.py 中的 dlopen。直接返回 ctypes.util.find_library 找到的路径,而不是调用 ffi.dlopen(path)。
- 如果文件夹/文件名包含空格,路径名必须用
"
括起来,例如--output-dir="C:\your foldername"
。如果路径名用引号括起来,它绝不能以尾随的\
结尾,否则将引发错误。如果在 Guiguts 中运行 bat 文件,这意味着您应该使用$d.
而不是$d
(即 $d 后跟一个点,这样引号括起来的路径名将以\."
结尾而不是\"
)作为 output-dir 参数的值。 - 用于 Guiguts 的示例 run_ebookmaker.bat 文件:cd C:\DP\ebookmaker pipenv run python C:\Users\myname.virtualenvs\ebookmaker-cgaQuYhi\Scripts\ebookmaker -v --make=epub.images --make=kindle.images --output-dir=%1 --title=%2 %3
- Guiguts 中的对应“外部程序”设置:
c:\dp\ebookmaker\run_ebookmaker.bat $d. $f $d$f$e