Codeigniter如何创建PDF

时间:2013-11-06 07:37:36

标签: php codeigniter pdf

我要创建发票系统,我现在正在为此做准备。 我要用Codeigniter。 问题是我想用PDF创建发票,以便我可以通过电子邮件发送。

你们的建议是什么? 我在想HTML到PDF的转换, 或者在屏幕上显示发票并安装pdf打印机(当您点击打印并选择打印到PDF文件时) 或者创建一个word文档并连接到我认为使用odbc的MySQL服务器。

你们中的任何人都有过这方面的经验吗?

6 个答案:

答案 0 :(得分:25)

请点击此链接,它应该工作..

  

http://www.php-guru.in/2013/html-to-pdf-conversion-in-codeigniter/

或者您可以在下面看到

网上有许多PHP库可将HTML页面转换为PDF文件。当您在核心PHP中处理任何Web应用程序时,它们易于实现和部署。但是当我们尝试将这些库与任何框架或模板集成时,如果我们使用的框架没有自己的库来将它与任何PDF库集成,那么它就变得非常繁琐。当有一个要求将HTML页面转换为PDF文件并且我使用的框架是codeigniter时,同样的情况出现在我面前。

我在网上搜索并获得了许多PHP库来将HTML页面转换为PDF文件。经过大量的研究和谷歌搜索,我决定使用TCPDF PHP库将HTML页面转换为PDF文件以满足我的要求。我发现TCPDf PHP库很容易与codeigniter集成并声明在其上工作。在成功完成codeigniter和TCPDF的集成之后,我想到了在网上共享这个脚本。

现在,让我们从代码的实现开始。

下载TCPDF库代码,您可以从TCPDF网站http://www.tcpdf.org/下载。

现在在webign应用程序的“application / helpers /”目录中创建“tcpdf”文件夹,该目录是在codeigniter中开发的。复制所有TCPDF库文件并将其粘贴到“application / helpers / tcpdf /”目录中。更新TCPDF的配置文件“tcpdf_config.php”,该文件位于“application / helpers / tcpdf / config”目录中,根据您的应用程序要求进行更改。我们可以在cofing文件中设置徽标,字体,字体大小,高度,标题等。为tcpdf文件夹中的“cache”文件夹提供读取,写入权限。在定义目录结构,更新配置文件和分配权限之后,这里将启动您的实际编码部分。

在codeigniter的“application / helpers /”目录中创建一个PHP帮助文件,比如说“pdf_helper.php”,然后复制下面给出的代码并将其粘贴到帮助文件中

助手:application / helpers / pdf_helper.php

function tcpdf()
{
    require_once('tcpdf/config/lang/eng.php');
    require_once('tcpdf/tcpdf.php');
}

然后在控制器文件中调用上面的帮助器,假设我们的控制器文件是“createpdf.php”,并且它的方法为pdf(),因此方法pdf()将加载“pdf_helper”帮助器并且还将具有任何其他代码。

Controller:application / controllers / createpdf.php

function pdf()
{
    $this->load->helper('pdf_helper');
    /*
        ---- ---- ---- ----
        your code here
        ---- ---- ---- ----
    */
    $this->load->view('pdfreport', $data);
}

现在创建一个视图文件,在“application / views /”目录中说“pdfreport.php”,它也在控制器的pdf()方法中加载。所以在视图文件中我们可以直接调用我们在“pdf_helper”帮助器中定义的tcpdf()函数,它将加载所有必需的TCPDF类,函数,变量等。然后我们可以直接使用TCPDF示例代码,因为它在我们的当前控制器或视图。现在在当前视图“pdfreport”中复制下面的给定代码:

查看:application / views / pdfreport.php

tcpdf();
$obj_pdf = new TCPDF('P', PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
$obj_pdf->SetCreator(PDF_CREATOR);
$title = "PDF Report";
$obj_pdf->SetTitle($title);
$obj_pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, $title, PDF_HEADER_STRING);
$obj_pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
$obj_pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));
$obj_pdf->SetDefaultMonospacedFont('helvetica');
$obj_pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
$obj_pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
$obj_pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
$obj_pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
$obj_pdf->SetFont('helvetica', '', 9);
$obj_pdf->setFontSubsetting(false);
$obj_pdf->AddPage();
ob_start();
    // we can have any view part here like HTML, PHP etc
    $content = ob_get_contents();
ob_end_clean();
$obj_pdf->writeHTML($content, true, false, true, false, '');
$obj_pdf->Output('output.pdf', 'I');

因此,我们的HTML页面将使用CodeIgniter中的TCPDF转换为PDF。我们还可以使用TCPDF库在PDF文件中嵌入图像,CSS和修改。

答案 1 :(得分:6)

TCPDF是用于生成pdf文档的PHP类。我们将学习TCPDF与CodeIgniter的集成。我们将使用以下步骤将TCPDF与CodeIgniter集成。

第1步

下载TCPDF Click Here

第2步

解压缩application / libraries / tcpdf中的上述内容。

第3步

在application / libraries / Pdf.php

中创建一个新文件
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
require_once dirname(__FILE__) . '/tcpdf/tcpdf.php';
class Pdf extends TCPDF
{ function __construct() { parent::__construct(); }
}
/*Author:Tutsway.com */
/* End of file Pdf.php */
/* Location: ./application/libraries/Pdf.php */

第4步

在application / controllers / pdfexample.php中创建控制器文件。

 <?php
    class pdfexample extends CI_Controller{ 
    function __construct()
    { parent::__construct(); } function index() {
    $this->load->library('Pdf');
    $pdf = new Pdf('P', 'mm', 'A4', true, 'UTF-8', false);
    $pdf->SetTitle('Pdf Example');
    $pdf->SetHeaderMargin(30);
    $pdf->SetTopMargin(20);
    $pdf->setFooterMargin(20);
    $pdf->SetAutoPageBreak(true);
    $pdf->SetAuthor('Author');
    $pdf->SetDisplayMode('real', 'default');
    $pdf->Write(5, 'CodeIgniter TCPDF Integration');
    $pdf->Output('pdfexample.pdf', 'I'); }
    }
    ?>

这对我有用。我参考了http://www.tutsway.com/codeignitertcpdf.php

答案 2 :(得分:5)

我使用了MPDF库。有关更多信息,请查看本教程  https://arjunphp.com/generating-a-pdf-in-codeigniter-using-mpdf/

答案 3 :(得分:2)

我之前使用过 dompdf 取得了一些成功。虽然对于格式错误的HTML可能有点挑剔,但仍然有一些CSS方法不受支持(例如css float不起作用)。

从github下载软件包,并将其放入dompdf目录中名为application/thirdparty的文件夹中。

然后你可以用一些函数创建一个帮助器来使用dompdf库,这是一个例子:

dompdf_helper.php

<?php if (!defined('BASEPATH')) exit('No direct script access allowed');

function pdf_create($html, $filename='', $stream=TRUE) 
{
    include APPPATH.'thirdparty/dompdf/dompdf_config.inc.php';

    $dompdf = new DOMPDF();
    $dompdf->load_html($html);
    $dompdf->render();
    if ($stream) {
        $dompdf->stream($filename.".pdf", array("Attachment" => 0));
    } else {
        return $dompdf->output();
    }
}

您只需将您的HTML pdf_create方法作为字符串传递,它将生成的pdf文件的文件名,然后是可选的第三参数。第三个参数是一个真/假标志,用于确定是否应该在提示用户下载文件之前将文件保存到服务器。

答案 4 :(得分:0)

在application \ helpers文件夹中创建新的pdf帮助文件,并将其命名为pdf_helper.php。在pdf_helper.php文件中添加以下代码:

        function tcpdf()
      {
        require_once('tcpdf/config/lang/eng.php');
        require_once('tcpdf/tcpdf.php');
      }
     ?>

了解更多 请点击以下链接:

 http://www.ccode4u.com/how-to-generate-pdf-file-in-codeigniter.html

答案 5 :(得分:0)

我在我的项目中使用了mpdf。在Codeigniter-3中,在application / third_party下放置了mpdf文件,然后以这种方式使用:

 /**
 * This function is used to display data in PDF file.
 * function is using mpdf api to generate pdf.
 * @param number $id : This is unique id of table.
 */
function generatePDF($id){
    require APPPATH . '/third_party/mpdf/vendor/autoload.php';
    //$mpdf=new mPDF();
    $mpdf = new mPDF('utf-8', 'Letter', 0, '', 0, 0, 7, 0, 0, 0);

    $checkRecords =  $this->user_model->getCheckInfo($id);      
    foreach ($checkRecords as $key => $value) {
        $data['info'] = $value;
        $filename = $this->load->view(CHEQUE_VIEWS.'index',$data,TRUE);
        $mpdf->WriteHTML($filename); 
    }

    $mpdf->Output(); //output pdf document.
    //$content = $mpdf->Output('', 'S'); //get pdf document content's as variable. 

}