{
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。
答案 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文件中出现一次。