PHP-Mobi库已停止维护,应改用mobi-php替代:执行composer require mobi-php/mobi-php:dev-main安装,使用其API生成MOBI文件,但仅适用于纯文本、无图、简单排版场景。

PHP-Mobi 库已停止维护,Composer 安装会失败
直接运行 composer require php-mobi/php-mobi 会报错:包不存在或版本不可用。因为该库自 2016 年起就不再更新,其 GitHub 仓库(php-mobi/php-mobi)已被归档,Packagist 上也已移除。Composer 默认不拉取已归档/废弃的包,即使手动指定旧版本(如 v1.0.0),也会因依赖 pear/console_getopt 等已下线的 PEAR 包而安装中断。
改用 mobi-php 替代:支持 Composer 安装且可生成有效 MOBI
mobi-php 是目前最活跃的 PHP MOBI 生成器,兼容 PHP 7.4+,输出的文件能被 Kindle 正常识别。它不依赖 PEAR,使用纯 PHP 实现压缩与打包逻辑,且提供清晰的 API 封装。
执行以下命令安装:
composer require mobi-php/mobi-php
注意两点:
立即学习“PHP免费学习笔记(深入)”;
- 不要加
--dev,它不是开发工具,而是运行时依赖 - 若项目启用了
minimum-stability: stable,需临时允许dev版本(当前最新版是dev-main),或显式指定:composer require mobi-php/mobi-php:dev-main
生成 MOBI 的最小可行代码(含关键参数说明)
MOBI 不是简单“转格式”,它需要 HTML 内容 + 元数据 + PalmDB 封装。以下是最简可用示例:
$mobi = new \Mobi\Mobi();
$mobi->setTitle('我的文档');
$mobi->setAuthor('作者名');
$mobi->setHtmlContent('<h1>第一章</h1><p>内容文本...</p>');
$mobi->saveToFile('output.mobi');
几个容易出错的点:
-
setHtmlContent()必须传入完整 HTML 字符串(含或至少),不能只传纯文本 - 中文需确保 HTML 声明编码为
<meta charset="UTF-8">,否则 Kindle 显示乱码 -
saveToFile()要求目标目录有写权限;若抛出Permission denied,检查output.mobi所在路径 - 生成的 MOBI 文件体积偏大(因含冗余 PalmDB 头),但可正常在 Kindle 设备/APP 中打开
转换效果与限制:别指望它处理复杂排版
mobi-php 仅做基础 MOBI 封装,不解析 CSS、不处理图片嵌入、不支持 TOC 自动生成。如果你的源内容含:
- 外部 CSS 文件 → 需内联样式,或用
<style></style>标签写进 HTML - 图片(
<img src="xxx.jpg" alt="如何使用Composer引入 PHP-Mobi 库将文档内容转换为 Kindle 格式" >)→ 必须转为 base64 内联,否则 Kindle 无法加载 - 多章节 HTML 文件 → 需手动拼接成单个 HTML 字符串,或自行分段调用
addSection()(部分分支支持)
真正生产级的 Kindle 文档生成,建议用 Pandoc + KindleGen(已停更)或现代替代方案如 kindlegen 的继任者 kindlepreviewer CLI 工具链 —— PHP 只负责生成中间 HTML,再交由专业工具打包。
用 PHP 直接生成 MOBI 的边界很清晰:适合简单电子书、笔记导出、无图纯文场景。一旦涉及样式、图片、元数据丰富性,就得切到工具链协作模式。



















