hamdallah90/easy-laravel-pdf

easy-laravel-pdf:一个Laravel包,用于使用Docker中的Puppeteer从视图或HTML生成PDF/图片,实现无缝集成。

1.0 2024-06-10 23:20 UTC

This package is auto-updated.

Last update: 2024-09-08 14:50:46 UTC


README

概览

Easy Laravel PDF 是一个Laravel包,它简化了在Laravel应用中生成PDF。此包使用一个Node.js服务 node-html-to-pdf,可以在本地运行或通过Docker运行以将HTML转换为PDF。

安装

先决条件

  • PHP 7.3 或更高版本
  • Laravel 6.0 或更高版本
  • Composer
  • Node.js 和 npm(可选,如果在不使用Docker的情况下本地运行服务)
  • Docker(可选,用于使用Docker容器)

安装包

  1. 通过Composer添加包

    composer require hamdallah90/easy-laravel-pdf
  2. 发布配置: Laravel的包发现会自动注册服务提供者。要发布包配置,请运行

    php artisan vendor:publish --tag=pdf-config

配置

编辑 config/easy-laravel-pdf.php 中已发布的配置文件以调整默认PDF选项等设置。

使用包

EasyLaravelPdf 提供了多种生成PDF文件的方法。以下是您如何在Laravel应用中使用它们的方法

加载和渲染视图

use Jouda\EasyLaravelPdf\Facades\EasyLaravelPdf;

$pdf = EasyLaravelPdf::loadView('view.name', ['dataKey' => 'dataValue']);
return $pdf->stream('example.pdf');

直接加载HTML内容

将原始HTML内容加载到PDF生成器中

use Jouda\EasyLaravelPdf\Facades\EasyLaravelPdf;

EasyLaravelPdf::loadView('view.name', ['dataKey' => 'dataValue'])->save('/path/to/file.pdf');

获取PDF作为UploadedFile

获取PDF作为UploadedFile,这在测试或进一步操作时可能很有用

use Jouda\EasyLaravelPdf\Facades\EasyLaravelPdf;

$file = EasyLaravelPdf::loadHtml('<h1>Test PDF</h1>')->getFile();
$file->store('save-to-s3-or-local-path')

直接将PDF流式传输到浏览器

将PDF直接流式传输到浏览器,这对于内联查看很有用

use Jouda\EasyLaravelPdf\Facades\EasyLaravelPdf;

return EasyLaravelPdf::loadHtml('<h1>Test PDF</h1>')->stream('optional-filename.pdf');  // Streams the PDF; if a filename is provided, it will be used

配置和定制

您可以根据需要配置puppeteer选项和启动参数以更好地控制PDF生成

use Jouda\EasyLaravelPdf\Facades\EasyLaravelPdf;
$pdf = EasyLaravelPdf::setOptions(['format' => 'A4']);
$pdf->setPuppeteerLunchArgs(['--no-sandbox', '--disable-setuid-sandbox']);
$pdf->loadHtml('<h1>Customized PDF</h1>');
$pdf->save('path/to/your/customized.pdf');

Node HTML to PDF 服务

此服务对于PDF生成至关重要,可以在本地或Docker容器中运行。

本地运行

  1. 导航到 node-html-to-pdf 目录。
  2. 安装依赖项
    npm install
  3. 启动服务器
    npm start

使用Docker运行

  1. 使用Dockerfile: 使用提供的Dockerfile构建Docker镜像

    cd node-html-to-pdf
    docker build -t your-username/html-to-pdf .
    docker run -p 3000:3000 your-username/html-to-pdf
  2. 使用预构建镜像: 或者,您可以使用Docker Hub上可用的预构建Docker镜像

    docker pull hamdallah/html-to-pdf
    docker run -p 3000:3000 hamdallah/html-to-pdf

支持

对于问题、功能请求或贡献,请使用此存储库的GitHub问题部分。