使用 wkhtmltopdf 將 HTML 轉成 PDF

使用 wkhtmltopdf 相對 TCPDF 來說可大幅簡化 PDF 的轉換工作

CentOS 6 安裝

CentOS 7 安裝

 安裝中文字型及顯示

Hoyo 發生的情況是因為要產生 PDF 的 HTML,所以沒有給完整的結構,因此就少了編碼宣告才發生亂碼

如果是系統沒有中文字型請參考以下步驟

開始使用

以下是一個實際案例,此為從 Word 設計後轉貼到網頁編輯器 TinyMCE 上,然後再經過 PHP 套版最後的結果

原來使用 TCPDF 的結果,因為 TCPDF 有中文避頭尾功能,所以整體編排結果和網頁顯示不一,如果花時間調整應該也可以得到滿意的結果,不過 Hoyo 就先放棄了

設定其他字型 (楷體、黑體)

安裝完字型後,使用 fc-list 指令列出安裝完成字型

將列出的首個關鍵字設定為 HTML 的字型名稱,例如楷體必須設定為「楷体」,不是網路上說的 KaiTi 也不是楷體,更不是標楷體

HTML

頁首、頁尾及大綱

 

紙本版面排版問題

 

1,199 total views, 1 views today

單色 PDF 檔案抽掉教用色紅版

主要參考這篇: Converting (any) PDF to black (K)-only CMYK – Stack Overflow (本機備份)

後來又參考了一堆雜七雜八的資料,最後才發現不用搞這麼複雜 ….

指令說明

  • GhostScript 的 gswin32c 使用 tiffsep 這個 DEVICE 會將指定檔案分解成「版」的狀態,就像是
    .
    tif 前面的 (Black) (Cyan) (Magenta) (Yellow) 就是 CMYK 一定會分離出來的檔案,一頁 PDF 產生五個檔案,最後一個檔案是完整的。
  • -r300 是設定輸出的 DPI 解析度,正常印刷是 300 DPI ,在此因為要從向量重新取樣成點陣資料,要設定高些才會清楚,最差也要設定 300 DPI 才可。
  • -sOutputFile 設定輸出檔名,%02d 表示使用 01, 02, 03 … 97, 98, 99 這樣子的流水碼表示,實際使用依照 PDF 頁數設定。
  • 分離出來之後,只用 (Black) 也是黑版就可以重新還原成 PDF 檔案,任務就完成了。在此使用的是 ImageMagick 的 convert 指令。
  • For 迴圈主要是自動處理目錄內的所有 PDF 檔案,達到自動化目的,有空再來整理資料。

以上的方案在 Windows 實際運作是失敗的 …… 請遺忘後繼續往下看 Orz

真正可運作方案: Linux

Windows 的批次檔我實在是搞不懂,第二次使用 convert 將 TIFF 還原成 PDF,可以在命令提示字元執行正常執行的指令,到了批次檔裡面就死活不執行,訊息是詭異的「這個時候不應有 .tif。」…. 意思其實就是找不到要輸入處理的 TIF 檔案。去拜了 Google 大神,沒人反應這個狀況,全世界應該是我第一個發現的,我又搶了全世界一次沙發了,可是我不想啊 ……

人的生命有限,我不想和 Windows 糾纏了,換到 Linux 平台,打開 php 用恍神的狀態馬上就寫好,並且可以順利運作,其中又踩到 Memory allocation failed 以及  No space left on device 的地雷,不過把 DPI 往下調整,實際列印看結果後,就蓋棺結案了,兩天了 …我累了 …

 

原始檔案長這樣

處理後長這樣

移除裁切線範圍

上面完成其實實際的長相是這樣

在角落有裝訂時要對準的裁切線,一般 PDF 檔案應該是難得一見,不過在出版社看到的幾乎都是這種檔案 Orz

裁切線對於一般使用者並無意義,而且佔據版面位置、影響閱讀,所以最好是可以在轉檔時一併移除。

所以必須使用 ImageMagick 的 convert 來作裁切處理:

 

  • 舉例而說,a01(Black).tif 原圖尺寸為 3504×4958 ,使用 convert -crop 參數進行裁切動作,因為四邊都需要處理,所以需要使用兩次 -crop 參數
  • 第一次的 -crop 參數使用 + 的方法, + 的動作是從指定左方、上方要內縮的距離,
  • 第二次使用 – 的方法, 扣除右方、下方距離

需要注意的是,在我使用的版本  ImageMagick 6.5.4-8 ,在 -crop 指定的尺寸都是原圖尺寸,搜尋看到的其他網站在後面 – 的時候,都必須先減去 + 的尺寸,也就是其他的網站會寫成 -crop 3236×4758-150-175 ,不只尺寸扣除連後面的距離也除二 …. ,我就是看了其他網站的錯誤示範讓我卡關超久,請直接使用原圖尺寸然後該內縮多少、扣除多少直接寫會比較容易。

然後處理後的就是比較滿版的頁面。

最後得到的 TIFF 檔案不能直接轉成 PDF 檔案,會出現我無法理解的怪頁面,所以中間又多了一次轉成 BMP 然後才轉成 PDF  …… ( 如果世界上沒有 BMP 我不知道該怎麼活了 = =a )

289 total views, no views today

如何使用 i-FunBox 置入 iBooks PDF 檔案

步驟一: 使用 i-FunBox 的「原始檔案系統」,將 PDF 檔案複製到目錄  /var/mobile/Media/Books/Purchases/ 中

步驟二: 將 PDF 更改檔名

步驟三: 編輯 Purchases.plist ,增加一個 <dict></dict> 區段,實際檔案名稱和檔名根據現況設定

 

139 total views, no views today