带有 CODEIGNITER 的 DOMPDF

新手上路,请多包涵

我试图让 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

原文由 XAF 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 447
2 个回答

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

原文由 Efekan 发布,翻译遵循 CC BY-SA 3.0 许可协议

@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 文件已损坏”的错误消息。

希望这篇文章有用。

原文由 Abilash Arjunan 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏