1

我们使用 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

4

0 回答 0