HTML 轉 PDf 方法一 wkhtmltopdf.exe
工作中涉及到製作PDF報表,找了很多辦法,總是不盡人意,有諸多bug,如:
1:中文顯示亂碼
2:處理字串分割及換行時要麼是字串被截斷無法顯示,要麼就是無法換行超出顯示範圍
3:處理分頁是內容被截斷
4:處理圖片時圖片失真,顯示錯亂
。。。。。
大家有興趣可以試一試:
方法一:libhpdf C++使用的API,可以從網上下載,此方法遇到的問題是字串換行處理及中文顯示有問題;
方法三:利用國外大牛寫的wkhtmltopdf.exe 此方法是諸多方法中最簡單且效果最好的方法,基本上可以做到所見即所得;
在此簡單介紹wkhtmltopdf.exe的使用方法:
下載地址:
指定頁邊距:
指定目錄及深度:目錄是根據HTML的標題標籤生成的<h1> <h2> <h3>.....,預設的深度是<h4>
--outline 生成的標籤預設深度是 4 ,通過--outline-depth 6 可以設定目錄深度為6
指定頁首:
--header-spacing 5 頁首距離
--header-line 頁首線
--header-left 指定頁首左側內容
--header-right 指定頁首右內容
指定頁尾:
--footer-center [page]/[topage] 頁尾中顯示,顯示內容是 【當前頁/總頁數】
--footer-line 指定頁尾線
wkhtmltopdf可以同時轉換多個HTML生成以個pdf,但是如果HTML檔案太多,可能導致引數太長轉換失敗(避免此問題的方法有兩種,一是把所有的HTML
檔案寫到一個檔案中,二是利用wkhtmltopdf原始碼)
好了,寫一個簡單的完成命令列呼叫方式供參考:
wkhtmltopdf.exe -T 15mm --outline-depth 6 --header-spacing 5 1.html --header-line --header-left “左邊” --header-right "右邊" --footer-center "[page]/[topage]"
--footer-line 2.html --header-line --header-left “左邊” --header-right "右邊" --footer-center "[page]/[topage]" --footer-line 3.html --header-line --header-left “左邊”
--header-right "右邊" --footer-center "[page]/[topage]" --footer-line Report.pdf
貼上wkthmltopdf.exe,大家可以參考一下;
常規選項
--allow <path> 允許載入從指定的資料夾中的檔案或檔案(可重複)
--book* 設定一會列印一本書的時候,通常設定的選項
--collate 列印多份副本時整理
--cookie <name> <value> 設定一個額外的cookie(可重複)
--cookie-jar <path> 讀取和寫入的Cookie,並在提供的cookie jar檔案
--copies <number> 影印列印成pdf檔案數(預設為1)
--cover* <url> 使用HTML檔案作為封面。它會帶頁首和頁尾的TOC之前插入
--custom-header <name> <value> 設定一個附加的HTTP頭(可重複)
--debug-javascript 顯示的javascript除錯輸出
--default-header* 新增一個預設的頭部,與頁面的左邊的名稱,頁面數到右邊,例如: --header-left '[webpage]' --header-right '[page]/[toPage]' --header-line
--disable-external-links* 禁止生成連結到遠端網頁
--disable-internal-links* 禁止使用本地連結
--disable-javascript 禁止讓網頁執行JavaScript
--disable-pdf-compression* 禁止在PDF物件使用無失真壓縮
--disable-smart-shrinking* 禁止使用WebKit的智慧戰略收縮,使畫素/ DPI比沒有不變
--disallow-local-file-access 禁止允許轉換的本地檔案讀取其他本地檔案,除非explecitily允許用 --allow
--dpi <dpi> 顯式更改DPI(這對基於X11的系統沒有任何影響)
--enable-plugins 啟用已安裝的外掛(如Flash
--encoding <encoding> 設定預設的文字編碼
--extended-help 顯示更廣泛的幫助,詳細介紹了不常見的命令開關
--forms* 開啟HTML表單欄位轉換為PDF表單域
--grayscale PDF格式將在灰階產生
--help Display help
--htmldoc 輸出程式HTML幫助
--ignore-load-errors 忽略claimes載入過程中已經遇到了一個錯誤頁面
--lowquality 產生低品質的PDF/ PS。有用縮小結果文件的空間
--manpage 輸出程式手冊頁
--margin-bottom <unitreal> 設定頁面下邊距 (default 10mm)
--margin-left <unitreal> 將左邊頁邊距 (default 10mm)
--margin-right <unitreal> 設定頁面右邊距 (default 10mm)
--margin-top <unitreal> 設定頁面上邊距 (default 10mm)
--minimum-font-size <int> 最小字型大小 (default 5)
--no-background 不列印背景
--orientation <orientation> 設定方向為橫向或縱向
--page-height <unitreal> 頁面高度 (default unit millimeter)
--page-offset* <offset> 設定起始頁碼 (default 1)
--page-size <size> 設定紙張大小: A4, Letter, etc.
--page-width <unitreal> 頁面寬度 (default unit millimeter)
--password <password> HTTP驗證密碼
--post <name> <value> Add an additional post field (repeatable)
--post-file <name> <path> Post an aditional file (repeatable)
--print-media-type* 使用的列印介質型別,而不是螢幕
--proxy <proxy> 使用代理
--quiet Be less verbose
--read-args-from-stdin 讀取標準輸入的命令列引數
--readme 輸出程式自述
--redirect-delay <msec> 等待幾毫秒為JS-重定向(default 200)
--replace* <name> <value> 替換名稱,值的頁首和頁尾(可重複)
--stop-slow-scripts 停止執行緩慢的JavaScripts
--title <text> 生成的PDF檔案的標題(第一個文件的標題使用,如果沒有指定)
--toc* 插入的內容的表中的檔案的開頭
--use-xserver* 使用X伺服器(一些外掛和其他的東西沒有X11可能無法正常工作)
--user-style-sheet <url> 指定使用者的樣式表,載入在每一頁中
--username <username> HTTP認證的使用者名稱
--version 輸出版本資訊退出
--zoom <float> 使用這個縮放因子 (default 1)
頁首和頁尾選項
--header-center* (設定在中心位置的頁首內容)
--header-font-name* (default Arial) (設定頁首的字型名稱)
--header-font-size* (設定頁首的字型大小)
--header-html* (新增一個HTML頁首,後面是網址)
--header-left* (左對齊的頁首文字)
--header-line* (顯示一條線在頁首下)
--header-right* (右對齊頁首文字)
--header-spacing* (設定頁首和內容的距離,預設0)
--footer-center* (設定在中心位置的頁尾內容)
--footer-font-name* (設定頁尾的字型名稱)
--footer-font-size* (設定頁尾的字型大小default 11)
--footer-html* (新增一個HTML頁尾,後面是網址)
--footer-left* (左對齊的頁尾文字)
--footer-line* 顯示一條線在頁尾內容上)
--footer-right* (右對齊頁尾文字)
--footer-spacing* (設定頁尾和內容的距離)
./wkhtmltopdf --footer-right '[page]/[topage]' http://www.baidu.com baidu.pdf
./wkhtmltopdf --header-center '報表' --header-line --margin-top 2cm --header-line http://192.168.212.139/oma/ oma.pdf 表內容選項中
--toc-depth* Set the depth of the toc (default 3)
--toc-disable-back-links* Do not link from section header to toc
--toc-disable-links* Do not link from toc to sections
--toc-font-name* Set the font used for the toc (default Arial)
--toc-header-font-name* The font of the toc header (if unset use --toc-font-name)
--toc-header-font-size* The font size of the toc header (default 15)
--toc-header-text* The header text of the toc (default Table Of Contents)
--toc-l1-font-size* Set the font size on level 1 of the toc (default 12)
--toc-l1-indentation* Set indentation on level 1 of the toc (default 0)
--toc-l2-font-size* Set the font size on level 2 of the toc (default 10)
--toc-l2-indentation* Set indentation on level 2 of the toc (default 20)
--toc-l3-font-size* Set the font size on level 3 of the toc (default 8)
--toc-l3-indentation* Set indentation on level 3 of the toc (default 40)
--toc-l4-font-size* Set the font size on level 4 of the toc (default 6)
--toc-l4-indentation* Set indentation on level 4 of the toc (default 60)
--toc-l5-font-size* Set the font size on level 5 of the toc (default 4)
--toc-l5-indentation* Set indentation on level 5 of the toc (default 80)
--toc-l6-font-size* Set the font size on level 6 of the toc (default 2)
--toc-l6-indentation* Set indentation on level 6 of the toc (default 100)
--toc-l7-font-size* Set the font size on level 7 of the toc (default 0)
--toc-l7-indentation* Set indentation on level 7 of the toc (default 120)
--toc-no-dots* Do not use dots, in the toc
輪廓選項
--dump-outline 轉儲目錄到一個檔案
--outline 顯示目錄(文章中h1,h2來定)
--outline-depth 設定目錄的深度(預設為4)
頁尾和頁首
- [page] 由當前正在列印的頁的數目代替
- [frompage] 由要列印的第一頁的數量取代
- [topage] 由最後一頁要列印的數量取代
- [webpage] 通過正在列印的頁面的URL替換
- [section] 由當前節的名稱替換
- [subsection] 由當前小節的名稱替換
- [date] 由當前日期系統的本地格式取代
-
[time] 由當前時間,系統的本地格式取代
./wkhtmltopdf --footer-right '[page]/[topage]' http://www.baidu.com baidu.pdf
./wkhtmltopdf --header-center '報表' --outline --header-line --margin-top 2cm --header-line http://www.hao123.com/ hao123.pdf
./wkhtmltopdf --header-left '[webpage]' --footer-center '測試([page]/[toPage])' http://www.baidu.com baidu.pdf
相關推薦
HTML 轉 PDf 方法一 wkhtmltopdf.exe
工作中涉及到製作PDF報表,找了很多辦法,總是不盡人意,有諸多bug,如: 1:中文顯示亂碼 2:處理字串分割及換行時要麼是字串被截斷無法顯示,要麼就是無法換行超出顯示範圍 3:處理分頁
HTML轉PDF工具(wkhtmltopdf)介紹,支援widows和linux
最近專案中客戶提了一個奇葩的需求;批量把html轉為pdf檔案用於存檔。聽到這個需求不知所錯,最開始研究iText使用java開發,各種中文亂碼,中文不顯示問題。後來在網上搜索到wkhtmltopdf工具,以下是完整的說明以及程式碼。 首先下載檔案:html轉為pdf檔案(wkhtm
最好用Html轉pdf的工具——wkhtmltopdf
實習時公司需要把一些html頁面中的部分內容生成pdf檔案,然後我就找一些用php把html頁面圍成pdf檔案的類。方法是可謂是找了很多很多,什麼html2pdf,pdflib,FPDF這些都試過了,但是都沒有達到我要的求(主要是不能解決中文亂碼的問題以及樣式排
史上最強php生成pdf文件,html轉pdf文件方法
是不是 下載地址 註意 pdflib min views 開發者 lan 輸入 之前有個客戶需要把一些html頁面生成pdf文件,然後我就找一些用php把html頁面圍成pdf文件的類。方法是可謂是找了很多很多,什麽html2pdf,pdflib,FPDF這些都試過了,但是
HTML 轉 PDF 之 wkhtmltopdf 工具精講
術語定義 文件物件 “文件物件”是指PDF文件中的文件物件,共有三種類型的“文件物件”,他們分別是“頁面物件”,“封面物件”和“目錄物件”。 頁面物件 “頁面物件”是指以頁面的形式在PDF文件中呈現的物件,這個是相對於“封面物件”和“目錄物件”來講的。此類物件會成為P
Java操作wkhtmltopdf實現Html轉PDF
做java開發的都知道,java生成pdf大部分都是用itext,itext的確是java開源元件的第一選擇。不過itext也有侷限,就是要自己寫模版,系統中的表單數量有好幾百個,為每個表單做一個匯出
wkhtmltopdf html轉PDF 支援java 直接呼叫命令進行轉換
wkhtmltopdf [OPTIONS]... <input file> [More input files] <output file> 常規選項 --allow <path> 允許載入從指定的資料夾中的檔案或檔案(可重複)--b
C# wkhtmltopdf 將html轉pdf
一、轉換程式程式碼如下: public string HtmlToPdf(string url) { bool success = true; // string dwbh = url.Split('?')[1].Split('=')[1
史上最強php生成pdf檔案,html轉pdf檔案方法
之前有個客戶需要把一些html頁面生成pdf檔案,然後我就找一些用php把html頁面圍成pdf檔案的類。方法是可謂是找了很多很多,什麼html2pdf,pdflib,FPDF這些都試過了,但是都沒有達到我要的求。 pdflib,FPDF這兩個方法是需要編寫程式去生成pdf
java完成HTML轉PDF wkhtmltopdf
為什麼使用wkhtmltopdf HTML轉PDF的實現方式有很多,但是轉換出來的PDF的質量又好有壞。之前試過IText和一些其
安卓手機怎麽將圖片轉PDF方法
在一起 nag 簡單 頁面 新的 images mark ima sha 手機圖片太多查閱不是很方便,也很占手機的內存,這時我們何不試試將圖片轉換成PDF文件呢,我們將以內的照片放在一起然後轉換成一個PDF文件,這樣查閱起來就方便了不少。 準備工具:安卓手機先去軟件商店下載
實現word轉pdf,HTML轉pdf(探索篇)
ner ase node eth ack line prope fin -o 筆者找依賴的jar包,找的好辛苦。 ITextRenderer、ITextFontResolver這兩個類依賴的jar包到底是哪個,還有怎麽下載?苦苦糾結了3個小時。終於找到你了!記錄個網址:ht
指定html轉pdf文檔
.com data com change creat one his cat div 1.資源 <script type="text/javascript" src="./js/canvg2.js"></script> <script
Django 實現HTML轉PDF 用通用檢視編寫PDF 並且讓PDF支援中文
Django 實現HTML轉PDF 用通用檢視編寫PDF 並且讓PDF支援中文 如何使用django-easy-pdf django-easy-pdf的依賴 安裝django-easy-pdf 使用過程中遇到的問題總結
freemarker生成html、html轉pdf、pdf根據關鍵字定位、pdf簽名
freemarker生成html、html轉pdf、pdf根據關鍵字定位、pdf簽名圖片 PdfUtil 類 (全部功能程式碼) Content 類 (自己建立相關檔案) 相關依賴(基於spring-boot測試) PdfUtil 類
PDF技術(四)-Java實現Html轉PDF檔案
html轉換為pdf的關鍵技術是如何處理網頁中複雜的css樣式、以及中文亂碼處理。 各實現對比表 於Windows平臺進行測試: 基於IText 基於FlyingSaucer 基於WKHtmlToPdf
虛擬環境,HTML轉PDF
最近這兩週以來,一直在寫Django專案,所以就沒能更新部落格,專案也沒往GitHub發,等以後寫出來好的專案再傳吧,現在這記錄一下容易忘掉的東西 1 建立虛擬環境 首先在D盤建立一個資料夾,名為python3.6, 通過命令列進入,這裡我用的是cmder,強烈
mpdf-html轉PDF,中文字元亂碼、加粗問題
$defaultConfig = (new ConfigVariables())->getDefaults(); $fontDirs = $defaultConfig['fontDir']; $defaultFontConfig =
java html轉pdf 中文亂碼
網上關於 html生產pdf的java程式碼許多,我就不說了。主要是記錄一下亂碼問題的關鍵 1、html檔案必須是utf-8編碼格式的檔案。 2、程式碼中的獲取方式也是utf-8的格式。 3、其他的按照別人的教程編寫
iText —— JAVA將html轉pdf
1、index.html檔案內容如下 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.