wallabag / php-mobi
PHP的Mobipocket文件(.mobi)生成器。
Requires
- php: >=5.3.0
- symfony/polyfill-mbstring: ^1.12
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)下发布