2014-09-29 9 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); 
Смежные вопросы