Делал проставление печати в pdf-файле и столкнулся с проблемой, что если добавить в ячейку текст, который явно не помещается в своей строке, то он вытесняет нижние строки, если ли же указать cell.setNoWrap(true)
- тогда некоторая часть строк в ячейке попросту не отображается, хотя там в этой строке полно места. Задача была просто не переносить большой текст на следующую строку, обрезать. Думал поможет setNoWrap()
.
Примерный код:
PdfPTable table = new com.lowagie.text.pdf.PdfPTable(1);
table.setTotalWidth(stampWidthInPoint);
table.setWidthPercentage(100f);
PdfPCell cell = new com.lowagie.text.pdf.PdfPCell();
cell.setPadding(0f);
cell.setMinimumHeight(stampHeightInPoint);
cell.setFixedHeight(stampHeightInPoint);
Paragraph paragraph1 = new com.lowagie.text.Paragraph("text", redFont);
paragraph1.setLeading(leading);
paragraph1.setAlignment(com.lowagie.text.Element.ALIGN_CENTER);
cell.addElement(paragraph1);
cell.setNoWrap(true);
table.addCell(cell);
columnText.addElement(table);
columnText.go();
Должно помочь
public class TruncateContent implements PdfPCellEvent {
protected String content;
public TruncateContent(String content) {
this.content = content;
}
public void cellLayout(PdfPCell cell, Rectangle position,
PdfContentByte[] canvases) {
try {
BaseFont bf = BaseFont.createFont();
Font font = new Font(bf, 12);
float availableWidth = position.getWidth();
int contentLength = content.length();
int leftChar = 0;
int rightChar = contentLength - 1;
availableWidth -= bf.getWidthPoint("...", 12);
while (leftChar < contentLength && rightChar != leftChar) {
availableWidth -= bf.getWidthPoint(content.charAt(leftChar), 12);
if (availableWidth > 0)
leftChar++;
else
break;
availableWidth -= bf.getWidthPoint(content.charAt(rightChar), 12);
if (availableWidth > 0)
rightChar--;
else
break;
}
String newContent = content.substring(0, leftChar) + "..." + content.substring(rightChar);
PdfContentByte canvas = canvases[PdfPTable.TEXTCANVAS];
ColumnText ct = new ColumnText(canvas);
ct.setSimpleColumn(position);
ct.addElement(new Paragraph(newContent, font));
ct.go();
} catch (DocumentException e) {
throw new ExceptionConverter(e);
} catch (IOException e) {
throw new ExceptionConverter(e);
}
}
}
Источник
Виртуальный выделенный сервер (VDS) становится отличным выбором
На данный вопрос уже ответили:
Почему-то MealRepository repository подчёркнут красным жалуется на то что нет имплементации, а если её добавить то нечего не меняется
есть потребность в написание, некоторых математических примитивов, наподобие векторов и матриц