1)直接在服务器上生成PDF文件。
<%@pageimport="com.lowagie.text.*
,com.lowagie.text.pdf.*,java.io.*"%>
<%
Stringfilename=
"PDF"+(newRandom()).nextInt()+".pdf";
Documentdocument=
newDocument(PageSize.A4);
ServletOutputStreamout1
=response.getOutputStream();
try{
PdfWriterwriter=
PdfWriter.getInstance(document,
newFileOutputStream(filename));
document.open();
document.add(newParagraph("HelloWorld"));
document.close();
}
catch(Exceptione){}
%>
上面的程序在服务器上生成了一个静态的PDF文件。显然,每次运行所得的PDF文件的名称应该是独一无二不能有重的。本程序通过随机函数来命名生成的PDF文件。本程序的缺点就是,每次运行都会在服务器上产生一个PDF文件,如果不及时删除,数量会越来越大,这显然是站点维护者所不愿意看到的。
2)将PDF文件通过流的形式输送到客户端的缓存。这样做的好处是不会在服务器上留下任何“遗迹”。
i)直接通过JSP页面生成
<%@
pageimport="java.io.*,
java.awt.Color,com.lowagie.text.*,
com.lowagie.text.pdf.*"%>
<%
response.setContentType
("application/pdf");
Documentdocument=newDocument();
ByteArrayOutputStreambuffer
=newByteArrayOutputStream();
PdfWriterwriter=
PdfWriter.getInstance(document,buffer);
document.open();
document.add(newParagraph("HelloWorld"));
document.close();
DataOutputoutput=
newDataOutputStream
(response.getOutputStream());
byte[]bytes=buffer.toByteArray();
response.setContentLength(bytes.length);
for(inti=0;
i
{
output.writeByte(bytes[i]);
}
%>
ii)通过Servlet生成
importjava.io.*;
importjavax.servlet.*;
importjavax.servlet.http.*;
importcom.lowagie.text.*;
importcom.lowagie.text.pdf.*;
publicvoiddoGet
(HttpServletRequestrequest,
HttpServletResponseresponse)
throwsIOException,ServletException
{
Documentdocument=
newDocument(PageSize.A4,36,36,36,36);
ByteArrayOutputStreamba
=newByteArrayOutputStream();
try
{
PdfWriterwriter=
PdfWriter.getInstance(document,ba);
document.open();
document.add(new
Paragraph("HelloWorld"));
}
catch(DocumentExceptionde)
{
de.printStackTrace();
System.err.println
("ADocumenterror:"+de.getMessage());
}
document.close();
response.setContentType
("application/pdf");
response.setContentLength(ba.size());
ServletOutputStreamout
=response.getOutputStream();
ba.writeTo(out);
out.flush();
}