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 ファイルに 1 回だけ存在します。

于 2013-09-17T09:44:27.807 に答える