2014-09-29 333 views
0

我需要製作一個小標籤(1.75長和0.75高),只包含三行使用iText。問題是每當我將Chunk.NEWLINE添加到文檔中時,它就不會將我移動到下一行,而是將我移到下一頁。這是因爲頁面尺寸較小。創建一個小尺寸的標籤

我該如何限制我的所有文本在同一頁面上,但只在下一行?

Float width = 126.4725f; // 1.75 in 
Float height = 54.2025f; // 0.75 in 

Rectangle pageSize = new Rectangle(width, height); 
document = new Document(pageSize, 5f, 55f, 2f, 180f); 
specimenPDF = new File("specimenLabel_"+reqID); 
PdfWriter.getInstance(document, new FileOutputStream(specimenPDF)); 
document.open(); 
Paragraph specimenInformation = new Paragraph(); 
document.add(new Chunk(string1, FontFactory.getFont(FontFactory.HELVETICA, 2, Font.NORMAL, new BaseColor(new Color(0, 0, 0))))); 
document.add(Chunk.NEWLINE); 
document.add(new Chunk(string2, FontFactory.getFont(FontFactory.HELVETICA, 2, Font.NORMAL, new BaseColor(new Color(0, 0, 0))))); 
document.add(Chunk.NEWLINE); 
document.add(new Chunk(string3, FontFactory.getFont(FontFactory.HELVETICA, 2, Font.NORMAL, new BaseColor(new Color(0, 0, 0))))); 

specimenInformation.setAlignment(Element.ALIGN_TOP); 
document.add(specimenInformation); 
document.close(); 

回答

0

我看到幾個問題。

首先,你有一個單位高度爲54的單據,你希望iText使用其中的2個單位作爲頂部邊距,其中180個單位用於底部邊距,給出-128個水平單位單位。看起來你正在給座標而不是寬度,這正是iText所期待的。你會比我更清楚,但我想改變它的東西,如:

document = new Document(pageSize, 5f, 5f, 5f, 5f); 

其次,你已經有了一個Paragraph,但你不使用它,而不是被直接寫入到文檔中。其實我使用Paragraph建議:

Paragraph specimenInformation = new Paragraph(); 
specimenInformation.add(new Chunk(string1, FontFactory.getFont(FontFactory.HELVETICA, 2, Font.NORMAL, new BaseColor(new Color(0, 0, 0))))); 
specimenInformation.add(Chunk.NEWLINE); 
specimenInformation.add(new Chunk(string2, FontFactory.getFont(FontFactory.HELVETICA, 2, Font.NORMAL, new BaseColor(new Color(0, 0, 0))))); 
specimenInformation.add(Chunk.NEWLINE); 
specimenInformation.add(new Chunk(string3, FontFactory.getFont(FontFactory.HELVETICA, 2, Font.NORMAL, new BaseColor(new Color(0, 0, 0))))); 

最後,你需要告訴iText的高大的「線」是如何這是由Leading屬性來完成。你可以直接在Paragraph的構造函數中設置它。下面我將它設置爲與您的字體相同的大小。

Paragraph specimenInformation = new Paragraph(2);