使用 iText 获得您想要的东西并不容易,但这可能是一种可行的方法。您可以创建一个 1 行 3 列的表格,并将您的文本放在中间列中,并带有ALIGN_LEFT
. 此解决方案的唯一问题是 iText 中的列宽必须手动设置,因此您必须在运行时计算中间单元格所需的宽度以获得所需的输出。
这里有一个例子:
String[] rows = {"line 1", "line 222222222222222222", "line 3", "line 4 QWERTOPASDFVBNM"};
Document document = new Document();
PdfWriter.getInstance(document, new FileOutputStream("C:/SimplePDF.pdf"));
document.open();
document.newPage();
// Creating PdfPTable with 3 cell [Empty][Your Test][Empty]
PdfPTable table = new PdfPTable(3);
PdfPCell fake = new PdfPCell();
fake.setBorder(Rectangle.NO_BORDER); // Hiding Border
table.addCell(fake);
// Creating middle cell
PdfPCell c = new PdfPCell();
c.setHorizontalAlignment(Element.ALIGN_LEFT);
c.setBorder(Rectangle.NO_BORDER);
// Adding strings to the middle cell
for (String string : rows) {
c.addElement(new Paragraph(string));
}
table.addCell(c);
table.addCell(fake);
// Setting manually column widths
// Depending on String length added before, you should get the
// max length string and compute the width for the middle cell,
// then the others 2 are just (100% - middle_cell_width)/2
float[] columnWidths = {30f, 40f, 30f};
table.setWidths(columnWidths);
document.add(table);
document.close();
这里将如何显示: