betterbrief/silverstripe-pdf

此包已被废弃且不再维护。未建议替代包。

使用 SSViewer、Snappy 和 wkhtmltopdf 生成网页或对象的 PDF 渲染

安装次数: 6,495

依赖者: 0

建议者: 0

安全: 0

星星: 11

关注者: 5

分支: 3

公开问题: 1

类型:silverstripe-module

v1.0.0 2018-02-09 15:28 UTC

This package is not auto-updated.

Last update: 2024-01-30 17:43:34 UTC


README

你是否曾希望以缓慢和膨胀的格式提供你的 SilverStripe 网站内容?如果是这样,此模块能满足你的需求!

安装

  1. 使用 Composer: composer require betterbrief/silverstripe-pdf
  2. 安装正确的 wkhtmltopdf 版本...
  • 你使用的二进制版本取决于你的架构。要找出服务器正在运行的架构,请在终端窗口中输入 arch。在 开发环境 中,我们使用 amd64

设置

  1. 一旦您从 composer 获取了模块,您将需要获取 wkhtmltopdf 二进制文件,然后配置 PDFExtension 以指向它。Composer 的建议给您提供了选项。
  2. PDFExtension 添加到您希望将其渲染为 PDF 的对象。

配置示例

PDFExtension:
  wkhtmltopdf_binary: '/vagrant/www/vendor/bin/wkhtmltopdf-amd64'
MyDataObject:
  extensions:
    - PDFExtension

使用

  1. 在您的模板文件夹中合适的目录内创建一个名为 MyDataObject_pdf.ss 的模板文件。请注意,如果您愿意,可以覆盖此名称。
  2. 如果这是一个独立的文件,您需要包含基本标签以便正确渲染资产。在您的模板中: <% base_tag %>
  3. 恭喜,现在您可以调用 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 许可协议。