2

iText 5.3.5 を使用して PDF ドキュメントを作成しています。現在、ドキュメントのすべてのページに長方形を作成しようとしていますが、これを行う方法がよくわかりません。コードの最後にこれを追加しようとしました(インターネットで見つけました):

PdfContentByte cb = writer.getDirectContent();
for (int pgCnt = 1; pgCnt <= writer.getPageNumber(); pgCnt++) {
    cb.saveState();
    cb.setColorStroke(new CMYKColor(1f, 0f, 0f, 0f));
    cb.setColorFill(new CMYKColor(1f, 0f, 0f, 0f));
    cb.rectangle(20,10,10,820);
    cb.fill();
    cb.restoreState();
}     

しかし、これは最後のページに四角形を追加するだけで、pgCntをどこにも使用していないため、意味があります。ページ番号 pgCnt に四角形が必要であることを指定して、すべてのページに四角形を追加できるようにするにはどうすればよいですか?

私が自分自身を説明したことを願っています。よろしくお願いします。:)

4

1 に答える 1

2

iText 公式サイトのキーワードページ イベントのエントリをご覧ください。PdfPageEventHelperクラスを拡張し、コードをonEndPage()メソッドに追加する必要があります。

public void onEndPage(PdfWriter writer, Document document) {
    PdfContentByte cb = writer.getDirectContent();
    cb.saveState();
    cb.setColorStroke(new CMYKColor(1f, 0f, 0f, 0f));
    cb.setColorFill(new CMYKColor(1f, 0f, 0f, 0f));
    cb.rectangle(20,10,10,820);
    cb.fill();
    cb.restoreState();
}

カスタム ページ イベント クラスのインスタンスを作成し、ドキュメントを開く前にライターに宣言します。

writer.setPageEvent(myPageEventInstance);

これで、既存のコンテンツの上に、すべてのページに長方形が描画されます。既存のコンテンツの下に長方形が必要な場合: に置き換えgetDirectContent()ますgetDirectContentUnder()

機能するソース コードが必要な場合は、Stationeryの例をご覧ください。今後は、ソースを言及せずに「インターネット上で」何かを見つけたと言うのではなく、iText の公式サイトを参照してください。

于 2013-05-20T09:38:54.200 に答える