个性化阅读
专注于IT技术分析

如何使用tcpdf在Symfony 2和3中使用php创建pdf文件

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文档以及此处的所有示例。

赞(0)
未经允许不得转载:srcmini » 如何使用tcpdf在Symfony 2和3中使用php创建pdf文件

评论 抢沙发

评论前必须登录!