2013-01-17 93 views
15

我正在使用itext生成pdf文件。我想在頁面中間對齊我的標題。目前我正在使用像這樣在頁面中央對齊段落

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

這是正確的還是有任何其他最佳的方式來做到這一點。

回答

51

使用Paragraph#setAlignment(int)

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

看到Element接口ALIGN_*常數更可能的值。

+0

喜歡簡單 –

3

如果有人正在尋找.NET/C#版本,下面是我如何實現CENTER對齊。

我使用iText7庫.NET/C#和我這個使用來實現:

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

公共靜態最後絃樂DEST = 「結果/表/ 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

相比,在接受的答案更簡單的解決方案是什麼您的解決方案的優勢在哪裏? – mkl

+0

*「下面一行沒有任何意義:'p1.setAlignment(Element.TABLE)'」* - 我在這裏的任何地方都看不到該代碼,無論是在問題中還是在任何答案中。 – mkl

+0

您使用的是真正非常舊的iText版本。以下代碼行並沒有意義:preface.setAlignment(Element.ALIGN_CENTER);所以使用這種方法,而不是舊的迭代版本cell.setVerticalAlignment(Element.ALIGN_MIDDLE);這種方法更快更好 –

0

不知道這是一個老的版本,但對於PdfWriter這些方法都沒有了。相反,我用:

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