2009-11-28 71 views
7

我有一個PHP應用程序需要生成一些PDF發票和PDF頁面以及漂亮的頁眉/頁腳。某些Stackoverflow用戶建議使用TCPDF來創建PDF文檔。在我的研究,我發現了兩種方法來生成PDF文件:HTML to PDF與通過PHP以編程方式創建PDF

1)編程格式的PDF像這樣:

$tcpdf->SetFillColor(255, 0, 0); 
    $tcpdf->SetTextColor(255); 
    $tcpdf->SetDrawColor(128, 0, 0); 
    $tcpdf->SetLineWidth(0.3); 
    $tcpdf->SetFont('', 'B'); 

2)將HTML轉換爲PDF

如何確定我的方法,我應該使用?

+0

這是一個很好的教程,我相信它肯定會幫助你[在網站上動態創建PDF文件的教程](http://blog.geotitles.com/2011/09/tutorial-on-dynamically-creating-pdf-文件在網站/) – 2011-09-10 18:42:01

+0

上面的鏈接似乎是陳舊了。 – srm 2016-11-23 22:42:54

回答

2

我可以推薦Zend_Pdf,這是根據您的分類的編程方法。

HTML抽象很不錯,但我不相信你擁有全面的幾何圖形API的能力和控制。謹慎使用fpdf等不支持UTF-8的庫,並使用窮人的解析器將HTML轉換爲PDF。

關於您的申請,我製作了一個生成模板化發票的系統。我的用戶可以上傳一個由Zend_Pdf提取的PDF模板。然後,此模板用於生成發票的每個頁面,從而可以輕鬆進行自定義。

請注意,我的觀衆主要是能夠製作這些模板的平面設計師,所以這裏是合適的解決方案。如果您的觀衆只熟悉HTML,那麼將HTML轉換爲PDF可能是最好的方法。

+0

鏈接被破壞 – 2017-08-22 17:43:52

+0

Zend_Pdf被放棄 - https://github.com/zendframework/ZendPdf - 他們推薦[TCPDF](https://tcpdf.org/)作爲替代。 – 2017-12-03 23:12:38

3

我總是建議動態創建PDF,但要基於可以使用最終用戶工具編輯的模板,或者 - 至少 - 不必是程序員。在你的情況下,這可能是HTML。對我而言,理想的解決方案是採用Office模板,以編程方式填充值,並在技術上儘可能將其輸出到PDF。我使用tbsOOO在PHP中做了辦公室模板填充部分,效果很好。

主要原因使用基於模板的方法在產生從頭文檔:用戶能夠設計模板,因爲他們認爲合適的,並且在設計時就需要改變,你將不再需要。 (並且它需要更改一天。)只有當插入的數據需要以某種方式更改或擴展時,編程器纔會發揮作用。這揹負着巨大的工作量。

0

我還建議將HTML轉換爲PDF格式:

  • 這是比較容易實現
  • 這是比較容易改變佈局/設計後
  • 你也許可以重複使用頁面的某些HTML

當我曾經創造了一個PDF生成一個網站我用html2ps然後轉換後記爲pdf後。

1

嗨,你有兩個選擇。您可以使用dompdf,它使您能夠將文檔設計爲常規html文檔並使用css進行設計。你可以把這個文件變成pdf。我的經歷很好。我使用Zend_View渲染一個普通的html頁面,並將其轉化爲pdf。這樣你就有了一個非常靈活的模板,因爲你可以在你的html生成視圖中做出各種顯示決定。請參閱list of css-compatability

或者你可以使用livedocx。這也允許基於模板的方法,但更嚴格和無html。 A integration for Zend Framework正在進行中。

0

我建議編程格式。

在.net世界中,我對html轉換爲pdf轉換器有明顯的負面經歷。他們似乎分爲兩類:

那些'解析'你的html,並試圖把它變成pdf。這些通常缺少一些非常基本的功能,如樣式表和對基於表格的佈局的支持。

將您的html「打印」爲圖片並將其粘貼到pdf中的那些。這些實際上可以產生一個體面的文件。他們似乎通過將瀏覽器鏈接到引起線程問題和性能不佳的庫中來工作。

我對直接的pdf apis有平庸的經驗,但php似乎在這方面有一些更好的庫。

+0

對於php世界來說,這是完全不同的。像Zend_Pdf這樣的編程庫是吸引人的。就像我建議的那樣,dompdf在html中對pdf很好。它沒有鏈接圖書館的瀏覽器或類似的東西(沒有人會想到這一點) – 2009-11-28 14:04:21

1

我有足夠的經驗,所有的三種方法:

  1. 創建文檔以編程方式使用TCPDF(其中,儘管它是從FPDF得出,不支持UTF-8開箱即用)。雖然我是Zend Framework的忠實粉絲,但是需要注意的是,Zend_Pdf的功能集還不夠豐富,因此無法使用這種方式。

  2. 讓一位圖形設計師創建一個模板,使用Zend_Pdf加載它,然後向其中添加額外的內容。 Zend_Pdf(1.10.2 - 1.10.7)在這種情況下工作得很好,除了嘗試實例化新頁面並將其添加到文檔時 - 這會導致大量錯誤。

  3. 使用htmldoc從HTML轉換爲PDF。這種方法很糟糕,但主要是由於htmldoc的限制。

我還沒有使用TCPDF進行HTML到PDF的轉換,但是根據代碼的整體質量來判斷,我猜測它會做得很好。 (我真的推動TCPDF達到極限,包括在RTL字符集,中文等中渲染圖形豐富的文檔,並且它的表現完美無瑕)。所以,如果你決定以編程的方式來做,我會建議使用TCPDF,但是如果你有一個平面設計師的好模板,並打算只在頂部添加東西,用Zend_Pdf加載並從那裏修改是一個合理的選擇(儘管你仍然會實現文字換行和其他一些基本的東西)。