Mam stronę internetową, na której użytkownicy przesyłają zdjęcia i tworzą fotoksiążki. Ponadto mogą dodawać tekst w absolutnych pozycjach, obrotach i wyrównaniach. Tekst może mieć nowe linie.Obracaj akapity lub komórki dowolną liczbą stopni - Itext
Używam biblioteki Itext do automatyzacji tworzenia plików PDF o wysokiej jakości, które są drukowane później.
Dodanie użytkownika do grafik przesłanych przez użytkownika było naprawdę proste, problem pojawia się, gdy próbuję dodać tekst.
Teoretycznie potrzebowałbym zdefiniować akapit o określonej szerokości i wysokości, ustawić tekst użytkownika, czcionkę, styl czcionki, wyrównanie (środek, lewo, prawo, uzasadnienie) i wreszcie ustawić obrót.
Z tego, co przeczytałem o Itext, mógłbym utworzyć paragraf ustawiający właściwości użytkownika i użyć obiektu ColumnText do ustawienia bezwzględnej pozycji, szerokości i wysokości. Jednak nie jest możliwe ustawienie rotacji czegoś większego niż pojedyncza linia.
Nie mogę korzystać z komórki tabeli albo, ponieważ metoda rotacja umożliwiają tylko stopnie, które są wielokrotnością 90.
Czy istnieje sposób, aby dodać paragraf z jakiegoś obrotu (powiedzmy 20 stopni), bez konieczności dodawania tekst linia po linii przy użyciu metody ColumnText.showTextAligned()
i całej matematyki, która obejmuje?
---- Edit: 08-Ago-2013 ----
Jeśli to pomoże każdemu, jest to kod użyłem do rozwiązania tego problemu (dzięki Bruno):
//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);
Zmieniano pytanie z kodem i używanych. – BernalCarlos