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 官方网站上关键字Page events的条目。您需要扩展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().

如果您需要一些工作源代码,请查看文具示例。以后请咨询 iText 官方网站,而不是说您在“互联网上”找到了一些东西而没有提及来源。

于 2013-05-20T09:38:54.200 回答