Java IText PDF分頁模板製作 輸出
阿新 • • 發佈:2019-02-14
相信很多朋友在專案中或多或少會遇到報表列印的需求,然而精確套打的實現更是一份苦差呀。近日在網上找到一份chm文件,雖然這是某家公司產品開發文件(大家不要誤會,我可不是想在這做廣告哦,這個產品要是免費就更好了,呵呵),但是對PDF模板製作有很詳細的講解,而且裡面還有視訊。。。相信大家一看就會了!
通過iText可以呼叫PDF模板,對模板中的欄位動態賦值,從而實現套打(也就是說,我們可以不依賴這份文件中提到的產品),當我們報表的樣式或位置需要調整時,我們之需修改模板即可。下一篇Blog我會給大家一個示例,等不急的話大家可以到網上找找,這方面的資料還是蠻多的。
好了,不多說了,大家快行動吧。
下面這個servlet程式碼填充模板(見附件中testEx.pdf檔案)中的欄位,程式碼如下:
java 程式碼- import javax.servlet.*;
- import javax.servlet.http.*;
- import java.io.*;
- import com.lowagie.text.*;
- import com.lowagie.text.pdf.*;
- publicclass GenPdfServlet extends HttpServlet {
- protectedvoid doGet(HttpServletRequest request,
- HttpServletResponse response) throws ServletException,
- java.io.IOException {
- response.reset();
- ByteArrayOutputStream ba = new ByteArrayOutputStream();
- try {
- /* 開啟已經定義好欄位以後的pdf模板 */
- String TemplatePDF = getServletContext().getRealPath(".")
- + "testEx.pdf";
- PdfReader reader = new PdfReader(TemplatePDF);
- /* 將要生成的目標PDF檔名稱 */
- PdfStamper stamp = new PdfStamper(reader, ba);
- PdfContentByte under = stamp.getUnderContent(1);
- /* 使用中文字型 */
- BaseFont bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",
- BaseFont.NOT_EMBEDDED);
- Font FontChinese = new Font(bf, 12, Font.NORMAL);
- /* 取出報表模板中的所有欄位 */
- AcroFields form = stamp.getAcroFields();
- /* 為欄位賦值,注意欄位名稱是區分大小寫的 */
- form.setField("name", "lixy");
- form.setField("age", "26");
- stamp.setFormFlattening(true);
- /* 必須要呼叫這個,否則文件不會生成的 */
- stamp.close();
- } catch (DocumentException de) {
- de.printStackTrace();
- System.err.println("A Document error:" + de.getMessage());
- }
- response.setContentType("application/pdf");
- /* 如果想出來讓IE提示你是開啟還是儲存的對話方塊,加上下面這句就可以了 */
- // response.setHeader("Content-disposition","attachment; filename="
- // +"report.pdf" );
- response.setContentLength(ba.size());
- try {
- ServletOutputStream out = response.getOutputStream();
- ba.writeTo(out);
- out.flush();
- out.close();
- ba.close();
- } catch (IOException e) {
- e.printStackTrace();
- System.err.println("A Document error:" + e.getMessage());
- }
- }
- }
- 描述: PDF模板檔案