带有 CODEIGNITER 的 DOMPDF
DOMPDF with CODEIGNITER
我正在尝试让 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
从 v.0.7 开始,您需要在代码中包含对 dompdfs 命名空间的引用:
use Dompdf\Dompdf;
您需要使用 v0.6。 v0.7 使用 CodeIgniter 不支持的命名空间。
您可以通过两个简单的步骤将 DomPDF 与 Codeigniter 集成。
1) Download domPDF 库并将其放入 application/library 目录。
2) 创建一个文件名为pdf.php的文件,在文件中放入如下代码,并放入library目录下。
<?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
@Zedd 回答正确
但是对于这个 post 日期的最新版本,以下内容将起作用。
application/libraries/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。
确保您已经注释掉控制器方法中的所有打印、回显函数,否则您可能会收到类似于 "the pdf file is damaged".
的错误消息
希望这篇 post 有用。
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
- 代码点火器3.x.x
- 支持图像的 SSL 连接
创建PDF文件的最简单方法。
从
下载库
https://github.com/hanzzame/ci3-pdf-generator-library
在 app/application/libraries/extract-here
处提取 zip
在控制器的方法中使用:
$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);
我正在尝试让 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
从 v.0.7 开始,您需要在代码中包含对 dompdfs 命名空间的引用:
use Dompdf\Dompdf;
您需要使用 v0.6。 v0.7 使用 CodeIgniter 不支持的命名空间。
您可以通过两个简单的步骤将 DomPDF 与 Codeigniter 集成。
1) Download domPDF 库并将其放入 application/library 目录。
2) 创建一个文件名为pdf.php的文件,在文件中放入如下代码,并放入library目录下。
<?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
@Zedd 回答正确
但是对于这个 post 日期的最新版本,以下内容将起作用。
application/libraries/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。
确保您已经注释掉控制器方法中的所有打印、回显函数,否则您可能会收到类似于 "the pdf file is damaged".
的错误消息希望这篇 post 有用。
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
- 代码点火器3.x.x
- 支持图像的 SSL 连接
创建PDF文件的最简单方法。
从
下载库
https://github.com/hanzzame/ci3-pdf-generator-library
在 app/application/libraries/extract-here
在控制器的方法中使用:
$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);