Распечатать подстроку маленьким шрифтом в формате PDF
Я использую приведенный ниже код для печати строки в формате PDF, которая дает мне выход из строки того же размера, я хочу сделать последние две строки с разным размером шрифта. Как я могу это сделать?
PdfContentByte cb = writer.getDirectContent();
String stl = "", stl1 = (String) request.getParameter("x0");// (String)val.get(0);
int ln = stl1.length();
String new1 ="" ;
if (ln > 1)
{
for (int ii = 0; ii < ln - 2; ii++)
stl = stl + stl1.charAt(ii);
stl = stl + " . ";
stl1 = stl1.substring(ln - 2, ln);
new1 = stl + stl1;
//stl1 = stl + stl1;
}
cb.setFontAndSize(bf, 18);
cb.setTextRenderingMode(2);
//cb.showTextAligned(PdfContentByte.ALIGN_LEFT, stl1, 20 + x, 663 + y, 0);
cb.showTextAligned(PdfContentByte.ALIGN_LEFT, new1, 20 + x, 663 + y, 0);
Желаемый результат:
2 ответа
Лучший способ сделать это - напечатать отдельную строку после первой, которая содержит последние 2 цифры.
Пример кода:
1) Заменить String new1 ="" ;
с этим:
String textLarge ="" ;
String textSmall ="" ;
2) Заменить new1 = stl + stl1;
со следующим:
textLarge = stl;
textSmall = stl1;
3) Измените код, чтобы печатать большой и маленький текст отдельно
cb.setFontAndSize(bf, 18);
cb.showTextAligned(PdfContentByte.ALIGN_LEFT, textLarge, 20 + x, 663 + y, 0);
cb.setFontAndSize(bf, 14);
cb.showTextAligned(PdfContentByte.ALIGN_LEFT, textSmall, 20 + ? + x, 663 + y, 0);
Заменить "?" в строке выше с напечатанной шириной большого текста. Похоже, вы используете itext, поэтому вы можете использовать либо:BaseFont.getWidthPoint(String text, float fontSize)
чтобы получить ширину строки в пт. Или положить строку в чанк и сделать chunk.getWidthPoint()
Предыдущий ответ правильный, но есть и альтернативный способ сделать это. Если вы хотите расположить текст по абсолютной координате, вы также можете использовать класс ColumnText. Например: вы можете использовать статический метод showTextAligned(), который похож на тот, который вы использовали до сих пор. Преимущество метода ColumnText заключается в том, что он принимает объекты Phrase. Объект Phrase может состоять из разных объектов Chunk, и каждый Chunk может использовать свой шрифт разного размера. Пример, демонстрирующий предыдущий ответ, а также этот, см. По http://itextpdf.com/examples/iia.php?id=62