itext 7-使用文本的垂直水印

时间:2018-06-29 12:05:48

标签: itext7

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

enter image description here

它应该位于页面左侧,而不是居中。

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

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 个答案:

答案 0 :(得分:0)

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

我已经完成了iText 7快速入门教程,并在页面左侧添加了垂直水印:

enter image description here

这是我使用的代码:

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度。