php - 在 ZF2 中生成 PDF?

标签 php pdf zend-framework2 dompdf

我正在开始一个新项目,而且我对 Zend Framework 2 也是相当陌生。 从要作为变量($html)传递的 html 代码生成 pdf 的建议是什么? 我在网上看到 DOMPDF 非常好,但我不确定如何使用它,查看文档。 对于初学者来说最简单的方法是什么?

最佳答案

您对 DOMPDF 的选择是正确的。它是 Zend Framework 2 中最容易使用的。只需添加一个简单的模块 (DOMPDFModule) 即可。由于您是 Zend Framework 2 的新手;下面是如何使用它。

第 1 步:下载 DOMPDFModule

"dino/dompdf-module": "dev-master"添加到composer.json文件的require部分

示例:
composer.json

"require": {
    "php": ">=5.3.3",
    "zendframework/zendframework": "2.2.*",
    "dino/dompdf-module": "dev-master"
}

现在使用composer安装更新依赖项。 Composer 将自动包含依赖项,否则我们将使用 include("dompdf.php")

示例:

php composer.phar install

接下来我们必须将 DOMPDFModule 添加到 config/application.config.php

modules 部分 示例:
application.config.php

'modules' => array(
    'Application',
    'DOMPDFModule',
),

我们准备在我们的项目中使用它。

第 2 步:在 Zend Framework 2 项目中使用它

打开 Controller ,我们将在其中生成 PDF 并添加
使用 DOMPDFModule\View\Model\PdfModel;
到顶部;在命名空间之后。

示例:
IndexController.php

<?php
namespace Application\Controller;

use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
use DOMPDFModule\View\Model\PdfModel;

接下来我们必须将必要的 PDF 生成代码放置到所需的操作中。

示例:
我假设;要下载 pdf,我们使用以下路径。
example.com/generatepdf

为此创建一个generatepdfAction() 方法,我们将在其中放置 PDF 生成逻辑,如下所示。

IndexController.php

public function generatepdfAction()
{
    $pdf = new PdfModel();
    return $pdf;
}

作为 Zend Framework 2 中的大多数Action;此操作还将有一个相应的 View 文件 generatepdf.phtml,我们实际将要转换为 PDF 的 HTML 放置在该文件中。

示例:
生成pdf.phtml

<html>
  <body>
      <h1>My Name is Blah</h1>
  </body>
</html>

现在,如果我们转到我们创建的路线;如果浏览器支持查看 PDF,则 PDF 将显示在同一窗口中。

传递变量以查看文件

可以在 generatepdfAction() 中使用 PdfModel()

setVariables() 方法来完成> 示例:
IndexController.php

public function generatepdfAction()
{
    $pdf = new PdfModel();
    $pdf->setVariables(array(
      'name' => 'John Doe',
    ));
    return $pdf;
}

生成pdf.phtml

<html>
  <body>
      <h1>My Name is <?php echo $this->name; ?></h1>
  </body>
</html>

设置文件名并强制下载

设置文件名将触发自动下载 PDF 文件。可以使用 PdfModel()setOption() 方法设置文件名。

示例:
IndexController.php

public function generatepdfAction()
{
    $pdf = new PdfModel();
    $pdf->setOption("filename", "my-file");
    return $pdf;
}

将自动添加文件扩展名(.pdf)。

设置纸张大小和纸张方向

可以通过paperSizepaperOrientation选项设置纸张大小和纸张方向

示例:
IndexController.php

public function generatepdfAction()
{
    $pdf = new PdfModel();
    $pdf->setOption("paperSize", "a4"); //Defaults to 8x11
    $pdf->setOption("paperOrientation", "landscape"); //Defaults to portrait
    return $pdf;
}

希望这对您有所帮助。

关于php - 在 ZF2 中生成 PDF?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23695736/

相关文章:

javascript - 更改字符/字体内的颜色

javascript - 使用ajax为select2预选字段

pdf - 使用 Ghostscript 调整 PDF 大小

Doctrine/Zend Framework 2 中的 MySQL 索引

zend-framework2 - 如何在 Zend Framework 2 中创建自定义表单元素?

php - 如何在 Zend Framework 2 中引导 session

返回 NULL 的 PHP MySQL 查询

php - 使用 PHP/SQL,如何存储和检索彼此堆叠/嵌套的评论?

javascript - 在客户端转换office文档

javascript - 如何使用 TCPDF 在可编辑 PDF 中获取日期选择器