html 轉pdf 的操作流程以及遇到的坑

第一步:

  引入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 的規範性!

  1. html 的標籤必須關閉,尤其是單標籤,比如說<br/> <input/>等!
  2. 在轉換pdf 時,js代碼是無效的
  3. Css樣式中 內外邊距 margin padding  是無效的
  4. Html 代碼中不要出現“自帶對字體有修飾的標籤”;比如說<h1>~<h6> <b></b> <form></form>標籤
  5. Css在設置寬度的時候,不要超過pdf 設置的最大寬度

 

以上的錯誤都會使生成的pdf,出現空白頁面!

  

   在pdf 中 ;通過css 樣式的來顯示居中 ,width 來控制寬度!字體需要加粗不要使用標題標籤 font-weight 就可以!

   測試過程中主要一部分一部分的測試

 

第三步

   進行單元測試。測試時是需要做一步測一步不然你都不知道自己錯誤出現在哪了!

需要源代碼的,請關注聯繫我!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章