hametuha / hamepub
PHP Library to handle ePub 3.0
1.0.0
2021-05-26 08:43 UTC
Requires
- php: >=5.4
- masterminds/html5: 2.*
Requires (Dev)
- d11wtq/boris: 1.0.8
- phpunit/phpunit: ^4.8.35 || ^5.7.21
This package is auto-updated.
Last update: 2023-03-24 15:04:06 UTC
README
HemePub's living example is hametuha. It's a WordPress site which is able to publish it's contents to ePub.
If you maintain PHP-based web apps, HamePub will help your multi-publishing.
NOTICE: HamePub means nothing sexual. I wrote like this, because it sounds meaningful in Japanese.(HamePubはePub作成のためのPHPライブラリであり、エッチな出来事が起きるパブではありません)
How to Install
Use composer.
"require": { "hametuha/hamepub": "dev-master" }
How to USE
Mmm... It's little bit hard to generate ePub... Isn't it?
I can't write down everything here. Please wait for completion.
// Load library require 'vendor/autoload.php'; // $contents is an associative array which consists of // html strings of you ebook contents. // Start Creating $factory = Factory::init('my-epub', PATH_TO_TMP_DIR); // Create toc foreach( $contents as $key => $html ){ // Register toc $page_toc = $factory->toc->addChild( $key, $key.'.xhtml'); // Grab all headers and add them to toc. $dom = $factory->parser->html5->loadHTML($html); // 3 is maximum header level, 2 means depth. $factory->parser->grabHeaders($page_toc, $dom, true, 3, 2); // Now, all headers have id anchor. $html = $factory->parser->convertToString($dom); // Recreate DOM. $dom = $factory->registerHTML( $key, $html ); // Grab all images foreach( $factory->parser->extractAssets( $dom, 'img', 'src', '#http://example\.jp/assets#', ASSETS_DIR ) as $path ){ $factory->opf->addItem( $path, '' ); } // Register to OPF $factory->ofp->addItem( "Text/{$key}.xhtml", "{$key}.xhtml"); // Save HTML $factory->parser->saveDom($dom, "{$key}.xhtml"); } // Set OPF. $factory->opf->setLang( 'en_US' ); $factory->opf->setTitle( 'My First eBook', 'main-title' ); $factory->opf->putXML(); $factory->container->pubXML(); // Save it! $factory->compile('path/to/epub');
Current Version
- 0.4 (alpha)
Caution
This library is under alpha and highly experimental. Do not trust this until Beta!
License
As wrote in LICENSE file, this library is released under MIT.