wallabag/php-mobi

此软件包已被放弃且不再维护。未建议替代软件包。

PHP的Mobipocket文件(.mobi)生成器。

1.1.1 2022-03-22 10:25 UTC

This package is auto-updated.

Last update: 2023-08-22 13:57:54 UTC


README

phpMobi是一个PHP脚本,可以将有效的HTML文件转换为.mobi文件。虽然这原本是一个实验,但这个工具工作得相当不错,可以用来从大多数新闻文章中生成MobiPocket文件。

重要:请不要在公共Web服务器上使用此工具:大部分代码是在周末编写的,没有经过测试,也没有特别关注安全性。此外,由于没有关于MOBI文件格式的官方文档,生成的文件中可能会有一些错误/问题,但在Kindle预览器和Kindle 3上,它对相对简单的文档来说仍然可以工作。

MobiPocket是由Mobipocket SA创建的电子书格式。此工具还使用了由Keyvan Minoukadeh制作的PHP可读性端口。

代码示例

请参阅index.php以了解如何使用此程序的一个示例。

发送在线文章作为下载

// Create the MOBI object
$mobi = new MOBI();

// Set the content provider
$content = new OnlineArticle('URL');
$mobi->setContentProvider($content);

// Get title and make it a 12 character long url-safe filename
$title = $mobi->getTitle();
if ($title === false) {
    $title = 'file';
}

$title = urlencode(str_replace(' ', '_', strtolower(substr($title, 0, 12))));

// Send the mobi file as download
$mobi->download($title.'.mobi');

使用先前生成的/下载的HTML文件(不会下载任何图片!)

$data = '<html>...</html>';
$options = array(
    'title' => 'Local document',
    'author' => 'Author name',
    'subject' => 'Subject'
);

// Create the MOBI object
$mobi = new MOBI();

// Set the data
$mobi->setData($data);
$mobi->setOptions($options);

// Save the mobi file locally
$mobi->save($options['title'].'.mobi');

实现

此代码在逆向工程MobiPocket格式时实现。因此,此代码绝对没有针对速度进行优化,而是为了易于更改,因为使其生成有效文件相当繁琐。

功能

模块化内容提供者系统:通过扩展ContentProvider类可以添加新的数据源。请参阅OnlineArticle类以了解此类系统的简单但完整的实现。

图片支持:默认情况下,在线文章下载器(以及任何支持图片的其他内容提供者)将下载图片并将它们集成到mobi文件中。

部分UTF-8支持:实际上UTF-8可以正常工作,但有一些未处理的角落情况(见缺少的功能)。

缺少的功能

压缩:这不会实现(或者如果实现了,也只会作为该格式的参考)。

不同的电子书类型:MobiPocket支持其他格式/布局,如类似于报纸的格式。目前只实现了书布局。

完整的UTF-8支持:UTF-8应该大多数时候都能工作(在我测试的时候每次都能工作),但当字符跨越两个“记录”时可能会出现问题。

许可证

此代码在Apache许可证(版本2.0)下发布