【问题标题】:Itext 7 - Vertical watermark using textItext 7 - 使用文本的垂直水印
【发布时间】:2018-06-29 12:05:48
【问题描述】:

我一直在尝试使用 Itext 7 在 pdf 中添加水印。水印需要位于每页的左侧,并且应该是垂直的。如下图所示:

它应该在页面的左侧,而不是在中心。

我尝试了以下代码,但我尝试的任何角度都不适合我 -

File mergedDoc = new File(mergedFileName + ".pdf"); 
PdfDocument pdfDoc = new PdfDocument(new PdfWriter(mergedDoc));
Document document = new Document(pdfDoc);
PdfFont font = PdfFontFactory.createFont(FontProgramFactory.createFont(FontConstants.HELVETICA));
Paragraph verticalWatermark = new Paragraph("My vertical watermark").setFont(font).setFontSize(30);

for (int i = 1 + pdfDoc.getNumberOfPages(); i <= k; i++) {

      PdfPage page = pdfDoc.getPage(i);
      page.setIgnorePageRotationForContent(false);
      over = new PdfCanvas(pdfDoc.getPage(i));
      over.saveState();
      over.setExtGState(gs1);

      document.showTextAligned(verticalWatermark, 30f, 25f, i, TextAlignment.LEFT, VerticalAlignment.BOTTOM, 90);

      over.restoreState();
      pdfDoc.close();
      document.close();
}

任何帮助将不胜感激。

【问题讨论】:

  • 请附上图片。您写了如附图中所示的内容-“我的水印(带文本)”,但没有附加图像。另外:你的代码是从哪里得到的?
  • 图片隐藏在1后面。编辑您的问题以使图像内联,这样人们就不必关注外部链接。
  • 啊哈,谢谢@AmedeeVanGasse 我没有看到图片,但是在你解释它被隐藏之后,我不难让它可见。

标签: itext7


【解决方案1】:

你的代码在很多地方都是错误的。

我已经学习了 iText 7 Jump-Start Tutorial,并在页面左侧添加了垂直水印:

这是我使用的代码:

PdfReader reader = new PdfReader(src);
PdfWriter writer = new PdfWriter(dest);
PdfDocument pdf = new PdfDocument(reader, writer);
Document document = new Document(pdf);
Paragraph p = new Paragraph("My vertical watermark");
for (int i = 1; i <= pdf.getNumberOfPages(); i++) {
    document.showTextAligned(
        p, 36, 72, i, TextAlignment.LEFT, VerticalAlignment.BOTTOM,
        (float)Math.PI / 2);
}
document.close();

如您所见:不需要PdfCanvas,它是Math.PI / 2 弧度而不是90 度数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-25
    • 2011-11-25
    • 1970-01-01
    相关资源
    最近更新 更多