PDFBox - это низкоуровневая библиотека для работы с PDF-файлами.Вы несете ответственность за более высокоуровневые функции.Таким образом, в этом примере вы размещаете свое изображение на (60, 60)
, начиная с левого нижнего угла документа.Это то, что делает stream.drawImage(img, 60, 60);
.
Если вы хотите переместить изображение в другое место, вам нужно рассчитать и указать требуемое местоположение (возможно, из измерений, полученных с помощью page.findCropBox()
, или вручную ввести ваше местоположение).
Что касается текста, элементы документа PDF абсолютно позиционированы.Нет никаких низкоуровневых возможностей для перетекания текста, плавающего или чего-то подобного.Если вы напишите свой текст поверх изображения, будет написано поверх вашего изображения.
Наконец, когда ваша страница станет белой - вы создаете новый поток контента ипоэтому перезаписываю оригинал для своей страницы.Вы должны добавить к уже доступному потоку.
Соответствующая строка:
PDPageContentStream stream = new PDPageContentStream( pdDoc, pages.get(0));
Что вы должны сделать, это назвать так:
PDPageContentStream stream = new PDPageContentStream( pdDoc, pages.get(0), true, true);
Первый true
- это ли добавить содержимое , и окончательный true
(здесь не критично): сжимать поток.
Взгляните на AddImageToPDF образец, доступный из Исходники PDFBox .