gpt4 book ai didi

java - 如何使用 iText 在文档的每一页上添加矩形?

转载 作者:行者123 更新时间:2023-11-30 09:22:05 25 4
gpt4 key购买 nike

我正在使用 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 上的矩形,以便我可以在每一页上添加矩形?

希望我解释清楚了。在此先感谢您的帮助。 :)

最佳答案

请查看关键字 Page events 的条目在官方 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 站点,而不是说你在“互联网上”找到了一些东西而不提及来源。

关于java - 如何使用 iText 在文档的每一页上添加矩形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16638406/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com