traincase / laravel-pdf-tinker
实时调试和修改将转换为PDF的HTML模板。
Requires
- php: ^8.0
- ext-json: *
- laravel/framework: ^9.0
- league/flysystem: ^3.0
- traincase/html-to-pdf-tinker: ^2.0
Requires (Dev)
- larapack/dd: ^1.1
- orchestra/testbench-dusk: ^7.4
- phpunit/phpunit: ^9.0
README
此包旨在作为本地开发的工具。请勿将此包包含在生产构建中。
Laravel PDF Tinker 提供了一个快速界面,用于调试和修改将转换为PDF的HTML模板的创建。
如果你是那些经常需要为每个客户创建自定义模板(订单确认、商品交付、发票等)的人,这个包适合你。
安装
由于此包仅用于本地开发,请将其作为开发依赖项安装。
composer require traincase/laravel-pdf-tinker --dev
如果已选择退出自动发现,则包将自动注册其服务提供程序。例如,在 AppServiceProvider
中添加以下内容
// Put this inside the 'register' method if ($this->app->isLocal()) { $this->register(\Traincase\LaravelPdfTinker\PdfTinkerServiceProvider::class); }
不要忘记检查 驱动程序部分,以查看您计划使用的驱动程序是否需要任何额外的设置。
用法
您可以在沙盒的界面中找到大多数选项。您可能不需要编辑配置。尽管如此,还有一些可以配置的事情。
配置
路由前缀
服务提供程序将注册一些必要的路由,以便设置和运行沙盒。默认情况下,所有路由都以前缀 vendor/laravel-pdf-tinker
开头。这意味着沙盒可在 your-app.tld/vendor/laravel-pdf-tinker/playground
上使用。
您是否与路由存在意外冲突?不用担心!
您可能需要发布配置文件(php artisan vendor:publish
),然后编辑 config/laravel-pdf-tinker.php
中的 route_prefix
键,以使用您喜欢的不同前缀。
驱动程序选项
如果您已发布配置文件,您还可以更新 default_driver_options.<your-driver-alias>
键,以设置将在界面(在“配置”>“选项”下)中设置的默认选项。这仅会在您进入沙盒时使用,您始终可以更新沙盒内的配置。任何更改都不会在您离开页面后持久化,因此如果您经常进行调试,您可能想要覆盖默认选项。
驱动程序
目前有两个可用的驱动程序。
DomPDF
DomPdf 是开始使用的最简单驱动程序。按照安装说明进行后,所有内容都应该已经就绪。
快乐的调试!
Wkhtmltopdf
wkhtmltopdf 驱动程序需要 wkhtmltopdf
可执行文件在您的PATH中可用。这意味着如果在终端中运行 wkhtmltopdf --version
,它应该输出类似以下内容
$ wkhtmltopdf --version wkhtmltopdf 0.12.5 (with patched qt)
如果您使用 mac&homebrew,可以运行 brew cask install wkhtmltopdf
。在其他系统上,从 wkhtmltopdf 网站下载 您系统的二进制文件。
创建自己的驱动程序
可以创建您选择的HTML2PDF生成库的驱动程序。只需创建您的驱动程序并将其与 PdfTinkerManager
注册。
- 首先,现在是创建您驱动程序的时候了。您的驱动程序应扩展
\Traincase\HtmlToPdfTinker\Drivers\Driver
。您可以从Traincase\LaravelPdfTinker\DompdfDriver
中获取一个示例。 - 使用
PdfTinkerManager
进行注册。将以下行添加到您已注册的服务提供者中的boot
方法中。public function boot() { if ($this->app->isLocal()) { $this->app->resolving(\Traincase\HtmlToPdfTinker\PdfTinkerManager::class, function($manager) { $manager->extend('test-driver', function() { // Need to fetch some things from the container? Sure. $dependency = $this->app->make(\SomeFancyClass::class); return new \App\Drivers\YourFancyDriver($dependency); }); }); } }
- 您的驱动程序将自动显示在驱动程序下拉菜单中,您可以自由地进行尝试!
准备好了,准备...
如果您遵循了所有安装说明,请继续尝试!打开您的浏览器,导航到 your-app.tld/vendor/laravel-pdf-tinker/playground
。