Я работаю над проектом, где в качестве части инструкций мне нужно прикрепить произвольные файлы PDF. Эти файлы PDF должны быть отмечены нумерацией заголовков и страниц в правом верхнем углу файла PDF. Это юридическое требование, так как эти приложения упоминаются по их названию и общему количеству страниц из заявлений.Добавление текста в верхнем правом углу PDF с помощью ColumnText работает для Portrait, а не для ландшафта
Я (наивно) взломал код, который, кажется, работает с файлами PDF со страницами в портретной ориентации (по крайней мере, файлы PDF, с которыми я тестировал). Однако, когда я использую этот код на страницах в альбомной ориентации, заголовок и нумерация не отображаются.
Код:
PdfContentByte canvas = pdfStamper.getOverContent(pageNr);
Phrase phrase = new Phrase(sb.toString(), new Font(FontFamily.HELVETICA, 9f)); // sb holds title + page numbering
float width = ColumnText.getWidth(phrase);
ColumnText.showTextAligned (// draw text top-right
canvas,
Element.ALIGN_LEFT,
phrase,
canvas.getPdfDocument().right() - width, //x
canvas.getPdfDocument().top() + 9, //y
0 //rotation
);
Примеры:
- Портрет, где это, кажется, работает:
- пейзаж, где она не работает:
Вопросы:
- Где я ж Ронг?
- Можно ли написать такой фрагмент кода, который делает это правильно для всех возможных ориентаций страниц?
- Если да, то как?
Спасибо за ваши идеи Бруно. Я решил проблему, используя 'pdfReader.getPageSizeWithRotation (pageNr)' в качестве основы для размещения названия/нумерации. –