2012-08-08 223 views
17

我使用wkhtmltopdf將html頁面導出爲pdf,但它似乎與捷克字符有問題...我將整個html加載到變量中,然後更改編碼並像這樣運行wkhtmltopdf:wkhtmltopdf - 編碼問題

$html = ob_get_clean(); 
$html = iconv("UTF-8","Windows-1250", $html); 
file_put_contents('../export.php', $html); 

$commandString = WKHTML_LIB.'http://www.estiroad.com/export.php sestava.pdf'; 
exec($commandString); 

.html文件具有正確的編碼,但即使我設置任何想法--encoding窗口-1250參數字符串命令,它只是不工作...謝謝...

編輯: 我解決了這個問題!美中不足的是在不斷WKHTML_LIB,這是我在頁面的開頭定義:

define('WKHTML_LIB', "../wkhtmltopdf/wkhtmltopdf-amd64"); 

我只寫了直接給exec路徑();命令,現在它甚至可以使用標誌。對不起,打擾你這樣一個平凡... 現在$的CommandString線看起來是這樣的:

$commandString = '"../wkhtmltopdf/wkhtmltopdf-amd64" --print-media-type --page-size A4 -R  50 --encoding windows-1250 --header-html header.html --margin-top 10mm --margin-bottom 10mm --margin-left 10mm --margin-right 10mm http://www.estiroad.com/export.php sestava.pdf'; 
+0

http之前應該有空格嗎? 'WKHTML_LIB。'http:/' – Cups 2012-08-08 08:53:16

+0

它不應該,但它不會影響它是否存在或不存在。命令執行時沒有問題,pdf生成,但它被錯誤地編碼....例如,而不是「ř」 「有」ø「... – 2012-08-08 08:58:28

+0

對不起,評論刪除了... – Cups 2012-08-08 09:22:09

回答

5

我解決這個問題!美中不足的是在不斷WKHTML_LIB,這是我在頁面的開頭定義:

define('WKHTML_LIB', "../wkhtmltopdf/wkhtmltopdf-amd64"); 

我只寫了直接給exec路徑();命令,現在它甚至可以使用標誌。對不起,打擾你這樣一個平凡...現在$的CommandString線看起來是這樣的:

$commandString = '"../wkhtmltopdf/wkhtmltopdf-amd64" --print-media-type --page-size A4 -R  50 --encoding windows-1250 --header-html header.html --margin-top 10mm --margin-bottom 10mm --margin-left 10mm --margin-right 10mm http://www.estiroad.com/export.php sestava.pdf'; 
+0

可能在原始解決方案中,它缺少引號內的引號,以便它們在插入到命令字符串時出現。像''有空間和東西的一些路徑''。 – userfuser 2014-04-29 21:11:26

0

我也有類似的問題,wkhtmltopdf在中國的字符沒有正確地呈現面前。我已經通過安裝適當的中文字體解決了這個問題。

任何機會,你必須安裝任何捷克相關字體的字符才能正確渲染?由於我不熟悉捷克文字/字體,我不確定這是否適用。希望這可以幫助。

+0

我認爲這不會幫助...幾乎所有我安裝的字體都支持捷克字符,另外,如果遠程用戶想要顯示pdf,這不會解決問題...:/ – 2012-08-08 09:29:56

+0

順便說一句:special czech人物是:,ď,ň,ó,ě,š,è,ř,ž,á,í,é,ú,ú。 – 2012-08-08 09:31:06

+0

是否有任何原因需要轉換爲從UTF-8編碼爲Windows-1250? 此外,也許嘗試使用iconv與// IGNORE追加到out_charset參數。也許還可以嘗試mb_convert_encoding。 – 2012-08-08 09:45:59

0

剛纔我對你提供的那些角色進行了測試,他們對我來說工作得很好。 Win7,wkhtmltopdf 0.11.0 rc2。作品封面,toc,書籤,內容和標題。還測試了韓國和中國的字符,甚至他們的工作。

PDF使用(刪除文件位置) --print-media-type --page-size A5 --header-html header.html --footer-html footer.html --margin-bottom 10mm --margin-top 10mm --margin-left 10mm --margin-right 10mm cover cover.html toc --xsl-style-sheet tocfile.xsl temp.html temp.pdf

temp.html極其無效XHTML生成,第一行說<?xml version="1.0" encoding="iso-8859-1"?>。 temp.html文件是用C#使用UTF-8寫入磁盤的,並且可以工作。我真的建議儘可能使用UTF-8。

Screenshot of generated PDF

+0

我試過了你的命令,但它只是不會工作:((它像添加的參數被忽略...即使我改變了例如margin-top值,它也不起作用 – 2012-08-08 11:10:02

+0

嗯,我只是再次測試,並將我的保證金從10mm改爲20mm,它可以工作,您可以發佈'$ commandString'和你的源HTML的某處,以便我可以準確地測試你的材料?有一件事是嘗試直接使用wkhtmltopdf而不是從php。如果你可以提供源代碼和確切的命令,我會嘗試在這裏複製問題 – Nenotlep 2012-08-08 11:28:47

+0

現在我試圖直接運行它,並且標誌正在工作,甚至編碼工作......任何想法如何強制它從PHP運行?我不能直接運行它,因爲我需要每個用戶都能夠o一鍵生成PDF,不下載wkhtml ... – 2012-08-08 11:47:13

42

以供將來參考:

我曾與德國的變音符號同樣的問題。

當我加入

<meta charset="UTF-8" /> 

到HTML頁面的問題得到解決。

這當然是以你的頁面作爲utf-8爲前提的。

+1

很高興這是我在解決我的問題時閱讀的第一件事:D – joevallender 2018-02-02 11:04:12