2012-03-12 24 views
4

我有一個網站,處理客戶的信息和他們已經訂購了一天的事情形式的海量數據。現在,由於這個特定的網站有數百個客戶,每天每個客戶都有5-20個訂單。作爲PDF的替代動態生成的文檔與分頁符

該網站的所有者需要一個頁面,其中包含客戶遞送信息,在每個單獨頁面中的訂單列表,以便他們可以打印並粘貼在包裝上。但是,每個新客戶端信息都需要在新頁面中啓動。

enter image description here

如:

- 啓動頁---

客戶交付1個信息

客戶1訂購信息

「一些空的空間在這裏如果訂單信息很短「

- ---下一頁----

客戶2,配送信息

客戶2訂購信息

------下一頁---

客戶2訂購信息續(這可能是一個只有幾行,可以離開下方較大的空白處)

「這裏有些空的空間」

----下一頁---

客戶3 ...


當我TREID輸出純HTML,然後打印頁面,該頁面是全亂了,所以我解決它生成PDF(我用MPDF53),並在那裏謊言是我的問題。

問題是生成PDF需要很長時間,並佔用大量系統資源。我已經必須增加服務器執行時間才能成功運行(默認30秒)。現在,隨着客戶的增長,名單將不斷增長,執行時間也會不斷增加。如果100個客戶的名單可以超過30秒,我想知道它會達到1000或更多。

打印頁面本身不包含任何圖形,並且sql查詢生成相當快(這是因爲當我輸出爲html時,頁面會很快加載)。

有什麼替代方法可以在html文檔中有分頁符,這樣當我打印這個頁面時,它遵循正確的頁面分頁或者其他任何可以加速pdf生成的方式,或者我只需要忍受長執行時間。

編輯:即使使用分頁符也只能使用html文檔的一個問題是將其保存以備以後記錄或參考。

感謝

+0

你爲什麼不試試其他pdf庫? – Ali 2012-03-12 01:03:28

+0

如果其他pdf庫不可用於PHP(我沒有使用PHP的經驗),我相信你可以在python或...中構建一個簡單的服務,或者使用高效的庫並將它們與REST API或其他API一起使用。 – Ali 2012-03-12 01:05:44

+0

我會用html pdf創建速度很慢,所以除非你真的需要它,不要用它 – 2012-03-12 01:08:30

回答

4

我有同樣的問題在很多年前,收跌依靠CSS頁面中斷後的屬性(請參閱here瞭解更多信息)。您可以嘗試使用HTML生成頁面,並將page-break-after:always添加到包含客戶信息的div。

我不會依賴這種方式來實現跨所有用戶和平臺的高度可靠的兼容性,但是如果它是內部應用程序,那麼您可能會忽略指定他們需要使用現代版本的Firefox,Chrome,或IE。

+0

它可以是一個替代方案,但正如我在編輯中所說的(對不起,錯過了這一點)客戶端可能希望將文件保存爲記錄。 – Kaushtuv 2012-03-12 03:37:25

+0

他們可以下載HTML文件的副本。您也可以將它寫出到服務器上的日期戳記日誌文件中,以便他們可以參考它,即使它們當時沒有保存副本。 – octern 2012-03-12 04:49:58