用 pandoc 批量转 html5 为 epub 最稳,因其正确解析语义标签、自动生成 ncx/opf、保留 css,并需注意编码、标题层级、资源路径、kindle 兼容性及 epubcheck 验证。
用 pandoc 批量转 HTML5 为 EPUB 最稳
直接用 pandoc 是目前最可靠、兼容性最好、且真正支持批量处理的方式。它能正确解析 HTML5 语义标签(如 <section></section>、<nav></nav>、<aside></aside>),自动生成 EPUB 的 NCX 和 OPF 结构,还能保留 CSS 样式(需额外指定)。
常见错误是直接用浏览器“另存为”或拖拽进 Calibre —— 这些方式常丢章节结构、乱码中文标题、忽略 <meta name="author"> 等元信息。
- 确保 HTML 文件有清晰的层级:用
<h1></h1>做书名,<h2></h2>做章标题,<h3></h3>做节标题(pandoc靠这个生成目录) - 运行命令前先统一编码为 UTF-8(无 BOM),否则 EPUB 在 iOS 上可能显示乱码
- 批量转换示例:
for f in *.html; do pandoc "$f" -o "${f%.html}.epub" --metadata title="$(grep -oP '<title>\K[^<]+' "$f")" --toc --toc-depth=2; done
HTML5 中的 <article></article> 和 <section></section> 必须手动映射到 EPUB 章节
EPUB 3 规范不直接识别 HTML5 语义块;pandoc 默认只按标题(<h1>–<h6></h6>)切分章节,
</h1><article></article> 或 <section></section> 即使带 id 也不会自动变成独立 EPUB spine 条目。
如果你的网页靠 <article id="ch01"></article> 组织内容,就得在转换时显式告诉 pandoc:
立即学习“前端免费学习笔记(深入)”;