Itext 7 - Вертикальный водяной знак с использованием текста

Я пытаюсь добавить watermarFile mergedDoc = новый файл (mergedFileName + ".pdf"); PdfDocument pdfDoc = новый PdfDocument (новый PdfWriter (mergedDoc)); Документ document = новый Документ (pdfDoc); PdfFont font = PdfFontFactory.createFont (FontProgramFactory.createFont (FontConstants.HELVETICA)); Параграф verticalWatermark = новый Параграф («Мой вертикальный водяной знак»). SetFont (font) .setFontSize (30); for (int i = 1 + pdfDoc.getNumberOfPages (); i <= k; i ++) {PdfPage page = pdfDoc.getPage (i); page.setIgnorePageRotationForContent (ложь); 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 (); } в pdf с использованием Itext 7. Водяной знак должен находиться в левой части каждой страницы и должен быть вертикальным. Что-то вроде показанного на следующем изображении:

введите описание изображения здесь

Вместо того, чтобы находиться в центре, это должно быть в левой части страницы.

Я попробовал следующий код, но любой угол, который я пробовал, не работает для меня -

saveState()

Любая помощь будет оценена по достоинству.

itext7,

0

Ответов: 1


0

Во многих местах ваш код неверен.

  • Вы комбинируете операции низкого уровня, такие как restoreState()/ PdfCanvasна a Documentв сочетании с методом showTextAligned()класса высокого уровня 1 + pdfDoc.getNumberOfPages().
  • Вы начинаете считать, kчто это странно. Ваш образец кода не является SSCCE . Никто, кроме вас, не может запускать его, потому что никто, кроме вас, не знает, какие переменные такие kи gs1существуют. Не предоставление SSCCE часто интерпретируется как «Я задаю вопрос, но я не заинтересован в получении ответа».
  • Вы определяете значение в градусах, где ожидается значение в радианах, см. API docs: showTextAligned (Paragraph p, float x, float y, int pageNumber, TextAlignment textAlign, VerticalAlignment vertAlign, float radAngle)

Я взял учебник Jump-Start iText 7, и я добавил вертикальный водяной знак слева от страницы:

введите описание изображения здесь

Это был код, который я использовал:

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();

Как вы можете видеть: нет необходимости в a, PdfCanvasа это Math.PI / 2радианы вместо 90градусов.

itext7,
Похожие вопросы
Яндекс.Метрика