當前位置:編程學習大全網 - 熱門推薦 - jsp頁面如何導成pdf格式?

jsp頁面如何導成pdf格式?

先在服務器上生成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文件通過流的形式輸送到客戶端的緩存。這樣做的好處是不會在服務器上留下任何“遺跡”。

i)直接通過JSP頁面生成

<%@

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] );

}

%>

ii)通過Servlet生成

import java.io.*;

import javax.servlet.*;

import javax.servlet..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();

}

  • 上一篇:廣告類型有哪幾種
  • 下一篇:新西蘭所有城鎮的名字
  • copyright 2024編程學習大全網