第一步:
引入itextpdf.jar / xmlworker.jar
編寫pdfUtils 類
方法一:generatorPdfFile()生成pdf方法,創建document對象,設置出生成pdf 的大小爲a4紙大小,設置內容與頁面的上下左右的內邊距;創建pdfWrite對象,傳參document,和生成出的pdf的存放地址;pdfWrite對象隱藏生成出來時的工具條 ;創建XMLWorkerFontProvider 對象,並且設置創建pdf 時要用到的字體。
獲取XMLWorkerHelper 實例,調用parseXHtml()傳入數據和模板,document pdfWriter對象 生成pdf.
方法二:添加水印方法,創建waterMarkConfig 對象,獲取配置信息,主要包括水印的字體,透明度,傾斜度,水印的顏色,當然水印的添加是在文檔生成之後調用的。添加完成的水印pdf輸出到指定的位置
方法三 給生成好的pdf添加頁碼 ,創建pdfStamper 實例 通過getNumberOfPages()來讀取pdf 的總頁數。通過pdfStamper 實例的getOverContent() 方法得到pdf的最頂層,添加頁碼!
在獲取html的字符串後,需要將input 中的value值展現出來,以及用戶沒有輸入值的地方用下劃線來代替;處理方式: 首先用Jsoup.parse() 來解析html文件內容中的字符串,解析成document對象,然後選擇input標籤 獲取此元素對象,過濾此元素對象,進行處理value值,提取value 使用<a></a> 來進行展示。同時處理input 的value值爲空的情況。
處理完成後,通過doc.html() 返回html字符串,但是返回的html 還是存在問題的,其中,單標籤沒有關閉,比如<input><br><meta> 需要進行進一步的處理,需要讓標籤完整。
第二部
·
Html 在生成pdf 時,需要注意html 的規範性!
- html 的標籤必須關閉,尤其是單標籤,比如說<br/> <input/>等!
- 在轉換pdf 時,js代碼是無效的
- Css樣式中 內外邊距 margin padding 是無效的
- Html 代碼中不要出現“自帶對字體有修飾的標籤”;比如說<h1>~<h6> <b></b> <form></form>標籤
- Css在設置寬度的時候,不要超過pdf 設置的最大寬度
以上的錯誤都會使生成的pdf,出現空白頁面!
在pdf 中 ;通過css 樣式的來顯示居中 ,width 來控制寬度!字體需要加粗不要使用標題標籤 font-weight 就可以!
測試過程中主要一部分一部分的測試
第三步
進行單元測試。測試時是需要做一步測一步不然你都不知道自己錯誤出現在哪了!
需要源代碼的,請關注聯繫我!