heimrichhannot / pdf-creator
PdfCreator是一个使用PHP创建PDF文件的 高级API。
0.4.3
2024-08-01 12:29 UTC
Requires
- php: ^7.4 || ^8.0
- ausi/slug-generator: ^1.1
- psr/log: ^1.0 || ^2.0 || ^3.0
- symfony/filesystem: ^3.4 || ^4.0 || ^5.0 || ^6.0
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();