我正在开始一个新项目,我也是Zend Framework 2的新手。 您有什么建议从您希望作为变量传递的html代码生成pdf($ html)? 我在网上看到DOMPDF非常好,但我不确定如何使用它,查看文档。 什么是初学者最简单的方法?
答案 0 :(得分:18)
您选择的DOMPDF是对的。它是Zend Framework 2中最容易使用的。只需添加一个简单的模块(DOMPDFModule)就可以了。因为你是Zend Framework 2的新手;这是如何使用它。
将“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 中的模块部分中
示例:强>
application.config.php
'modules' => array(
'Application',
'DOMPDFModule',
),
我们已准备好在我们的项目中使用它。
打开我们要生成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中的大多数操作一样;此操作还将具有相应的视图文件 generatepdf.phtml ,其中我们实际放置要转换为PDF的HTML。
示例:强>
generatepdf.phtml
<html>
<body>
<h1>My Name is Blah</h1>
</body>
</html>
现在,如果我们去了我们创建的路线;如果浏览器支持查看PDF,PDF将显示在同一窗口中。
可以使用 PdfModel()的 setVariables()方法在 generatepdfAction()中完成>
示例:强>
IndexController.php
public function generatepdfAction()
{
$pdf = new PdfModel();
$pdf->setVariables(array(
'name' => 'John Doe',
));
return $pdf;
}
generatepdf.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;
}
希望这有帮助。
答案 1 :(得分:2)
看看:http://www.mpdf1.com/mpdf/index.php
它从html生成pdf。如果你熟悉css和html,那么库很容易启动。它还具有良好的文档和丰富的功能。
从他们的文档中借鉴:
include('../mpdf.php');
// Create an instance of the class:
$mpdf=new mPDF();
// Write some HTML code:
$mpdf->WriteHTML('<p>Hello World</p>');
// Output a PDF file:
$mpdf->Output();
exit;
答案 2 :(得分:0)
如果你使用DOMPDF,Zend Framework 2有一个模块DOMPDFModule,它使pdf生成变得轻而易举。
<?php
namespace Application\Controller;
use Zend\Mvc\Controller\AbstractActionController;
use DOMPDFModule\View\Model\PdfModel;
class ReportController extends AbstractActionController
{
public function monthlyReportPdfAction()
{
$pdf = new PdfModel();
$pdf->setOption('filename', 'monthly-report'); // Triggers PDF download, automatically appends ".pdf"
$pdf->setOption('paperSize', 'a4'); // Defaults to "8x11"
$pdf->setOption('paperOrientation', 'landscape'); // Defaults to "portrait"
// To set view variables
$pdf->setVariables(array(
'message' => 'Hello'
));
return $pdf;
}
}
您可以使用Snappy从网址或html页面使用wkhtmltopdf生成PDF。对于Zend Framework 2,有一个模块MvlabsSnappy。