0
{
   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。

4

1 回答 1

0

请查看一些页面事件示例。目前,您正在创建一个未命名的PdfWriter实例。将其更改为命名编写器实例并在打开文档实例之前声明一个页面事件:

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

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

在标题中添加标题、徽标、日期……是通过实现该onEndPage()方法来完成的。不要在onStartPage()没有阅读文档的情况下使用该方法!!!

使用这些onEndPage()示例来获取灵感。

要添加图像,请将成员变量添加img到页面事件,并将其添加到构造函数:

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

然后在onEndPage()方法中,这样做:

writer.getDirectContent().addImage(img);

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

于 2013-09-17T09:44:27.807 回答