如何通过pdfcontentbyte在最后一页添加文字?
How to add text on the last page through pdfcontentbyte?
我正在使用 iTextSharp 创建一个 PDF 文档,它包含一个跨多个页面的 table。添加 table 后,我的 PDF 文档有 3 页。
现在我要做的是:
- 通过 Pdfcontentbyte 在最后一页添加一些文本。
rahlrokks 发布的问题最初与 How to add text to an image? 完全相同,但是:
- rahlrokks 不明白这个答案。
- 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,但你不应该说 它不起作用 在很容易证明 它确实起作用的情况下.
我正在使用 iTextSharp 创建一个 PDF 文档,它包含一个跨多个页面的 table。添加 table 后,我的 PDF 文档有 3 页。
现在我要做的是:
- 通过 Pdfcontentbyte 在最后一页添加一些文本。
rahlrokks 发布的问题最初与 How to add text to an image? 完全相同,但是:
- rahlrokks 不明白这个答案。
- 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,但你不应该说 它不起作用 在很容易证明 它确实起作用的情况下.