我正在开始一个新项目,而且我对 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)。
设置纸张大小和纸张方向
可以通过paperSize和paperOrientation选项设置纸张大小和纸张方向
示例:
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/