webdevbr/php-ebook-generator

此包最新版本(dev-master)没有提供许可信息。

PHP 和 Markdown 电子书生成器。

dev-master 2017-10-21 22:21 UTC

This package is auto-updated.

Last update: 2024-09-07 15:18:00 UTC


README

PHP 电子书生成器是一个 PDF 电子书生成器,接受 Markdown 格式,目前处于开发阶段。我已经用它来生成预算提案和书籍,功能非常强大。

安装

要安装,请下载 zip 文件或使用 Composer。

composer require webdevbr/php-ebook-generator dev-master

使用

您使用实体创建电子书,配置 Dompdf 并将其注入负责生成 PDF 的对象,然后使用 make 命令完成进程。

例如,创建一个名为 example.php 的文件,并按以下方式配置:

此存储库中有一个可执行示例,只需克隆(或下载)并在项目的根目录下运行 php example.php 即可。

<?php

/** Gerador de livros em PDF */

require 'vendor/autoload.php';

/**
 * O componente aceita strings, então você pode puxar os dados do banco de dados
 * ou diretamente de um arquivo local, ou até escrever em uma variável para incluir,
 * nestes exemplos estou utilizando o file_get_contents() para ter acesso ao conteúdo
 * de um arquivo local, mas qualquer string vai bem ali.
 */

//Eu uso esta entidade para construir a estrutura do meu livro
$book = new WebDevBr\Ebook\BookEntity;

//adiciono a capa
$book->addCover(file_get_contents('example/cover.md'));

/**
 * Uma informação a ser exibida antes do livro começar
 * por exemplo: sobre o autor ou prefacio
 * não aparece no indice
 */
$book->addBefore(file_get_contents('example/intro.md'));

//adiciono os capítulos do livro
$book->addChapter(file_get_contents('example/cap1.md'));
$book->addChapter(file_get_contents('example/cap2.md'));

/**
 * E algo que eu queira mostrar no final do livro
 * por exemplo: bibliogragia
 * não aparece no indice
 */
$book->addAfter(file_get_contents('example/encerramento.md'));

/**
 * Aqui eu configuro o domPdf da forma que eu precisar.
 * Você pode encapsular daqui pra frente em uma classe
 * para reutilizar rapidamente.
 */
$dompdf = new Dompdf\Dompdf;
$dompdf->setPaper('A4', 'portrait');
$dompdf->set_option('defaultFont', 'Helvetica');
$dompdf->set_option('dpi', 120);

/**
 * Ccomeço a gerar o pdf injetando o livro que já montei
 * e também o dompdf
 */
//
$generate = new WebDevBr\Ebook\Generate($book, $dompdf);

//opcionalmente um pouco de css pra personalizar a capa
$css = '
	@page :first {
	   margin: 0;
	   padding: 0;
	   border: none;
	}
	
	.container-cover-0 {
		background-color:#c0392b;
		height: 100%;
	}
';
$generate->setCss($css);

//opcionalmente altero o padrão da numeração de páginas do rodapé
$generate->setPageFooter('Página $current_page de $total_pages - www.webdevbr.com.br', 400);

/**
 * Finalmente crio o livro
 * Se o segundo parametro for true (padrão é false)
 * um arquivo html será gerado também.
 */
$generate->make('book.pdf', true);

不要忘记在示例目录内创建文件

如何贡献

创建一个问题,或查看已创建的问题,评论您要做什么或提出疑问,对项目进行分支,修复后提交 pull request。

就这么简单。