我们使用 iText Java 库为系统的传入消息生成 PDF。它使用表格来显示一些元数据和消息正文的段落。
现在,当我们将 pdf 的文本(在 Acrobat Reader 和 Firefox PDF 预览中)复制并粘贴到某个编辑器中时,元数据将粘贴在第一页上的文本之后。
我们的代码基本上是
final Document document = new Document(PageSize.A4, 50, 50, 50, 50);
final PdfWriter pdfWriter = PdfWriter.getInstance(document, baos);
pdfWriter.setPdfVersion(PdfWriter.VERSION_1_2);
document.open();
final PdfPTable table = new PdfPTable(1);
table.setWidthPercentage(100);
table.addCell(newCell("New Message", true, FONT_SIZE_1, CELL_PADDING_1));
document.add(table);
document.add(new Paragraph(content, FontFactory.getFont(FontFactory.HELVETICA, 10)));
document.close();
pdfWriter.close();
和
private static PdfPCell newCell(final String text) {
final PdfPCell cell = new PdfPCell(
new Phrase(new Chunk(text, FontFactory.getFont(FontFactory.HELVETICA, 30))));
cell.setPaddingTop(cellPadding);
cell.setPaddingRight(0);
cell.setPaddingBottom(8);
cell.setPaddingLeft(0);
cell.setBorder(Rectangle.NO_BORDER);
return cell;
}
您也可以看到当您从第 1 页和第 2 页中选择文本时,突然也选择了第 1 页的顶部。看这个截图:
通过复制和粘贴,您可以获得
amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam
erat.
New Message
Message
Message-No. 12345
Label A Value X
Label B Value Y
Inhalt
Consetetur sadipscing
您也可以使用此 PDF 对其进行测试:http: //epischel.de/misc/testmessage.pdf