2012-03-22 89 views
0

使用Tinybutstrong and openTBS我在PHP中打開多個DOCX模板,並取代了大量的變量從數據庫值創建的腳本。簡而言之,客戶可以下載他們獨特的文件,添加信息和圖片並再次上傳。這很好。但粗糙的我不會在這裏發帖,如果沒有某種問題。使用條形碼字體在PHP中壓縮MS字的docx文件素文字

因爲條形碼(我使用的條形碼字體並將它們嵌入在Word中,因爲這些文件將在這個過程中遠遠晚掃描)的,文件獲得巨大的。平均而言,他們很容易獲得7MB。這是一個問題,因爲每年大約有20,000個文件將被掃描。這是每年額外+/- 130 GB。

這是一個很長的故事,但我們需要的docx,所以我們不能簡單地用某種PHP/MySQL的模板,這將是更爲有效的替換。

Word可以選擇僅嵌入用於剪切大小的字體符號。但這不是一個選項,因爲主模板需要有所有可用的字符。由於每年有+/- 20,000個新字體,所以也不能將字體發送給用戶。

是否有另一種解決方案來裁減文件大小或使用壓縮。也許在Word,PHP,FTP,Apache?

+0

所以問題是條碼字體是巨大的,正確的? – 2012-03-22 10:05:53

+0

正確,字體本身並不是那麼大,但是當單詞嵌入時,它就像5 MB(它有所不同)。我不知道任何其他方式將所有條形碼嵌入到docx中。 OpenTBS不支持它,我們真的需要它的功能。我嘗試了幾個不同的類PHPWord,PHPdocx等。 OpenTBS是最快,最靈活,並且完全符合我們所需的。以及免除添加條形碼。 – mat 2012-03-22 10:39:28

+0

嗯。你有沒有考慮過插入圖片? – 2012-03-22 10:40:39

回答

0

恐怕使用選項與「在文檔中使用僅嵌入字符」「的文件中嵌入字體」的解決方案無法被利用。 Word中保存女士使用一種特殊的格式擴展ODTTF的字體(例如,你擁有了它在「字\ Fonts \中font1.odttf」)。但是這種格式是二進制格式,似乎記錄不準確,因此它保留爲專有格式。只有Ms Word才能夠建立這樣的子文件。

既然你有沒有爲任何條形碼字體更輕,我可以看到的唯一的解決方案是使用圖片代替字體爲你條碼:

  • OpenTBS有一個功能,輕鬆地更換裏面的圖片DOCX文件(參數「op=changepic」)。
  • Barcode2Image工具很容易在PHP中找到。例如:Barcode Generator

那麼你就只能有一個這樣的代碼你的過程:

  1. 裝入DOCX模板,
  2. 創建條形碼的臨時圖像。
  3. 更改模板內的圖像。
  4. 合併模板,並保存或發送結果。
  5. 刪除臨時圖像。

只有在模板的最終合併後才刪除臨時圖像很重要,因爲OpenTBS實際上只在調用方法$ tbs-> Show()時插入圖像。

同樣重要的是使用不同的臨時文件對每個合併,因爲許多合併可以在同一時間發生。

如果臨時文件有一個前綴或保存到一個專門的目錄,那麼最好是regulary清理舊暫定圖像。