将单个 html 文件转换为 epub 非常简单, 有许多免费工具可用于此目的。但是, 如果您的目标是将多个 html 文件 (每个文件的一部分) 转换为包含适当目录、封面图像等的电子书, 您会怎么做?
这正是我在试图创建我的书的 epub 版本时发现自己的十字路口。这本书的每一章都由一个独特的网页表示, 我需要一种自动的方式来快速下载所有这些内容, 并将它们合并到电子书中。为了使事情更有趣, 每个页面只有一部分是必要的-谁想要看到网页的页眉, 页脚, 和导航栏上的 epub?此外, 图像需要下载并嵌入到 epub 中, github gist 代码段需要在不使用 github 的 javascript 标记的情况下下载和表示。
所有这些要求对于创建专业的 epub 都是必要的, 但令人惊讶的是, 如果不需要大量的人工努力, 就不存在任何可以完成所有这些事情的工具。像任何一个好的软件开发人员, 如果没有工具的工作, 唯一的其他选择是手动工作, 我走了最懒惰的路径, 并创建了一个新的工具来完成工作。
html b
该新工具被称为 html 2epub, 是一个命令行应用程序, 可以:
- 从一系列网页生成专业的 epub
- 删除不必要的 html
- 将 html 转换为 xhtml, 以符合 epub 规范
- 嵌入的图像
- 嵌入 gist 代码段
- 重写章节链接以实现适当的 epub 导航
- 对目录导航的支持
- 支持基于表单的身份验证
我试图保持这个实用程序尽可能简单的使用, 尽管它的许多功能。让我们来看看如何开始。
入门
在 macos 上安装 html 2epub 是大大简化的酿造方式。只需运行:
brew install jwhitehorn/brew/html2epub
这将下载并安装 html lepub 及其依赖项, 并在您的 path 中注册该命令。完成后, 您可以像以下操作一样轻松地生成 epub:
html2epub --url https://www.datasyncbook.com \ --toc ./example/toc.xhtml \ --cover ./example/cover.png \ --contents ./example/contents.json \ --title "Data Synchronization" \ --subtitle "Patterns, Tools, & Techniques" \ --author "Jason Whitehorn"
也就是说, 假设您已经有了一些配置文件-我们稍后将讨论这些文件。这样做的理由是, 我宁愿有一个工具, 很容易调用一遍又一遍, 在一段时间内, 即使这意味着创建一对夫妇的配置文件在开始。具体来说, 当我编写数据同步: 模式、工具和技术时, 我需要一种简单的方法, 以便在发布新内容时重新生成 epub 分发。
你需要三个文件–让我们按照简单的顺序来讨论这些文件。
封面图像
没有封面图像, 任何专业的电子书都是不完整的。–cover 参数指定用于指定该参数的路径。此文件将嵌入到电子书中, 因此建议使用网络安全格式 (如 png 或 jpeg)。
表的内容
这是一个领域, 我可以看到这个工具不断发展, 但目前, 目录, 由–toc 参数指定, 是一个 xhtml 文件直接出的 epub 规范-yuck!
幸运的是, 目录在大多数书中并不是过于复杂的东西, 也不应该有很大的差异。下面是一个将是什么样子的示例:
这表示一个相当平均的目录。每个人都引用了这一章的文件名, 因为它将在你的 epub 中。这本身是任意的, 但必须与下一个配置文件中的命名一致。
内容. json
这代表了 html 2epub 成功生成 epub 所需的核心。在进一步讨论之前, 让我们先看一下示例文件:
这里的内容必须与目录的顺序相同, 这里的文件也应该与那里的 href 匹配。url 属性指定要包含的页面, 而登录属性包含可选的登录信息 (如果需要) 以达到某些内容。下面是包含登录信息的章节可能是什么样子:
在这种情况下, url 现在指向一个登录页面与重定向到目标页, 因为 html l2epub 将需要登录, 然后再继续。
包扎
在那里, 你有它, 一个简单而有效的工具, 从网站生成 epub。这个工具有几个方面是不太理想的 , 如登录处理和目录 , 但总体来说 , 它已经节省了我的时间 – 我不得不建立的东西 : – )
该工具本身是免费和开源的–在 github 上检查它。毫无疑问, 随着我的使用的继续, 我将继续增强它, 但从短期来看, 我的目标是为我的书制作 epub, 而不是编写 epub 生成工具, 所以我不能承诺任何具体的功能路线图。
和往常一样, 思想、反馈和批评总是受欢迎的。