我需要使用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();
答案 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);