溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用JSP頁面生成PDF報表

發布時間:2021-07-14 15:25:15 來源:億速云 閱讀:288 作者:chen 欄目:編程語言

這篇文章主要介紹“如何使用JSP頁面生成PDF報表”,在日常操作中,相信很多人在如何使用JSP頁面生成PDF報表問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如何使用JSP頁面生成PDF報表”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

1、iText簡介

iText是一個開放源碼的Java類庫,可以用來方便地生成PDF文件。大家通過訪問http://sourceforge.net/project/showfiles.php?group_id=15255&release_id=167948下載***版本的類庫,下載完成之后會得到一個.jar包,把這個包加入JDK的classpath即可使用。

如果生成的PDF文件中需要出現中文、日文、韓文字符,則還需要通過訪問http://itext.sourceforge.net/downloads/iTextAsian.jar下載iTextAsian.jar包。

關于iText類庫的使用,http://www.lowagie.com/iText/tutorial/index.html有比較詳細的教程。該教程從入門開始,比較系統地介紹了在PDF文件中放入文字、圖片、表格等的方法和技巧。

讀完這片教程,大致就可以做一些從簡單到復雜的PDF文件了。不過,試圖通過教程解決在生成PDF文件過程中遇到的所有困難無疑是一種奢望。所以,閱讀iText的api文檔顯得非常重要。讀者在下載類庫的同時,也可以下載類庫的文檔。

2、如何利用iText在JSP頁面中生成PDF報表

以下是一個最簡單的例子,這個例子刻畫了通過iText生成PDF文件的一般程序框架。讀者只需要在document.open();和 document.close();兩條語句中間加入自己希望放在PDF文件中的內容即可。該例子只在PDF文件中加了“Hello World“一行文字。

Document document = new Document();  try  {  PdfWriter.getInstance  (document, new FileOutputStream  ("Chap0101.pdf"));  document.open();  document.add(new Paragraph("Hello World"));  }  catch(DocumentException de)  {  System.err.println(de.getMessage());  }  catch(IOException ioe)  {  System.err.println(ioe.getMessage());  }  document.close();

由以上的例子可見,程序的框架十分清楚明了。然而在PDF中指定文字、圖畫、表格的位置是一件非常麻煩的事情。除了不斷地在程序中修改位置、然后運行程序、生成PDF文件、觀察元素在PDF中的位置是否合理這樣的過程以外,似乎還沒有其它更好的方法。

3、如何通過JSP生成PDF報表

這一部分是在iText的教程中所沒有的,網上的相關資料也比較少。我經過一段時間研究發現:先在服務器上生成PDF文件,然后用戶通過點擊指向PDF文件的超鏈接選擇下載或打開。這是一個思路,或者說是思路之一。本文實現了這個思路,又給出另外一個思路并通過兩種途徑實現之。

1)直接在服務器上生成PDF報表。

<%@ page import ="com.lowagie.text.*  ,com.lowagie.text.pdf.*, java.io.*"%> <%  String filename =  "PDF"+(new Random()).nextInt()+".pdf" ;  Document document =  new Document(PageSize.A4);  ServletOutputStream out1 = response.getOutputStream();  try{  PdfWriter writer =  PdfWriter.getInstance(document,  new FileOutputStream(filename) );  document.open();  document.add(new Paragraph("Hello World"));  document.close();  }  catch(Exception e){}  %>

上面的程序在服務器上生成了一個靜態的PDF文件。顯然,每次運行所得的PDF文件的名稱應該是***不能有重的。本程序通過隨機函數來命名生成的PDF文件。本程序的缺點就是,每次運行都會在服務器上產生一個PDF文件,如果不及時刪除,數量會越來越大,這顯然是站點維護者所不愿意看到的。

2)將PDF文件通過流的形式輸送到客戶端的緩存。這樣做的好處是不會在服務器上留下任何“遺跡”。

◆直接通過JSP頁面生成PDF報表

<%@  page import="java.io.*,  java.awt.Color,com.lowagie.text.*,  com.lowagie.text.pdf.*"%> <%  response.setContentType  ( "application/pdf" );  Document document = new Document();  ByteArrayOutputStream buffer = new ByteArrayOutputStream();  PdfWriter writer=  PdfWriter.getInstance( document, buffer );  document.open();  document.add(new Paragraph("Hello World"));  document.close();  DataOutput output =  new DataOutputStream  ( response.getOutputStream() );  byte[] bytes = buffer.toByteArray();  response.setContentLength(bytes.length);  for( int i = 0;  i < bytes.length;  i++ )  {  output.writeByte( bytes[i] );  }  %>

◆通過Servlet生成PDF報表

import java.io.*;  import javax.servlet.*;  import javax.servlet.http.*;  import com.lowagie.text.*;  import com.lowagie.text.pdf.*;  public void doGet  (HttpServletRequest request,  HttpServletResponse response)  throws IOException,ServletException  {  Document document =  new Document(PageSize.A4, 36,36,36,36);  ByteArrayOutputStream ba = new ByteArrayOutputStream();  try  {  PdfWriter writer =  PdfWriter.getInstance(document, ba);  document.open();  document.add(new  Paragraph("Hello World"));  }  catch(DocumentException de)  {  de.printStackTrace();  System.err.println  ("A Document error:" +de.getMessage());  }  document.close();  response.setContentType  ("application/pdf");  response.setContentLength(ba.size());  ServletOutputStream out = response.getOutputStream();  ba.writeTo(out);  out.flush();  }

到此,關于“如何使用JSP頁面生成PDF報表”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

jsp
AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女