У меня есть веб-сайт, на котором пользователи загружают фотографии и создают фотокниги. Кроме того, они могут добавлять текст в абсолютные позиции, вращения и выравнивания. Текст может иметь новые строки.
Я использую библиотеку Itext, чтобы автоматизировать создание высококачественных Pdf файлов Photobooks, которые печатаются последним.
Добавление загруженных пользователем изображений в файлы PDF было очень простым, проблема возникает, когда я пытаюсь добавить текст.
В теории, что мне нужно будет сделать, нужно определить абзац определенной ширины и высоты, задать текст, шрифт, стиль шрифта, выравнивание (центр, левый, правый, выравнивание), и, наконец, установить поворот.
Для того, что я прочитал об Itext, я мог бы создать абзац, задающий свойства пользователя, и использовать объект ColumnText для установки абсолютного положения, ширины и высоты. Однако не возможно установить вращение ничего большего, чем одиночная.
Я не могу использовать ячейки таблицы, потому что метод вращения допускает только градусы, кратные 90.
Есть ли способ добавить абзац с некоторым вращением (например, 20 градусов) без необходимости добавлять текст по строкам с помощью метода ColumnText.showTextAligned()
и всей математики, которая включает?
---- Редактировать: 08-Ago-2013 ----
Если это кому-то помогает, это код, который я использовал для решения этой проблемы (спасибо Бруно):
//Create the template that will contain the text
PdfContentByte canvas = pdfWriter.getDirectContent();
PdfTemplate textTemplate = canvas.createTemplate(imgWidth, imgHeight); //The width and height of the text to be inserted
ColumnText columnText = new ColumnText(textTemplate);
columnText.setSimpleColumn(0, 0, imgWidth, imgHeight);
columnText.addElement(paragraph);
columnText.go();
//Create de image wraper for the template
Image textImg = Image.getInstance(textTemplate);
//Asign the dimentions of the image, in this case, the text
textImg.setInterpolation(true);
textImg.scaleAbsolute(imgWidth, imgHeight);
textImg.setRotationDegrees((float) -textComp.getRotation()); //Arbitrary number of degress
textImg.setAbsolutePosition(imgXPos, imgYPos);
//Add the text to the pdf
pdfDocument.add(textImg);