【问题标题】:Codeigniter how to create PDFCodeigniter如何创建PDF
【发布时间】:2013-11-17 08:36:04
【问题描述】:

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

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

你们中有人有这方面的经验吗?

【问题讨论】:

标签: php codeigniter pdf


【解决方案1】:

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

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/下载。

现在在您使用 codeigniter 开发的 Web 应用程序的“application/helpers/”目录中创建“tcpdf”文件夹。复制所有 TCPDF 库文件并将其粘贴到“application/helpers/tcpdf/”目录中。更新TCPDF的配置文件“tcpdf_config.php”,位于“application/helpers/tcpdf/config”目录下,根据你的应用需求进行修改。我们可以在 cofing 文件中设置 logo、字体、字体大小、with、height、header 等。授予对 tcpdf 文件夹中的“缓存”文件夹的读取、写入权限。在定义目录结构、更新配置文件和分配权限之后,这里开始你的实际编码部分。

在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');
}

然后在controller文件中调用上面的helper,假设我们的controller文件是“createpdf.php”,它的方法是pdf(),那么pdf()方法会加载“pdf_helper”helper,也会有其他的代码。

控制器: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、修改。

【讨论】:

  • Siraj,如果您使用该链接的内容更新您的答案,那就太好了。将来您提供的网址可能不再存在,这意味着您的回答将失去其价值,并且对于来这里寻找问题解决方案的其他用户来说毫无意义。
  • 当然:),我会记住的
  • Jeemusu,我也添加了内容:)
  • 我使用了相同的代码,但为什么显示路径错误?消息:require_once(/var/www/my_project/application/helpers/config/lang/eng.php):无法打开流:没有这样的文件或目录即使我更改了路径也会显示此错误:require_once(dirname(/__FILE__ ) . '/config/lang/eng.php'); require_once(dirname(/__FILE__) . '/tcpdf/tcpdf.php');
  • @Jnana 在这里相同。你找到解决方案了吗?
【解决方案2】:

TCPPDF 是用于生成 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

【讨论】:

  • 从 html 之类的创建; $this->load->library('Pdf'); $pdf = new Pdf('P', 'mm', 'A4', true, 'UTF-8', false); $pdf->SetTitle('PDF 示例'); $pdf->SetHeaderMargin(30); $pdf->SetTopMargin(20); $pdf->setFooterMargin(20); $pdf->SetAutoPageBreak(true); $pdf->SetAuthor('作者'); $pdf->SetDisplayMode('real', 'default'); //$pdf->Write(5, 'CodeIgniter TCPDF 集成'); // 添加一个页面 $pdf->AddPage(); $html = $this->html(); $pdf->writeHTML($html, true, false, true, false, ''); $pdf->输出('pdfexample.pdf', 'I');
【解决方案3】:

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

【讨论】:

  • 我尝试使用 mpdf,但它非常糟糕。例如,不能使用 css position absolute 属性、带有 page-break-inside 的 float 属性等...
  • 随着 PHP 7 的到来,MPDF 已被弃用,因此应避免使用它。
  • @Mandemon 更新:mpdf 现在支持 PHP 7 。你可以在github.com/mpdf/mpdf查看它
  • MPDF 如果比任何其他 pdf 生成器好得多,它支持比其他更多的 css 类并支持 PHP 7 ^ 和 @AlessandroPirovano float 在我的条件下工作。
【解决方案4】:

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

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

然后你可以创建一个带有一些函数的助手来使用 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();
    }
}

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

【讨论】:

    【解决方案5】:

    在 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
    

    【讨论】:

      【解决方案6】:

      我在我的项目中使用了 mpdf。在 Codeigniter-3 中,将 mpdf 文件放在 application/third_party 下,然后这样使用:

       /**
       * 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. 
      
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-02-07
        • 1970-01-01
        • 1970-01-01
        • 2021-06-01
        • 2011-06-14
        • 2010-10-27
        • 1970-01-01
        相关资源
        最近更新 更多