Ho un sito Web in cui gli utenti caricano foto e creano fotolibri. Inoltre, possono aggiungere testo in posizioni assolute, rotazioni e allineamenti. Il testo può avere nuove linee.Ruota paragrafi o celle un numero arbitrario di gradi - Itext
Ho utilizzato la libreria di Itext per automatizzare la creazione dei Pdf di alta qualità dei fotolibri su cui sono stampati questi ultimi.
Aggiungere le immagini caricate dall'utente ai PDF è stato davvero semplice, il problema si presenta quando provo ad aggiungere il testo.
In teoria, ciò che dovrei fare è definire un paragrafo di larghezza e altezza definite, impostare il testo, il font, lo stile del carattere, l'allineamento (centro, sinistra, destra, giustificazione) e infine impostare il rotazione.
Per ciò che ho letto su Itext, è possibile creare un paragrafo per impostare le proprietà dell'utente e utilizzare un oggetto ColumnText per impostare la posizione assoluta, la larghezza e l'altezza. Tuttavia non è possibile impostare la rotazione di qualcosa di più grande della singola linea.
non posso usare celle sia, perché il metodo rotazione consentire solo gradi che sono multipli di 90.
C'è un modo per aggiungere un paragrafo con una certa rotazione (ad esempio 20 gradi) senza dover aggiungere il testo riga per riga usando il metodo ColumnText.showTextAligned()
e tutta la matematica che comporta?
---- Edit: 08-Ago-2013 ----
Se aiuta nessuno, questo è il codice che ho usato per risolvere questo problema (grazie a 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);
curato la questione con il codice che ho usato. – BernalCarlos