使用itext将标题添加到pdf

时间:2013-09-17 07:59:30

标签: html mysql jsp pdf itext

{
   Document document = new Document(PageSize.A3, 32, 32, 32, 32);
   PdfWriter.getInstance(document, response.getOutputStream());
   document.open();
  HTMLWorker htmlWorker = new HTMLWorker(document);
  Class.forName("com.mysql.jdbc.Driver");
  Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/db", "", "");
  Statement st=con.createStatement();
  ResultSet rs=st.executeQuery("Select * from test3");
   List arrlist = new ArrayList();
    while(rs.next()){
   String xa =rs.getString("display");
  if(xa.equals("1")){
  arrlist.add(rs.getString("question_text"));
  }
}
Collections.shuffle(arrlist); 
for(int i=0;i<5;i++){
    String str = (String) arrlist.get(i);
    htmlWorker.parse(new StringReader(str));
    htmlWorker.parse(new StringReader("<br>"));
}
document.close();
}

上面是一个代码片段,它从数据库中获取数据并显示在pdf上。如何添加标题,徽标,日期和页面号?如果有人可以提供帮助。请使用itext。

1 个答案:

答案 0 :(得分:0)

请查看部分page event examples。目前,您正在创建一个未命名的PdfWriter实例。将其更改为命名的writer实例,并在打开文档实例之前声明页面事件:

PdfWriter writer = PdfWriter.getInstance(document, response.getOutputStream());
writer.setPageEvent(new MyPageEvents());

MyPageEvents课程由您撰写。它需要实现PdfPageEvent接口,或者更好的是扩展PdfPageEventHelper类。

通过实施onEndPage()方法,在标题中添加标题,徽标,日期等。 请勿在未阅读文档的情况下使用onStartPage()方法!!!

使用这些onEndPage() examples获取灵感。

要添加图片,请在页面事件中添加成员变量img,然后将其添加到构造函数中:

Image img = Image.getInstance(pathToImage);
img.setAbsolutePosition(36, 806);

然后在onEndPage()方法中,执行以下操作:

writer.getDirectContent().addImage(img);

这将在位置x = 36,y = 806(靠近页面左上方)添加图像。请注意,为每个新页面创建新的Image实例非常重要,因为这会导致文件膨胀。通过在页面事件的构造函数中创建Image并重用该对象,图像字节将仅在PDF文件中出现一次。