【问题标题】:DOM pdf codeigniter: Class 'DOMPDF' not found errorDOM pdf codeigniter:找不到类“DOMPDF”错误
【发布时间】:2016-08-02 12:26:02
【问题描述】:

我试图将 DOM PDF 库添加到我的 codeigniter 应用程序

1.下载dompdf并将dompdf文件夹复制到libraries文件夹中。

2.在库文件夹中创建名为Dompdf.php的文件

在我的控制器中

public function pdf_test()
   {
       $this->load->library('Dompdf');
       $this->Dompdf->loadHtml('hello world');
       $this->pdf->render();
       $this->pdf->stream("welcome.pdf");
   }

Dompdf.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/autoload.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);
    }
}

但我会出现这个错误。

消息:找不到类“DOMPDF”

文件名:libraries/Dompdf.php

行号:16

I am using latest DOMPDF

【问题讨论】:

    标签: php codeigniter dompdf


    【解决方案1】:

    就我而言。我用这个

    $dompdf = 新的 Dompdf\DOMPDF();

    require_once(_MAP."libraries/dompdf/autoload.inc.php");
    $dompdf = new Dompdf\DOMPDF();
    $html = 'rats :)';
    $dompdf->load_html($html);
    $dompdf->render();
    $dompdf->stream("sample.pdf");
    

    【讨论】:

    • 由于某种原因我不能使用use Dompdf\Dompdf;,因为它不会加载任何东西。通过将命名空间放在声明中,它解决了问题。
    【解决方案2】:

    从 v0.7.0 开始,Dompdf 使用命名空间。在引用该类之前,您可能需要添加 use 语句。或者使用完整的命名空间路径引用它。

    试试:

    require_once(dirname(__FILE__) . '/dompdf/autoload.inc.php');
    use Dompdf\Dompdf;
    class Pdf extends Dompdf
    {
    ...
    }
    

    可以在readmewiki usage page 上使用。

    【讨论】:

      【解决方案3】:

      我只是改变了

      $dompdf = new Dompdf\DOMPDF();
      

      $dompdf = new Dompdf\Dompdf(); 
      

      Pdf.php 里面

      【讨论】:

        【解决方案4】:

        我已经使用tcpdf 库完成了 pdf 生成,但方法与您略有不同。这是我使用tcpdf 的解决方案。你可以试试Dompdf

        下载tcpdf并放入third_party文件夹 在 libraries 文件夹中创建一个文件PDF.php,其中包含以下内容

         require_once APPPATH."third_party/tcpdf/tcpdf.php";
        
            class PDF extends TCPDF {
                public function __construct() {
                    parent::__construct();
                }
            }
        

        controllers 文件夹中创建一个文件 Createpdf.php 并使用以下代码

        defined("BASEPATH") OR exit("No direct script access allowed");
        
            class Createpdf extends CI_Controller {
        
                public function pdf()
                {
                    $this->load->library("pdf");
                    $data["content"] = "Hello from CodeIgniter with TCPDF...";
                    $this->load->view("pdfreport", $data);
                }
            }
        

        pdfreport.php 视图是:

        $obj_pdf = new TCPDF('P', PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
        $obj_pdf->AddPage();
        $obj_pdf->writeHTML($content, true, false, true, false, '');
        $obj_pdf->Output('output.pdf', 'I');
        

        【讨论】:

          【解决方案5】:

          先由composer安装

          composer require dompdf/dompdf
          

          并在 pdf 库中使用它。

           require 'vendor/autoload.php';
           use Dompdf\Dompdf as Dompdf;
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2023-01-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-10-24
            相关资源
            最近更新 更多