heimrichhannot/pdf-creator

PdfCreator是一个使用PHP创建PDF文件的 高级API。

0.4.3 2024-08-01 12:29 UTC

This package is auto-updated.

Last update: 2024-09-01 12:41:45 UTC


README

PdfCreator是一个使用PHP创建PDF文件的高级API。它的目标是使使用现有库更加容易和面向对象。

特性

示例

use HeimrichHannot\PdfCreator\Concrete\MpdfCreator;
use HeimrichHannot\PdfCreator\PdfCreatorFactory;

$pdf = PdfCreatorFactory::createInstance(MpdfCreator::getType());
$pdf->setHtmlContent($this->compile())
    ->setFilename($this->getFileName())
    ->setFormat('A4')
    ->setOrientation($pdf::ORIENTATION_PORTRAIT)
    ->addFont(
        "/path_to_project/assets/fonts/my_great_font.tff", 
        "myGreatFont", 
        $pdf::FONT_STYLE_REGUALAR,
        "normal"
    )
    ->setMargins(15, 10, 15,10)
    ->setTemplateFilePath("/path_to_project/assets/pdf/mastertemplate.pdf")
    ->setOutputMode($pdf::OUTPUT_MODE_DOWNLOAD)
    ->render()
;

用法

安装

我们建议使用composer安装此库

composer require heimrichhannot/pdf-creator

您还需要安装您希望与此扩展一起使用的PDF库

  • Dompdf(支持版本1到3)
    • "dompdf/dompdf": "^3.0"
    • 如果要在Dompdf中使用主模板,您还需要FPDI和TCPDF
      • "tecnickcom/tcpdf": "^6.3"
      • "setasign/fpdi": "^2.3"
  • mPDF(支持版本7和8)
    • "mpdf/mpdf": "^8.0"
  • TCPDF
    • "tecnickcom/tcpdf": "^6.3"
    • 如果要在TCPDF中使用主模板,您还需要FPDI
      • "setasign/fpdi": "^2.3"

如果您正在使用Contao,您可以尝试基于此库的PDF Creator Bundle

使用回调进行自定义调整

由于高级方法,可能无法支持所有特定库功能。要添加特定配置,您可以使用此API提供的回调机制。

use HeimrichHannot\PdfCreator\BeforeCreateLibraryInstanceCallback;
use HeimrichHannot\PdfCreator\BeforeOutputPdfCallback;
use HeimrichHannot\PdfCreator\Concrete\MpdfCreator;
use HeimrichHannot\PdfCreator\PdfCreatorFactory;

$pdf = PdfCreatorFactory::createInstance(MpdfCreator::getType());

$pdf->setBeforeCreateInstanceCallback(function (BeforeCreateLibraryInstanceCallback $callbackData) {
    $parameter = $callbackData->getConstructorParameters();
    $parameter['config']['fonttrans'] = [
        'rotis-sans-serif-w01-bold' => 'rotis-sans-serif',
        'rotissansserifw01-bold' => 'rotis-sans-serif',
    ];
    $callbackData->setConstructorParameters($parameter);
    return $callbackData;
});

$pdf->setBeforeOutputPdfCallback(function (BeforeOutputPdfCallback $callbackData) use ($pdf) {
    $mpdf = $callbackData->getLibraryInstance();
    $mpdf->AddPage();
    $parameters = $callbackData->getOutputParameters();
    $parameters['name'] = 'custom_'.$pdf->getFilename();
    $callbackData->setOutputParameters($parameters);
});

使用返回值

渲染方法返回一个PdfCreatorResult实例。它包含输出模式和对应输出模式的文件路径或文件内容。

use HeimrichHannot\PdfCreator\Concrete\DompdfCreator;
use HeimrichHannot\PdfCreator\PdfCreatorFactory;

$pdf = PdfCreatorFactory::createInstance(DompdfCreator::getType());
$result = $pdf->setOutputMode($pdf::OUTPUT_MODE_FILE)
    // ...
    ->render()
;
$filepath = $result->getFilePath();

$pdf = PdfCreatorFactory::createInstance(DompdfCreator::getType());
$result = $pdf->setOutputMode($pdf::OUTPUT_MODE_STRING)
    // ...
    ->render()
;
$filepath = $result->getFileContent();

文档