2013-01-17 28 views
15

Sto usando itext per generare il file pdf. Voglio allineare il mio titolo al centro della pagina. Attualmente sto usando in questo modoAllineare il paragrafo al centro della pagina

Paragraph preface = new Paragraph(); 
for (int i = 0; i < 10; i++) { 
    preface.add(new Paragraph(" ")); 
} 

È corretto o c'è un altro modo migliore per farlo.

risposta

51

Uso Paragraph#setAlignment(int):

Paragraph preface = new Paragraph(); 
preface.setAlignment(Element.ALIGN_CENTER); 

Vedi le ALIGN_* costanti nell'interfaccia Element per i valori più possibili.

+0

apprezzato la semplicità –

3

Se qualcuno cerca la versione .NET/C#, di seguito è come ho raggiunto l'allineamento CENTER.

Sto usando biblioteca iText7 per NET/C#, e ho raggiunto questo utilizzando:

Paragraph preface = new Paragraph(); 
preface.SetTextAlignment(iText.Layout.Properties.TextAlignment.CENTER); 
0

final String public static dest = "risultati/tavoli/centered_text.pdf";

public static void main(String[] args) throws IOException, DocumentException { 
    File file = new File(DEST); 
    file.getParentFile().mkdirs(); 
    new CenteredTextInCell().createPdf(DEST); 
} 

public void createPdf(String dest) throws IOException, DocumentException { 
    Document document = new Document(); 
    PdfWriter.getInstance(document, new FileOutputStream(dest)); 
    document.open(); 
    Font font = new Font(FontFamily.HELVETICA, 12, Font.BOLD); 
    Paragraph para = new Paragraph("Test", font); 
    para.setLeading(0, 1); 
    PdfPTable table = new PdfPTable(1); 
    table.setWidthPercentage(100); 
    PdfPCell cell = new PdfPCell(); 
    cell.setMinimumHeight(50); 
    cell.setVerticalAlignment(Element.ALIGN_MIDDLE); 
    cell.addElement(para); 
    table.addCell(cell); 
    document.add(table); 
    document.close(); 
} 
+0

Qual è il vantaggio della soluzione rispetto alla soluzione molto più semplice nella risposta accettata? – mkl

+0

* "La seguente riga non ha molto senso:' p1.setAlignment (Element.TABLE) '" * - Non vedo quel codice da nessuna parte qui, né nella domanda né in nessuna risposta. – mkl

+0

stai usando una versione di iText che è davvero molto vecchia. La seguente riga non ha molto senso: preface.setAlignment (Element.ALIGN_CENTER); quindi usa questo metodo al di sopra della vecchia versione di itext cell.setVerticalAlignment (Element.ALIGN_MIDDLE); questo metodo molto più veloce e migliore –

0

Non sicuro se questa è una versione precedente, ma per PdfWriter questi metodi non erano presenti. Invece ho usato:

Paragraph p = new Paragraph("This too shall pass"); 
    p.Alignment = Element.ALIGN_CENTER; 
Problemi correlati