天天看點

Java iText使用PDF模闆生成PDF文檔

我們系統需要生成一個可以列印的pdf文檔,老闆給了我一個word文檔,按照這個word文檔的格式生成pdf文檔。

第一步:下載下傳adobeacrobat dc,必須使用這個來制作from域。

第二步:使用adobeacrobat dc将word導成pdf文檔。

第三步:由于還要加水印的效果,是以還是使用adobeacrobat dc來添加水印,非常友善;

    添加水印的方法:使用adobeacrobat dc打開pdf文檔,“工具”-》“編輯pdf”-》”水印”-》”添加”

Java iText使用PDF模闆生成PDF文檔

添加水印的操作:

Java iText使用PDF模闆生成PDF文檔

點選“确定”:

Java iText使用PDF模闆生成PDF文檔

第四步:使用adobeacrobat dc添加from域;

添加from域方法:使用adobeacrobat dc打開文檔,“工具”-》“準備表單”

Java iText使用PDF模闆生成PDF文檔

點選“開始”:

Java iText使用PDF模闆生成PDF文檔

點選“儲存”:

Java iText使用PDF模闆生成PDF文檔
Java iText使用PDF模闆生成PDF文檔

添加“文本域”到我們想要添加内容的位置:

Java iText使用PDF模闆生成PDF文檔

第五步:使用java代碼導出pdf文檔;

主要三個類:功能類-pdftempletticket

資料類-ticket

測試類-testtempletticket

導出來後的結果:

Java iText使用PDF模闆生成PDF文檔

備注:導出pdf文檔,from域的内容不可見問題;itext找不到字型;

問題1:我開始導出的from域内容看不到,将ps.setformflattening(true);設定為flase後,可以看到from域,還是看不到内容,我點選進入from後可以看到内容,該方法是将from域隐藏;後來看到有人設定from域内容的字型:basefontbf = basefont.createfont(pdfticket.class.getresource("/") + "org/csun/ns/util/simsun.ttc,1", 

                basefont.identity_h, basefont.embedded);

以及:

s.setsubstitutionfonts(fontlist);

問題2:别人的代碼:

basefont bf = basefont.createfont("stsong-light", "unigb-ucs2-h", basefont.not_embedded);

會報找不到字型的錯誤,這裡的解決方式就是通過使用自己的字型就好,simsun.ttc是windows下面自帶的字型(簡體宋體:c:\windows\fonts下面有很多字型可以使用)