2011-05-06 336 views
21

嗨有沒有人知道我可以通過PHP創建一個格式良好的PDF發票?PHP創建PDF發票

理想情況下,我正在尋找的東西有一個標題,然後列出一些產品與周圍某種表。經過一段快速的Google之後,我會對生成PDF格式感到滿意,但嘗試並很好地設計它的樣式完全是另一回事。

感謝

+1

你遇到過FPDF嗎?我以前看過它......看起來像很多工作,但很有希望 – 2011-05-06 17:05:54

+1

是的,現在看看它 - 這裏很好的教程:http://www.web-development-blog.com/archives/create-pdf- documents-online-with-tcpdf/ – Martin 2011-05-06 17:12:41

+0

我建議看看actualreports.com,他們是一個API和基於瀏覽器的文檔編輯器,用於創建不同的模板。對了,他們收取他們的服務。 – Tanel 2013-09-02 11:43:40

回答

16

我使用TCPDF(見http://www.tcpdf.org/)本:它很能幹,不會太痛苦得到建立。我會說,根據您的數據源,您可能會遇到一些問題。在我的情況,我的數據是從SOAP接口外包給我的會計系統,並使用笨我的應用程序,我可以做到這一點:

$address = $extraclient->get_company_address(); 

// generate the PDF invoice 
$this->load->library('pdfinvoice'); 

// set document information 
$this->pdfinvoice->SetSubject("Invoice " . $data_invoice['code_invoice']); 

// add a page 
$this->pdfinvoice->AddPage(); 
$this->pdfinvoice->StartPageOffset(); 

// write the client's details out 
$width = $this->pdfinvoice->GetPageWidth()/2; 
$margins = $this->pdfinvoice->getMargins(); 
$this->pdfinvoice->SetFont('times', 'b', $this->pdfinvoice->bigFont); 
$this->_row($width, array("From:", "To:")); 
$this->pdfinvoice->SetFont('times', 'i', $this->pdfinvoice->smallFont); 
$this->_row($width, array("MY NAME", $customer['name_contact'])); 
$this->_row($width, array($address['phone'], $customer['name_customer'])); 
$this->_row($width, array($address['street'], $customer['address1_street'])); 
$this->_row($width, array($address['city']. ", ".$address['state']." ".$address['zipcode'], 
          $customer['address1_city']. ", ".$customer['address1_state']." ".$customer['address1_zip 

完整的代碼是很坦率地說太長,在這裏插入,但你應該得到的想法,你會得到相當精確的佈局控制。

+1

如果您已經使用phpExcel,它內置了庫(因此您可以調用該類) – rosh3000 2013-04-22 14:27:33

23

我會建議創造你想要的PDF什麼的HTML/CSS表示並用它來生成PDF。有幾十個的應用程序處理的轉化,有一個很好的線程有很多答案在這裏:Convert HTML + CSS to PDF with PHP?

+1

感謝您的回答+1。這聽起來像是一個很好的解決方案,它可以幫助人們在將來看到這一點,但是對於我的情況,我需要使用cron每月生成一些發票。這就是爲什麼我沒有選擇你的答案是正確的。 – Martin 2011-05-07 10:19:49

+0

我之前做過一些PDF生成,真的很痛苦。在你的HTML中進行設計要容易得多,你已經知道並且像Timothy說的那樣轉換。我可以想到手動生成它們的唯一原因是如果您需要控制分頁符。 – YeB 2014-04-01 14:29:49

0

你可能想看看html2Pdf。這是一個基於FPDF的php類,它允許您從HTML創建PDF文件。所以只需使用html格式化文本,然後創建其pdf。它非常靈活,並給予控制。

SourceForge Link

0

PDF生成往往會非常棘手。只要發票相對簡單,我會建議創建一個模板圖像文件,並使用imagettftext在其上打印字符串(或任何其他庫)。

對於圖像文件轉換爲PDF ImageMagick的工具套件都可以使用(只要它是可用的服務器上):

exec('convert -units \'PixelsPerInch\' -density 150 '.$filename.'.png '.$filename.'.pdf'); 

對我來說,整個方法工作順利。

0

結帳作曲家的php-pdf-invoice圖書館。該庫已經設計用於生成發票,因此它很容易和快速地集成!

composer require quickshiftin/php-pdf-invoice

您可以生成這個樣子

Here's a sample invoice

上有README的使用實例的PDF文件。基本上你實現了兩個界面,一個用於訂單,另一個用於訂單項目。您也可以根據自己的喜好配置字體和顏色。