這段時間,接到一個需求,是將doc檔案生成pdf檔案,因為doc檔案還挺復雜的,按照網上的示例使用java代碼一個一個生成,那就太復雜了,所以就想到使用html模板來生成pdf檔案,文章結束附代碼鏈接(下載pdf,pdf添加水印文字圖片,poi匯出excel,freemarker匯出excel),
步驟:
1.wps打開doc檔案,檔案另存為html格式

2.將生成的html復制進專案,如果有圖片,則把同名檔案中的圖片復制進專案
3.把html中的圖片路徑替換成正確的路徑
4.檢查html中的標簽是否都正確結束,
5.下載除錯,如果有表格等,可能會導致有些邊框出不來,所以需要除錯table的td標簽的border屬性,
代碼鏈接:
https://download.csdn.net/download/zj520_/13103967
圖片是我使用demo代碼測驗匯出的檔案:

生成的水印文字,支持多頁生成:

可能遇到的坑:
一、報錯資訊: The document has no pages.
原因1:在生成PDF時,需要生成PDF的內容,標簽有誤,在使用itextpdf下載pdf的適合,一定要保證標簽有開始,有結束才行,
比如生成的html檔案中的meta標簽,img標簽;
解決:
<meta http-equiv=Content-Type content="text/html; charset=UTF-8"/>
<meta name=ProgId content=Word.Document/>
<meta name=Generator content="Microsoft Word 14"/>
<meta name=Originator content="Microsoft Word 14"/>
<img src=""/>
原因2:使用新版的wps生成的html檔案中含有itextPdf不識別的內容,我這次就因為這個搞了我幾天,后面發現就是在html中有下圖中的內容,
解決:將這些內容刪掉即可

二、java.nio.charset.MalformedInputException: Input length = 1
原因:是因為html的字符編碼的問題,將檔案的編碼轉為utf-8即可,
解決:將生成的html檔案中的標簽中的
<meta http-equiv=Content-Type content="text/html; charset=gb2312" />
改為:
<meta http-equiv=Content-Type content="text/html; charset=UTF-8" />
三、在使用ftl生成excel的時候,wps生成的xml檔案,里面有很多內容不能格式化,可能會導致匯出的檔案有問題,打不開,所以就只格式化Worksheet標簽內的內容就行了,
四、生成的xls結尾的檔案,使用office打開會提示:"檔案格式和擴展名不匹配",但是點擊是,仍然能打開,網上有解決方案,如果有大佬有更好的方案,麻煩留言告知,
使用freemarker匯出doc檔案同理,如果有圖片或者表格合并的問題,請點擊鏈接:
https://www.cnblogs.com/pluto-charon/p/10934174.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/211556.html
標籤:其他
