【问题标题】:DOMPDF with CODEIGNITER带有 CODEIGNITER 的 DOMPDF
【发布时间】:2016-10-16 08:05:39
【问题描述】:

我试图让 dompdf 与 codeigniter 一起工作,我从这里下载文件 https://github.com/dompdf/dompdf/releases 版本是 0.7.0,然后我在我的控制器中放了一段这样的代码

public function generatepdf(){

        $this->load->helper('file');
        require_once(APPPATH.'third_party/dompdf/autoload.inc.php');

         $domdpf = new DOMPDF();
         $domdpf -> loadHtml('<h1>HELLO WORLD</h1>');
         $domdpf -> setPaper('A4','Landscape');
         $domdpf ->render();

         $domdpf->stream();


    }

但我收到一条错误消息 Fatal error: Class 'DOMPDF' not found in C:\Apache24\htdocs\faceloan\faceloan\application\controllers\moneyexchange.php on line 2495

【问题讨论】:

标签: php codeigniter dompdf


【解决方案1】:

从 v. 0.7 开始,您需要在代码中包含对 dompdfs 命名空间的引用:

use Dompdf\Dompdf;

【讨论】:

  • 有了 composer,这是最好的选择。 @Farhana 你遇到了什么错误?
【解决方案2】:

您需要使用 v0.6。 v0.7 使用 CodeIgniter 不支持的命名空间。

【讨论】:

  • 我用0.6.2可以吗?
  • 是的,没问题
【解决方案3】:

您可以通过两个简单的步骤将 DomPDF 与 Codeigniter 集成。

1) Download domPDF 库并将其放入 application/library 目录。

2) 创建一个文件名为pdf.php 的文件,将以下代码放入文件中并放入库目录中。

<?php defined('BASEPATH') OR exit('No direct script access allowed');
 /**


* CodeIgniter PDF Library
 *
 * Generate PDF's in your CodeIgniter applications.
 *
 * @package         CodeIgniter
 * @subpackage      Libraries
 * @category        Libraries
 * @author          Chris Harvey
 * @license         MIT License
 * @link            https://github.com/chrisnharvey/CodeIgniter-PDF-Generator-Library



*/

require_once(dirname(__FILE__) . '/dompdf/dompdf_config.inc.php');

class Pdf extends DOMPDF
{
    /**
     * Get an instance of CodeIgniter
     *
     * @access  protected
     * @return  void
     */
    protected function ci()
    {
        return get_instance();
    }

    /**
     * Load a CodeIgniter view into domPDF
     *
     * @access  public
     * @param   string  $view The view to load
     * @param   array   $data The view data
     * @return  void
     */
    public function load_view($view, $data = array())
    {
        $html = $this->ci()->load->view($view, $data, TRUE);

        $this->load_html($html);
    }
}
?>

现在在你的 Controller 文件中这样称呼它

defined('BASEPATH') OR exit('No direct script access allowed');
class Welcome extends CI_Controller {
 function my_DOMPDF(){
  $this->load->library('pdf');
  $this->pdf->load_view('common/template');
  $this->pdf->render();
  $this->pdf->stream("welcome.pdf");
 }
}

你可以得到完整的step by step configurations here

【讨论】:

    【解决方案4】:

    @Zedd 答案是正确的

    但对于此发布日期的最新版本,以下将起作用。

    应用程序/库/Pdf.php

    <?php defined('BASEPATH') OR exit('No direct script access allowed');
    /**
    
    
    * CodeIgniter PDF Library
     *
     * Generate PDF's in your CodeIgniter applications.
     *
     * @package         CodeIgniter
     * @subpackage      Libraries
     * @category        Libraries
     * @author          Chris Harvey
     * @license         MIT License
     * @link            https://github.com/chrisnharvey/CodeIgniter-  PDF-Generator-Library
    
    
    
    */
    
    require_once APPPATH.'third_party/dompdf/autoload.inc.php';
    
    use Dompdf\Dompdf;
    class Pdf extends DOMPDF
    {
    /**
     * Get an instance of CodeIgniter
     *
     * @access  protected
     * @return  void
     */
    protected function ci()
    {
        return get_instance();
    }
    
    /**
     * Load a CodeIgniter view into domPDF
     *
     * @access  public
     * @param   string  $view The view to load
     * @param   array   $data The view data
     * @return  void
     */
    public function load_view($view, $data = array())
    {
        $dompdf = new Dompdf();
        $html = $this->ci()->load->view($view, $data, TRUE);
    
        $dompdf->loadHtml($html);
    
        // (Optional) Setup the paper size and orientation
        $dompdf->setPaper('A4', 'landscape');
    
        // Render the HTML as PDF
        $dompdf->render();
        $time = time();
    
        // Output the generated PDF to Browser
        $dompdf->stream("welcome-". $time);
    }
    }
    

    在你的控制器上

    function pdf_gen(){
    
        $this->load->library('pdf');
        $this->pdf->load_view('main_report');
    }
    

    显然 main_report 是位于 application/views/main_report 的视图文件 你也可以像下面这样发送视图文件的数据

    $this->pdf->load_view('main_report', $data);
    

    注意事项

    我将 dompdf 文件夹放在 application/thirdparty 文件夹中,而不是在 application/libraries 中。

    确保您已在控制器方法中注释掉所有打印、回显功能,否则您可能会收到类似于“pdf 文件已损坏”的错误消息。

    希望这篇文章有用。

    【讨论】:

      【解决方案5】:
      require_once(dirname(__FILE__) . '/dompdf/autoload.inc.php');
      use Dompdf\Dompdf;
      
      class Pdf
      {
       public function create($html,$filename)
       {
         $dompdf = new Dompdf();
         $dompdf->loadHtml($html);
         $dompdf->render();
         $dompdf->stream($filename.'.pdf');
       }
      

      试试这个库https://github.com/hanzzame/ci3-pdf-generator-library

      这个库使用

      • Dompdf 0.8.0
      • Codeigniter 3.x.x
      • 图片支持 SSL 连接

      【讨论】:

        【解决方案6】:

        创建 PDF 文件的最简单方法。 从
        https://github.com/hanzzame/ci3-pdf-generator-library
        下载库 在 app/application/libraries/extract-here 处提取 zip

        在Controller的方法中使用:

        $this->load->library('pdf'); // change to pdf_ssl for ssl
        $filename = "Document_name";
        $html = $this->load->view('your_view_template');
        $this->pdf->create($html, $filename);
        

        【讨论】:

          猜你喜欢
          • 2010-11-07
          • 2014-01-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-09-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多