betterbrief / silverstripe-pdf
此包已被废弃且不再维护。未建议替代包。
使用 SSViewer、Snappy 和 wkhtmltopdf 生成网页或对象的 PDF 渲染
v1.0.0
2018-02-09 15:28 UTC
Requires
- php: >=5.3.2
- knplabs/knp-snappy: ~0.2.0@stable
Suggests
- h4cc/wkhtmltopdf-amd64: Required wkhtmltopdf binary for Linux amd64
- h4cc/wkhtmltopdf-i386: Required wkhtmltopdf binary for Linux i386
- messagedigital/wkhtmltoimage-osx: Required wkhtmltopdf binary for OSX
This package is not auto-updated.
Last update: 2024-01-30 17:43:34 UTC
README
你是否曾希望以缓慢和膨胀的格式提供你的 SilverStripe 网站内容?如果是这样,此模块能满足你的需求!
安装
- 使用 Composer:
composer require betterbrief/silverstripe-pdf
- 安装正确的
wkhtmltopdf
版本...
- 你使用的二进制版本取决于你的架构。要找出服务器正在运行的架构,请在终端窗口中输入
arch
。在 开发环境 中,我们使用 amd64。
设置
- 一旦您从 composer 获取了模块,您将需要获取 wkhtmltopdf 二进制文件,然后配置 PDFExtension 以指向它。Composer 的建议给您提供了选项。
- 将
PDFExtension
添加到您希望将其渲染为 PDF 的对象。
配置示例
PDFExtension: wkhtmltopdf_binary: '/vagrant/www/vendor/bin/wkhtmltopdf-amd64' MyDataObject: extensions: - PDFExtension
使用
- 在您的模板文件夹中合适的目录内创建一个名为
MyDataObject_pdf.ss
的模板文件。请注意,如果您愿意,可以覆盖此名称。 - 如果这是一个独立的文件,您需要包含基本标签以便正确渲染资产。在您的模板中:
<% base_tag %>
- 恭喜,现在您可以调用
MyDataObject->generatePDF()
并获取您的 PDF 数据。- 如果您想将输出发送到浏览器,您需要将响应体设置为
generatePDF()
的响应,使用SS_HTTPResponse->addHeader('Content-Type', 'application/pdf')
。 - 要强制下载,使用
SS_HTTPResponse->addHeader('Content-Disposition', 'attachment')
- 如果您想将输出发送到浏览器,您需要将响应体设置为
配置
您可以通过修改 PDFExtension->generatePDF()
参数按需配置生成。
- 使用
$userOptions
参数传入 Snappy/wkhtmltopdf 选项。 这是完整的列表。 - 使用
$variables
传入您的标准 SSViewer 模板变量。请注意,默认情况下enable-javascript
已关闭。
配置选项 | 默认值 | 如何使用 |
---|---|---|
wkhtmltopdf_binary |
null |
将此设置为 wkhtmltopdf 的绝对位置,否则将无法正常工作。 |
render_host |
http://localhost/ |
由于页面是在服务器上生成的,因此公共面向的主机通常无法访问,而是使用 localhost。您可能希望在部署到分布式环境时更改此设置。 |
注意事项
- 页面是在当前会话的上下文中生成的。因此,如果请求用户是登录管理员,PDF 将使用该成员的状态和权限级别生成。
- 为了避免渲染时出现图形/字体问题,建议安装以下软件包:fontconfig、libXrender、libXext 和 urw-fonts。您可以在 CentOS 上使用以下命令安装这些软件包:
yum install fontconfig libXrender libXext urw-fonts
需求
- wkhtmltopdf 将使用 Webkit 作为渲染引擎,将您生成的 HTML 转换为 PDF 文档。
- Knp's Snappy 提供了wkhtmltopdf和PHP之间的桥梁功能
许可协议
- silverstripe-pdf的代码在BSD许可协议下向您提供(请参阅LICENSE)
- 截至 2014-05-30,Knp Snappy 采用 MIT 许可协议
- 截至 2014-05-30,wkhtmltopdf 采用 LGPL 许可协议。