actualreports / pdfgeneratorapi-laravel
Laravel 的 PDF 生成器 API 包
Requires
- php: ~5.6|~7.0
- actualreports/pdfgeneratorapi-php: ^1.0
- illuminate/support: ~5.1
Requires (Dev)
- phpunit/phpunit: >=5.4.3
This package is not auto-updated.
Last update: 2024-09-25 10:03:32 UTC
README
此 Laravel 包创建控制器和路由,以便轻松使用 PDF 生成器 API 服务。它还包括用于打印、下载生成的文件以及在编辑视图中打开模板的 JavaScript 接口。
安装
使用以下命令通过 composer 安装此包
composer require actualreports/pdfgeneratorapi-laravel
如果您不使用 Laravel 5.5 自动发现,请将服务提供者和别名添加到 config/app.php。如果您运行 Laravel 5.5,则此操作将自动完成。
添加提供者
ActualReports\PDFGeneratorAPILaravel\ServiceProvider::class,
添加别名
'PDFGeneratorAPI' => ActualReports\PDFGeneratorAPILaravel\Facade::class,
将配置文件发布到您的配置文件夹(config/pdfgeneratorapi.php)
php artisan vendor:publish --provider="ActualReports\PDFGeneratorAPILaravel\ServiceProvider" --tag=config
将 JavaScript 发布到您的资源文件夹(resources/assets/vendor/pdfgeneratorapi/index.js)
php artisan vendor:publish --provider="ActualReports\PDFGeneratorAPILaravel\ServiceProvider" --tag=public --force
配置
将配置添加到您的 .env 文件
PDF_GENERATOR_KEY={YOUR_API_KEY} PDF_GENERATOR_SECRET={YOUR_API_SECRET} PDF_GENERATOR_BASE_URL=https://us1.pdfgeneratorapi.com/api/v3/ PDF_GENERATOR_USE_DATA_URL=true
如果 "PDF_GENERATOR_USE_DATA_URL" 设置为 true,则我们发送一个数据文件的 URL 而不是在请求正文中发送数据。此功能是由于 URL 长度限制而存在的。当我们通过带有查询参数的 json 数据重定向用户到编辑视图时,我们受到浏览器 URL 长度的限制,并且数据字符串可能不完整。
要使此功能正常工作,您需要链接您的公共文件夹。数据文件保存到 /storage/app/public/pdfgenerator
php artisan storage:link
用法
我们包含了一个 JavaScript 接口,该接口调用下面定义的路由,并在浏览器中显示结果。如果您需要更多灵活性,您可以创建自己的前端界面,使用这些路由。
数据存储库
主要控制器依赖于 ActualReports\PDFGeneratorAPILaravel\Repositories\DataRepository 来获取发送到 PDF 生成器服务的请求数据。默认情况下,数据存储库通过 Input::get('data') 在请求中查找 "data" 参数。
您可以通过实现接口 ActualReports\PDFGeneratorAPILaravel\Contracts\DataRepository 并在 AppServiceProvider.php 的 register() 函数中重写绑定来添加自己的 DataRepository。
$this->app->bind( 'ActualReports\PDFGeneratorAPILaravel\Contracts\DataRepository', 'App\Repositories\DataRepository' );
用户存储库
主要控制器依赖于 ActualReports\PDFGeneratorAPILaravel\Repositories\UserRepository
来为已登录用户生成唯一的 workspace 标识符。
您可以通过实现接口 ActualReports\PDFGeneratorAPILaravel\Contracts\UserRepository
并在 AppServiceProvider.php 的 register() 函数中重写绑定来添加自己的 UserRepository。
$this->app->bind( 'ActualReports\PDFGeneratorAPILaravel\Contracts\DataRepository', 'App\Repositories\DataRepository' );
路由
可用路由
- pdfgenerator.templates.all: GET /pdfgenerator/templates
- pdfgenerator.templates.get: GET /pdfgenerator/templates/{template}
- pdfgenerator.templates.output: GET|POST /pdfgenerator/templates/{template}/{output}/{format}
- pdfgenerator.templates.new: GET|POST /pdfgenerator/templates/new
- pdfgenerator.templates.edit: GET|POST /pdfgenerator/templates/{template}/edit
- pdfgenerator.templates.copy: GET|POST /pdfgenerator/templates/{template}/copy
JavaScript 接口
初始化 JavaScript 接口
PDFGeneratorAPI.init();
获取可用模板列表
PDFGeneratorAPI.list().then((response) => { console.log(response); });
执行打印命令,生成文档并打开浏览器打印对话框
PDFGeneratorAPI.print(template, format, data).then(() => { console.log('resolve print promise'); });
执行下载命令,生成文档并自动开始下载
PDFGeneratorAPI.download(template, format, data).then(() => { console.log('resolve download promise'); });
执行内联命令,生成文档并在新标签页/窗口中打开它
PDFGeneratorAPI.inline(template, format, data).then(() => { console.log('resolve inline promise'); });
在新标签页/窗口中打开模板编辑器
PDFGeneratorAPI.edit(template, data).then(() => { console.log('resolves when editor tab/window is closed'); });
创建给定模板的副本,并在新标签页/窗口中打开模板编辑器
PDFGeneratorAPI.copy(template, data, 'New name for copied template').then(() => { console.log('resolves when editor tab/window is closed'); });