当前位置: 首页 > 知识库问答 >
问题:

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

商俊智
2023-03-14

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

希望我能解释清楚。提前感谢你的帮助。:)

共有1个答案

程俊健
2023-03-14

请查看官方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();
}

创建自定义page事件类的实例,并在打开文档之前将其声明给writer:

writer.setPageEvent(myPageEventInstance);

现在您的矩形将绘制在每一页上,在现有内容的顶部。如果您想要现有内容下的矩形:将getDirectContent()替换为getDirectContentUnder()

如果您需要一些可用的源代码,请看一下文具示例。请在将来查询iText官方网站,而不是说你在“互联网上”发现了一些东西,而不提到来源。

 类似资料:
  • 问题内容: 如何使用iText在每个页面上添加总页数? 问题答案: 使用伪页面计数将输出从a 处理为第一个。 从中创建一个,调用以获取实际的页数。 重新创建PDF输出,知道页数是多少,并相应地更改页脚。 这很麻烦,但是如果没有两遍方法,就没有简单的方法来知道页数。有关处理PDF的详细信息,请参见示例代码。

  • 我正在使用iText(特别是iTextSharp 4.1.6),我想通过组合现有PDF中的页面来创建一个PDF,但也要插入从图像创建的新页面。 我已经分别使用PdfCopy和PdfWriter实现了这两个部分的工作。从图像创建页面的代码如下所示: 现在,由于PdfCopy继承自PdfWriter,我想我可以使用相同的技术将这样的“图像页面”添加到我的PdfCopy对象中,但这不起作用(如果在上面的

  • 问题内容: 我需要有关iText的帮助。我需要在其他现有的iText文档或PDF文档中添加现有的pdf封面。有人可以帮助我吗?我已经搜索了一些书籍(iText在使用中),但有些复杂。 问题答案: 假设我们有一个名为pages.pdf的文档,并且我们想添加封面hero.pdf作为本文档的封面。 方法1: 使用 看一下AddCover1示例: 结果是一个文档,在这里您首先有封面,然后是文档的其余部分:

  • 使用IEventHandler生成“Page X”部分似乎相当简单--我正在努力解决的是“Y”部分。我希望避免为了找出它有多少页而对整个文档生成两次,因为这将对性能产生重大影响! 我已经在iText5中找到了一个解决方案:Java中的PDF页码和iText,但是iText7是iText的完全重写,接口完全不同,到目前为止我还找不到任何类似的iText7示例。

  • 问题内容: 在我的pdf文件中,我需要有多个页眉和页脚。在页眉中,我希望标题标题位于左侧,而某些文本位于中心。 同样,在页脚中,我需要在左侧打印公司名称,在中心打印页码,并在右侧打印有关表格内容的一些信息。 我看过很多文章,但是我没有正确的想法来创建它,有人请帮助我提供一些示例代码片段。 问题答案: 页眉和页脚应使用“页面事件”添加。如果您需要一些示例,只需在官方网站上查找关键字header /

  • 问题内容: 我试图在没有LTV格式的已签名PDF文档中启用LTV。在所有情况下,我都找到了相同的示例,如链接中所述。如何为时间戳签名启用LTV,启用iText LTV-如何添加更多CRL?,它定义了获得预期结果的过程。碰巧我没有工作,它没有给我任何错误,但是我没有添加LTV。 为什么在执行以下代码时不会给我任何错误,但是我不添加LTV的一些想法。 这是我尝试添加LTV的方法: 我正在使用的版本: