You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python实现epub2到epub3格式的自动转换

EPUB2转EPUB3 Python实现方案

以下提供两种可直接落地的实现方式,均可以通过Python脚本一键完成转换:

方案1:纯Python实现(无第三方工具依赖)

依赖ebooklib库完成epub结构的读取、规范转换、导出,适合轻量格式的epub2文件转换:

安装依赖

pip install ebooklib

转换代码示例

from ebooklib import epub
import uuid

def epub2_to_epub3(input_path: str, output_path: str) -> None:
    # 读取epub2文件
    book = epub.read_epub(input_path)
    # 重置为epub3规范
    book.version = epub.EPUB3
    # 生成符合epub3要求的唯一标识
    book.set_identifier(str(uuid.uuid4()))
    
    # 生成epub3必填的nav导航文件
    nav = epub.EpubNav()
    nav.add_item(
        epub.EpubHtml(
            title='Navigation',
            file_name='nav.xhtml',
            media_type='application/xhtml+xml',
            content='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body></body></html>'
        )
    )
    book.add_item(nav)
    book.spine.insert(0, nav)
    
    # 移除epub2专属的ncx索引(可选保留兼容旧阅读器)
    # for item in book.get_items():
    #     if item.get_type() == ebooklib.ITEM_NCX:
    #         book.items.remove(item)
    
    # 导出epub3文件
    epub.write_epub(output_path, book, {})

# 调用示例
if __name__ == "__main__":
    epub2_to_epub3("input_epub2.epub", "output_epub3.epub")
    print("转换完成,输出文件:output_epub3.epub")

方案2:调用Calibre转换内核实现(兼容性更高)

如果你的epub2文件包含复杂排版、内嵌资源,推荐使用该方案,转换后的epub3规范度更高,格式丢失率极低:

前置要求

先安装Calibre桌面端,安装完成后确保ebook-convert命令可以在终端正常调用

转换代码示例

import subprocess
import os

def epub2_to_epub3(input_path: str, output_path: str) -> None:
    # 调用calibre转换命令,指定输出为epub3规范
    cmd = [
        "ebook-convert",
        os.path.abspath(input_path),
        os.path.abspath(output_path),
        "--epub-version=3"
    ]
    # 执行转换
    result = subprocess.run(cmd, capture_output=True, text=True)
    if result.returncode != 0:
        raise RuntimeError(f"转换失败:{result.stderr}")

# 调用示例
if __name__ == "__main__":
    epub2_to_epub3("input_epub2.epub", "output_epub3.epub")
    print("转换完成,输出文件:output_epub3.epub")

注意事项

  • 转换完成后可使用epubcheck工具校验生成的文件是否符合epub3官方规范
  • 对有加密、DRM保护的epub文件需要先解密后再执行转换

内容的提问来源于stack exchange,提问作者Victor Simon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 10:15:03