使用itext生成PDF文档入门

本文介绍使用itext库在Struts2框架下生成并输出PDF文档的方法。具体步骤包括初始化Document对象、配置PDF输出流、打开及关闭文档等。同时提供了一种让用户直接在浏览器中查看PDF的方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  因项目的需要,近几天看了看itext生成PDF文档。

 生成文档基本为5个步骤。

1,初始化Document对象,:Document document = new Document();

2,配置PDF的输出流:PdfWriter.getInstance(document,FileOutputStream("fileName"));

3,打开Docuement对象:document.open();

4,添加数据进入document对象中:document.add(elements);

5,关闭document对象:document.closed();

 

官方文档中有itext与servlet的集成,是用户能够在页面中打开PDF文档,目前项目使用struts2,因此参照官方文档使用struts2实现。

 

action :

 

public String getPdf(){

   Document document = new Document();

   ByteArrayOutputStream byOut = new ByteArrayOutputStream();

   PdfWriter.getInstance(document,byOut);

   document.open();

   document.add(elements)://添加数据.

   document.closed();

   ActionContext context = ActionContext.getContext();

   HttpServletResponse response = (HttpServletResponse)context.get(ServletActionContext.HTTP_RESPONSE);

   response.setContentType("application/pdf");

   response.setContentLength(byOut.size());

   ServletOutputStream out = response.getOutputStream();

   byout.writeTo(out);

return SUCCESS;

}

 

JSP:

 

在页面头<%@page %>中增加import="java.io.*,com.lowagie.text.*,com.lowagie.text.pdf.*"//itext
    session = "false"

<% 

 Document document = new Document();

ByteArrayOutputStream byOut = new ByteArrayOutputStream();

PdfWriter.getInstance(document,byOut);

document.open();

document.add(elements);//添加数据

ServletOutputStream outs = response.getOutputStream();

DataOutput output = new DataOutputStream(outs);
    byte[] bytes = buffer.toByteArray();
    response.setContentLength(bytes.length);
    for (int i = 0; i < bytes.length; i++) {
        output.writeByte(bytes[i]);
    }
   out.clear();         //
   out=pageContext.pushBody();//

%>

 

如果只需要下载后台生成的PDF文档,与正常的下载文件差不多。

将action中的:

   ActionContext context = ActionContext.getContext();

   HttpServletResponse response = (HttpServletResponse)context.get(ServletActionContext.HTTP_RESPONSE);

   response.setContentType("application/pdf");

   response.setContentLength(byOut.size());

   ServletOutputStream out = response.getOutputStream();

   byout.writeTo(out);

修改为 this.inputStream = new ByteArrayInputStream(byOut.toByteArray());//inputStream为下载文件时的文件流程。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值