Во многих местах ваш код неверен.
- Вы комбинируете операции низкого уровня, такие как
restoreState()
/PdfCanvas
на aDocument
в сочетании с методом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
градусов.