TCPDF现在是世界上最活跃的开源项目之一, 每天都有数百万的用户使用, 并且包含在成千上万的CMS和Web应用程序中, 以使用php生成pdf文件。
要在symfony 2中使用tcpdf, 我们将添加一个包, 使我们的实现更容易。在symfony 2中, 一种好的做法是使用捆绑软件, 而不是在控制器中使用require一次来包含我们的库。该捆绑包(不是PHPExcel库)的创建者是WhiteOctober, 可以在github的官方存储库中查看源代码。
要安装我们的捆绑包, 我们将在require区域中添加composer.json文件。
"whiteoctober/tcpdf-bundle": "dev-master",
如果直接在控制台中使用composer, 则执行:
$ composer require whiteoctober/tcpdf-bundle
下载了必需的组件后, 只需将捆绑包添加到你的内核(位于/app/AppKernel.php中的AppKernel.php文件), 即可:
$bundles = array(
// ...
new WhiteOctober\TCPDFBundle\WhiteOctoberTCPDFBundle(), // register bundle
);
TCPDF允许你从html标记创建pdf(很棒吗?)。要在响应中返回PDF, 请使用以下代码:
public function returnPDFResponseFromHTML($html){
//set_time_limit(30); uncomment this line according to your needs
// If you are not in a controller, retrieve of some way the service container and then retrieve it
//$pdf = $this->container->get("white_october.tcpdf")->create('vertical', PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
//if you are in a controlller use :
$pdf = $this->get("white_october.tcpdf")->create('vertical', PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
$pdf->SetAuthor('Our Code World');
$pdf->SetTitle(('Our Code World Title'));
$pdf->SetSubject('Our Code World Subject');
$pdf->setFontSubsetting(true);
$pdf->SetFont('helvetica', '', 11, '', true);
//$pdf->SetMargins(20, 20, 40, true);
$pdf->AddPage();
$filename = 'ourcodeworld_pdf_demo';
$pdf->writeHTMLCell($w = 0, $h = 0, $x = '', $y = '', $html, $border = 0, $ln = 1, $fill = 0, $reseth = true, $align = '', $autopadding = true);
$pdf->Output($filename.".pdf", 'I'); // This will output the PDF as a response directly
}
前面的示例直接在浏览器中返回PDF响应, 现在, 如果我们想在symfony控制器中使用此函数, 我们可以简单地在任何行中调用该函数。是的, 将Output用作在线PDF时, 不需要特殊的symfony响应, 这由TCPDF库处理。然后在我们的控制器中可以使用:
public function indexAction(){
// You can send the html as you want
//$html = '<h1>Plain HTML</h1>';
// but in this case we will render a symfony view !
// We are in a controller and we can use renderView function which retrieves the html from a view
// then we send that html to the user.
$html = $this->renderView(
'Templates/template.html.twig', array(
'someDataToView' => 'Something'
)
);
$this->returnPDFResponseFromHTML($html);
}
TCPDF使开发人员的工作变得非常简单。你可以在此处阅读官方的TCPDF文档以及此处的所有示例。
评论前必须登录!
注册