1. 程式人生 > >HTML 轉 PDf 方法一 wkhtmltopdf.exe

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:處理分頁

HTMLPDF工具(wkhtmltopdf)介紹,支援widows和linux

最近專案中客戶提了一個奇葩的需求;批量把html轉為pdf檔案用於存檔。聽到這個需求不知所錯,最開始研究iText使用java開發,各種中文亂碼,中文不顯示問題。後來在網上搜索到wkhtmltopdf工具,以下是完整的說明以及程式碼。 首先下載檔案:html轉為pdf檔案(wkhtm

最好用Htmlpdf的工具——wkhtmltopdf

實習時公司需要把一些html頁面中的部分內容生成pdf檔案,然後我就找一些用php把html頁面圍成pdf檔案的類。方法是可謂是找了很多很多,什麼html2pdf,pdflib,FPDF這些都試過了,但是都沒有達到我要的求(主要是不能解決中文亂碼的問題以及樣式排

史上最強php生成pdf文件,htmlpdf文件方法

是不是 下載地址 註意 pdflib min views 開發者 lan 輸入 之前有個客戶需要把一些html頁面生成pdf文件,然後我就找一些用php把html頁面圍成pdf文件的類。方法是可謂是找了很多很多,什麽html2pdf,pdflib,FPDF這些都試過了,但是

HTML PDFwkhtmltopdf 工具精講

術語定義 文件物件 “文件物件”是指PDF文件中的文件物件,共有三種類型的“文件物件”,他們分別是“頁面物件”,“封面物件”和“目錄物件”。 頁面物件 “頁面物件”是指以頁面的形式在PDF文件中呈現的物件,這個是相對於“封面物件”和“目錄物件”來講的。此類物件會成為P

Java操作wkhtmltopdf實現HtmlPDF

做java開發的都知道,java生成pdf大部分都是用itext,itext的確是java開源元件的第一選擇。不過itext也有侷限,就是要自己寫模版,系統中的表單數量有好幾百個,為每個表單做一個匯出

wkhtmltopdf htmlPDF 支援java 直接呼叫命令進行轉換

wkhtmltopdf [OPTIONS]... <input file> [More input files] <output file> 常規選項  --allow <path>  允許載入從指定的資料夾中的檔案或檔案(可重複)--b

C# wkhtmltopdfhtmlpdf

一、轉換程式程式碼如下:  public string HtmlToPdf(string url) { bool success = true; // string dwbh = url.Split('?')[1].Split('=')[1

史上最強php生成pdf檔案,htmlpdf檔案方法

之前有個客戶需要把一些html頁面生成pdf檔案,然後我就找一些用php把html頁面圍成pdf檔案的類。方法是可謂是找了很多很多,什麼html2pdf,pdflib,FPDF這些都試過了,但是都沒有達到我要的求。 pdflib,FPDF這兩個方法是需要編寫程式去生成pdf

java完成HTMLPDF wkhtmltopdf

為什麼使用wkhtmltopdf HTML轉PDF的實現方式有很多,但是轉換出來的PDF的質量又好有壞。之前試過IText和一些其

安卓手機怎麽將圖片PDF方法

在一起 nag 簡單 頁面 新的 images mark ima sha 手機圖片太多查閱不是很方便,也很占手機的內存,這時我們何不試試將圖片轉換成PDF文件呢,我們將以內的照片放在一起然後轉換成一個PDF文件,這樣查閱起來就方便了不少。 準備工具:安卓手機先去軟件商店下載

實現wordpdfHTMLpdf(探索篇)

ner ase node eth ack line prope fin -o 筆者找依賴的jar包,找的好辛苦。 ITextRenderer、ITextFontResolver這兩個類依賴的jar包到底是哪個,還有怎麽下載?苦苦糾結了3個小時。終於找到你了!記錄個網址:ht

指定htmlpdf文檔

.com data com change creat one his cat div 1.資源 <script type="text/javascript" src="./js/canvg2.js"></script> <script

Django 實現HTMLPDF 用通用檢視編寫PDF 並且讓PDF支援中文

Django 實現HTML轉PDF 用通用檢視編寫PDF 並且讓PDF支援中文 如何使用django-easy-pdf django-easy-pdf的依賴 安裝django-easy-pdf 使用過程中遇到的問題總結

freemarker生成htmlhtmlpdfpdf根據關鍵字定位、pdf簽名

freemarker生成html、html轉pdf、pdf根據關鍵字定位、pdf簽名圖片 PdfUtil 類 (全部功能程式碼) Content 類 (自己建立相關檔案) 相關依賴(基於spring-boot測試) PdfUtil 類

PDF技術(四)-Java實現HtmlPDF檔案

html轉換為pdf的關鍵技術是如何處理網頁中複雜的css樣式、以及中文亂碼處理。 各實現對比表 於Windows平臺進行測試:   基於IText 基於FlyingSaucer 基於WKHtmlToPdf

虛擬環境,HTMLPDF

最近這兩週以來,一直在寫Django專案,所以就沒能更新部落格,專案也沒往GitHub發,等以後寫出來好的專案再傳吧,現在這記錄一下容易忘掉的東西 1 建立虛擬環境 首先在D盤建立一個資料夾,名為python3.6, 通過命令列進入,這裡我用的是cmder,強烈

mpdf-htmlPDF,中文字元亂碼、加粗問題

$defaultConfig = (new ConfigVariables())->getDefaults(); $fontDirs = $defaultConfig['fontDir']; $defaultFontConfig =

java htmlpdf 中文亂碼

網上關於 html生產pdf的java程式碼許多,我就不說了。主要是記錄一下亂碼問題的關鍵 1、html檔案必須是utf-8編碼格式的檔案。 2、程式碼中的獲取方式也是utf-8的格式。 3、其他的按照別人的教程編寫

iText —— JAVA將htmlpdf

1、index.html檔案內容如下 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.