创建一个小尺寸标签

时间:2014-09-29 11:09:40

标签: java itext

我需要使用iText制作一个只包含三行的小标签(1.75长和0.75高)。问题是每当我将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();

1 个答案:

答案 0 :(得分: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" line"是由Leading属性完成的。您可以直接在Paragraph的构造函数中设置它。下面我将其设置为与您的字体相同的大小。

Paragraph specimenInformation = new Paragraph(2);