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

时间:2015-02-14 12:08:17

标签: c# pdf-generation itextsharp

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

现在我想做的是:

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

1 个答案:

答案 0 :(得分:0)

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

  1. rahlrokks没有理解这个答案。
  2. rahlrokks以一种相当奇怪的方式改变了他的问题。
  3. 这迫使我创建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声称这不起作用。很容易证明rahlrokk没有告诉我们真相。如果我们查看watermark3.pdf,我们会清楚地看到我们位于最后一页(2/2),我们会在图片顶部看到文字。

    enter image description here

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

    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在最后一页添加文字:

    enter image description here

    我很抱歉rahlrokks,但你不应该说它不起作用如果它很容易证明它确实起作用< / em>的