Codeigniter如何创建PDF - php

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

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

你们中有人有经验吗?

参考方案

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

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的集成后,我想到了在Web上共享此脚本的想法。

现在,让我们从代码的实现入手。

下载TCPDF库代码,您可以从TCPDF网站http://www.tcpdf.org/下载它。

现在在codeigniter中开发的Web应用程序的“ application / helpers /”目录中创建“ tcpdf”文件夹。复制所有TCPDF库文件并将其粘贴到“ application / helpers / tcpdf /”目录中。更新TCPDF的配置文件“ tcpdf_config.php”,该文件位于“ application / helpers / tcpdf / config”目录中,并根据您的应用需求进行更改。我们可以在cofing文件中设置徽标,字体,字体大小,高度,标题等。将读写权限授予tcpdf文件夹中的“ cache”文件夹。定义目录结构,更新配置文件并分配权限后,此处将开始实际的编码部分。

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

然后在控制器文件中调用上述帮助器,假设我们的控制器文件为“ createpdf.php”,并且其方法为pdf(),则方法pdf()将加载“ pdf_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库将图像,css,修改内容嵌入PDF文件中。

php-casperjs获取内部文本 - php

我正在为casperjs使用php包装器-https://github.com/alwex/php-casperjs我正在网上自动化一些重复的工作,我需要访问一个项目的innerText,但是我尚不清楚如何从casperjs浏览器访问dom。我认为在js中我会var arr = document.querySelector('label.input…

如何使用带有画布元素的php打印到pdf - php

我正在尝试使用PHP制作动态PDF生成器,但是到目前为止,我遇到的一个问题是,我尝试以PDF生成的页面具有使用画布通过flot生成的条形图。有没有人有这方面的经验或知道如何将画布打印为pdf?我也很愿意让客户加载一个页面,该页面使用CSS设置分页符的样式,并使用内置的“打印到PDF”打印机,使报告的每个图形都被(打印)页面打断。 php参考方案 //Here…

php:是否有充分的理由引用所有数组键/索引? - php

我正在遍历别人的代码,他们总是避免转义其数组键。例如:$ row_rsCatalogsItems [名称]代替$ row_rsCatalogsItems ['名称']因此,我不断地对自己接触的所有事物进行微小的更改,以应对这些惰性。但是现在我想知道这样做是否有很多好处。我得到它会在默认为字符串之前检查常量(我在处理常量时会讨厌php中的行为,因为即使未定义,…

PHP getallheaders替代 - php

我正在尝试从服务器上的apache切换到nginx。唯一的问题是我在PHP脚本中使用的getallheaders()函数,该函数不适用于Nginx。我已经尝试过用户在getallheaders函数上的php站点上提供的注释,但这并不返回所有请求标头。请告诉我如何解决这个问题。我真的想切换到Nginx。 参考方案 您仍然可以使用它,但是您必须像这里一样重新定义…

PHP数组可以这样做吗? - php

可以说;我有一个$ friends数组,其中有2,000个不同的friendID号+我有一个带有10,000 bulletinID号的$ bulletins数组,该$ bulletins数组还将具有另一个值,该ID的用户ID是发布公告条目的用户现在可以获取所有具有与FriendsID数组中的userID匹配的userID的bulletinID号吗?甚至有可能…