使用iText进行PDF生成:在页面顶部使用表格并复制和粘贴文本,表格中的文本最后生成

时间:2014-09-25 11:59:04

标签: pdf pdf-generation itext pdfptable

我们使用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页的顶部。请参阅此屏幕截图:screenshot

复制&粘贴你得到

 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

0 个答案:

没有答案