iT邦幫忙

0

如何將一個HTML檔用TCPDF秀出來

如題..

我有一個已經編輯好的HTML檔或XML檔
(內容部分理論上只有標準的HTML TAG+CSS..不會有javascript)

我想將這檔案直接用TCPDF呈現出來
也就是將檔案秀出成PDF檔

該如何做到呢?

目前我從其官網上看到的範例
可以用下面的方法讀檔

// add a page
$pdf->AddPage();

// get esternal file content
$utf8text = file_get_contents('data/utf8test.txt', false);

//Write($h, $txt, $link='', $fill=0, $align='', $ln=false, $stretch=0, $firstline=false, $firstblock=false, $maxh=0)

// write the text
$pdf->Write(5, $utf8text, '', 0, '', false, 0, false, false, 0);

我將data/utf8test.txt換成我要轉的檔案路徑後
執行結果是...

他真的只有讀檔
沒有轉成PDF...

也就是說...這個方法只有將HTML內的程式碼以字串形式完整秀出來...
而不是秀出HTML檔案內容畫面...0.0

看更多先前的討論...收起先前的討論...
小魚 iT邦大師 1 級 ‧ 2017-06-19 12:10:15 檢舉
輸出PDF應該需要後端語言配合吧,如果是直接列印網頁似乎有現成的函式可以用
確實~
要輸出PDF需要後端去組合HTML字串
再加上TCPDF的WriteHTML函式呈現畫面

我問題中的方法
是將HTML檔中的程式碼撈出來成HTML字串
再用WriteHTML呈現畫面
但不知為何
PDF上呈現的效果跟在網頁上幹道的效果卻大不相同
排版完全亂跑

另外..
我會想做這個是因為接到一個課題(老闆發問..我就盡可能給他答案)
想像有一套系統
分別給不同的人使用
他們使用完會產出結果(也就是報告)
這樣的結果是以HTML組出來並存成HTML檔(或是XML)
這些檔案都會被存到一個地方
並根據每個檔案的特性分門別類存到相對應的資料夾中

而我的課題就是從這些目錄將檔案全數撈出來
並將他們按照相對應的資料夾編輯索引目錄
同時以PDF呈現出來
就像一本書一樣

我算是完成三分之一了
我目前做到將整個目錄撈出來
其中包含各個檔案所在的路徑

剩下編輯PDF索引以及將檔案變成PDF檔

至於索引部份我知道怎麼完成
唯獨將檔案變成PDF有困難

本來我看到官網上的範例..
我以為我找到了...
殊不知上面那段程式碼只是秀出內容字串...= =
weiclin iT邦高手 4 級 ‧ 2017-06-19 15:27:09 檢舉
把 html 轉成 pdf:
https://wkhtmltopdf.org/

或是變成圖片:
http://phantomjs.org/screen-capture.html
weiclin大大是要我先暫時不朝TCPDF思考吧
我會下載來試試看的
weiclin iT邦高手 4 級 ‧ 2017-06-19 16:29:05 檢舉
不是, 只是給你另一種選擇, 因為你說已經編輯好了, 那就有現成的程式可以轉
如果你還是想用 tcpdf, 你應該只是叫錯函式了, 試試 $pdf->writeHTML : https://tcpdf.org/examples/example_006/
我發問完後
有改成writeHTML
但是呈現出來的畫面卻與原本HTML檔本身的畫面不太相符

還在找原因出在哪?
或是還有其他函式可以用~

我是蠻好奇網路上那些線上轉PDF的網站...
到底如何做到的= =

因為我只知道自己組HTML字串
再用TCPDF的writeHTML將我祖好的HTML秀出來~= =
weiclin iT邦高手 4 級 ‧ 2017-06-19 17:56:58 檢舉
就我所知, 因為 tcpdf 沒有完整支援所有的 css: https://stackoverflow.com/questions/11395171/why-does-tcpdf-ignore-my-inline-css

相對之下, wkhtmltopdf 用的是 Webkit 去幫忙處理, 支援度會好很多
chen0857 iT邦新手 5 級 ‧ 2020-04-24 10:40:59 檢舉
想問你問題解決了嗎~
因為我也遇到相同問題,
如果為了不跑版,只能認命一張一張刻TCPDF嗎?
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友回答

立即登入回答