私は請求書システムを作成するつもりです、私はその準備をしています。 Codeigniterを使用します。問題は、請求書をPDFで作成し、電子メールで送信できるようにすることです。
みんなのアドバイスは? HTMLを考えていたPDF変換、または画面に請求書を表示し、pdfプリンターをインストールします(印刷を押して、PDF = file)または、Word文書を作成して、odbcを使用してMySQLサーバーに接続します。
皆さんはこれを経験したことがありますか?
このリンクをクリックしてください。
http://www.php-guru.in/2013/html-to-pdf-conversion-in-codeigniter/
または、以下を見ることができます
HTMLページをPHPファイルに変換するためのPDFライブラリがウェブ上に多数あります。コアPHPのWebアプリケーションで作業している場合は、簡単に実装およびデプロイできます。しかし、このライブラリをフレームワークまたはテンプレートと統合しようとすると、使用しているフレームワークにPDFライブラリと統合する独自のライブラリがない場合、非常に退屈な作業になります。 HTMLページをPDFファイルに変換するための要件が1つあり、使用していたフレームワークがcodeigniterであったときに、同じような状況が目の前に現れました。
Webで検索し、HTMLページをPHPファイルに変換するためのPDFライブラリを取得しました。多くの調査とグーグルを行った後、私はTCPDF PHPライブラリを使用して、要件に合わせてHTMLページをPDFファイルに変換することにしました。 TCPDf PHPライブラリをcodeigniterと統合するのは非常に簡単で、作業中だと述べました。 codeigniterとTCPDFの統合が正常に完了した後、このスクリプトをWeb上で共有することを考えました。
それでは、コードの実装から始めましょう。
TCPDFライブラリコードをダウンロードします。TCPDFWebサイト http://www.tcpdf.org/ からダウンロードできます。
Codeigniterで開発されたWebアプリケーションの「application/helpers /」ディレクトリに「tcpdf」フォルダーを作成します。すべてのTCPDFライブラリファイルをコピーして、「application/helpers/tcpdf /」ディレクトリに貼り付けます。 「application/helpers/tcpdf/config」ディレクトリにあるTCPDFの構成ファイル「tcpdf_config.php」を更新し、アプリケーションの要件に従って変更を行います。ロゴ、フォント、フォントサイズ、高さ、ヘッダーなどをcofingファイルに設定できます。 tcpdfフォルダーにある「cache」フォルダーに読み取り、書き込みの許可を与えます。ディレクトリ構造を定義し、構成ファイルを更新し、許可を割り当てた後、ここで実際のコーディング部分を開始します。
Codeigniterの「application/helpers /」ディレクトリに1つの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」と言うビューファイルを1つ作成します。これは、コントローラーのpdf()メソッドにもロードされます。したがって、ビューファイルでは、「pdf_helper」ヘルパーで定義した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ライブラリを使用してPDFファイルに画像、css、変更を埋め込むこともできます。
TCPDFは、PDFドキュメントを生成するためのPHPクラスです。ここでは、CodeIgniterとのTCPDF統合について学習します。CodeIgniterとのTCPDF統合には、次の手順を使用します。
ステップ1
TCPDFをダウンロードするには ここをクリック 。
ステップ2
Application/libraries/tcpdf内で上記のダウンロードを解凍します。
ステップ3
Application/libraries/Pdf.php内に新しいファイルを作成します
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
require_once dirname(__FILE__) . '/tcpdf/tcpdf.php';
class Pdf extends TCPDF
{ function __construct() { parent::__construct(); }
}
/*Author:Tutsway.com */
/* End of file Pdf.php */
/* Location: ./application/libraries/Pdf.php */
ステップ4
Application/controllers/pdfexample.php内にコントローラーファイルを作成します。
<?php
class pdfexample extends CI_Controller{
function __construct()
{ parent::__construct(); } function index() {
$this->load->library('Pdf');
$pdf = new Pdf('P', 'mm', 'A4', true, 'UTF-8', false);
$pdf->SetTitle('Pdf Example');
$pdf->SetHeaderMargin(30);
$pdf->SetTopMargin(20);
$pdf->setFooterMargin(20);
$pdf->SetAutoPageBreak(true);
$pdf->SetAuthor('Author');
$pdf->SetDisplayMode('real', 'default');
$pdf->Write(5, 'CodeIgniter TCPDF Integration');
$pdf->Output('pdfexample.pdf', 'I'); }
}
?>
それは私のために働いています。 http://www.tutsway.com/codeignitertcpdf.php から参照を取得しました
[〜#〜] mpdf [〜#〜] ライブラリを使用しました。詳細については、このチュートリアルをご覧ください https://arjunphp.com/generated-a-pdf-in-codeigniter-using-mpdf/
以前にdompdfを使用しましたが、いくつか成功しました。不正な形式のHTMLには少しうるさい場合がありますが、まだサポートされていないCSSメソッドがいくつかあります(たとえば、css floatは機能しません)。
Githubからパッケージをダウンロードし、application/thirdparty
ディレクトリのdompdf
というフォルダーに配置します。
次に、dompdfライブラリを使用するためのいくつかの関数を持つヘルパーを作成できます。以下に例を示します。
dompdf_helper.php
:
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
function pdf_create($html, $filename='', $stream=TRUE)
{
include APPPATH.'thirdparty/dompdf/dompdf_config.inc.php';
$dompdf = new DOMPDF();
$dompdf->load_html($html);
$dompdf->render();
if ($stream) {
$dompdf->stream($filename.".pdf", array("Attachment" => 0));
} else {
return $dompdf->output();
}
}
HTMLに文字列としてpdf_create
メソッド、生成するpdfファイルのファイル名、オプションの3番目のパラメーターを渡すだけです。 3番目のパラメーターはtrue/falseフラグであり、ユーザーにファイルのダウンロードを促す前にファイルをサーバーに保存するかどうかを決定します。
Application\helpersフォルダーに新しいPDFヘルパーファイルを作成し、pdf_helper.phpという名前を付けます。 pdf_helper.phpファイルに以下のコードを追加します。
function tcpdf()
{
require_once('tcpdf/config/lang/eng.php');
require_once('tcpdf/tcpdf.php');
}
?>
詳細については、以下のリンクに従ってください。
http://www.ccode4u.com/how-to-generate-pdf-file-in-codeigniter.html
プロジェクトでmpdfを使用しました。 Codeigniter-3では、mpdfファイルをapplication/third_partyに配置し、次のように使用しました。
/**
* This function is used to display data in PDF file.
* function is using mpdf api to generate pdf.
* @param number $id : This is unique id of table.
*/
function generatePDF($id){
require APPPATH . '/third_party/mpdf/vendor/autoload.php';
//$mpdf=new mPDF();
$mpdf = new mPDF('utf-8', 'Letter', 0, '', 0, 0, 7, 0, 0, 0);
$checkRecords = $this->user_model->getCheckInfo($id);
foreach ($checkRecords as $key => $value) {
$data['info'] = $value;
$filename = $this->load->view(CHEQUE_VIEWS.'index',$data,TRUE);
$mpdf->WriteHTML($filename);
}
$mpdf->Output(); //output pdf document.
//$content = $mpdf->Output('', 'S'); //get pdf document content's as variable.
}