如何通过pdfcontentbyte在最后一页添加文字?

How to add text on the last page through pdfcontentbyte?

我正在使用 iTextSharp 创建一个 PDF 文档,它包含一个跨多个页面的 table。添加 table 后,我的 PDF 文档有 3 页。

现在我要做的是:

  1. 通过 Pdfcontentbyte 在最后一页添加一些文本。

rahlrokks 发布的问题最初与 How to add text to an image? 完全相同,但是:

  1. rahlrokks 不明白这个答案。
  2. rahlrokks 以一种相当奇怪的方式改变了他的问题。

这迫使我创建 WatermarkedImages3 示例。

它使用了我对How to add text to an image?

的回答中提到的方法
public Image getWatermarkedImage(PdfContentByte cb, Image img, String watermark) throws DocumentException {
    float width = img.getScaledWidth();
    float height = img.getScaledHeight();
    PdfTemplate template = cb.createTemplate(width, height);
    template.addImage(img, width, 0, 0, height, 0, 0);
    ColumnText.showTextAligned(template, Element.ALIGN_CENTER,
            new Phrase(watermark, FONT), width / 2, height / 2, 30);
    return Image.getInstance(template);
}

Rahlrokks 声称这不起作用。很容易证明 rahlrokks 没有告诉我们真相。如果我们查看 watermark3.pdf,我们会清楚地看到我们在最后一页(第 2 页,共 2 页),并且我们会看到在图像顶部添加的文本。

如果你看我的代码,你甚至可以看到我什至回答了他更新的问题:

public void createPdf(String dest) throws IOException, DocumentException {
    Document document = new Document();
    PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(dest));
    document.open();
    PdfPTable table = new PdfPTable(1);
    for (int i = 0; i < 50; i++) {
        table.addCell("rahlrokks doesn't listen to what people tell him");
    }
    PdfContentByte cb = writer.getDirectContentUnder();
    table.addCell(getWatermarkedImage(cb, Image.getInstance(IMAGE1), "Bruno"));
    document.add(table);
    ColumnText.showTextAligned(cb, Element.ALIGN_CENTER, new Phrase("Bruno knows best"), 260, 400, 45);
    document.close();
}

我不仅在图片上添加文字,还在最后一页添加文字 PdfContentByte:

对不起 rahlrokks,但你不应该说 它不起作用 在很容易证明 它确实起作用的情况下.