【问题标题】:Add title to pdf using itext使用 itext 为 pdf 添加标题
【发布时间】:2013-09-17 07:59:29
【问题描述】:
{
   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();
}

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

【问题讨论】:

    标签: html mysql jsp pdf itext


    【解决方案1】:

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

    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 实例,这一点很重要,因为这会导致 PDF 文件臃肿。通过在页面事件的构造函数中创建 Image 并重用该对象,图像字节将仅在 PDF 文件中出现一次。

    【讨论】:

    • 我已经完成了页码和页眉。我需要知道如何放置徽标。
    • 我会在我的答案中添加一些额外的行。
    • 直到今天我才知道是谁回复了我。很高兴收到您的来信。
    • 但如果我需要 A4、A3、A2、A1 的位置变化,还有一件事。有什么解决方案吗?
    • 您会注意到onEndPage() 接收到Document 参数。这与您在代码中创建的 Document 实例不同。相反,它是由PdfWriter 创建的内部PdfDocument 实例。您可以将此对象用于只读目的,例如获取页面大小。换句话说:您可以根据document.getPageSize() 获得的信息计算坐标。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-04
    相关资源
    最近更新 更多