【问题标题】:Double space not being preserved in PDFPDF中未保留双倍空格
【发布时间】:2016-02-29 12:07:45
【问题描述】:

我正在使用 lowagie.text.pdf 库从我的 java 应用程序中创建一个 PDF 文档,但是我已经意识到其中包含双倍空格的字符串,即“双倍空格”没有被保留。这是一个 . PDF 限制还是我忽略了其他内容?

Font font = FontFactory.getFont(FontFactory.HELVETICA, 8);
float[] columnWidths = new float[columnCount];

PdfPCell headerCell = new PdfPCell(new Phrase(gridColumn.getCaption(), font));

PdfPTable table = new PdfPTable(columnWidths);
table.getDefaultCell().setBorderWidth(0.5f);
table.getDefaultCell().setBorderColor(Color.LIGHT_GRAY);
table.setHeaderRows(1);

for (PdfPCell headerCell : headerCells) {
    table.addCell(headerCell);
}

String value = "DOUBLE  SPACED";

table.addCell(new Phrase(value, font));

Document pdfDocument = new Document(PageSize.A4.rotate(), 0, 0, 0, 0);
ByteArrayOutputStream pdfStream = new ByteArrayOutputStream();
PdfWriter.getInstance(pdfDocument, pdfStream);
pdfDocument.addTitle(caption);
pdfDocument.open();
pdfDocument.add(table);
pdfDocument.close();'

谢谢。

【问题讨论】:

  • 1.向我们展示您的代码。 2.我要说com.lowagie(最高2.1.7)已经过时了,你应该使用com.itextpdf(5.0.0及更高-目前5.5.8,5.5.9将在3月发布)。跨度>
  • 请将您的代码添加到问题中。 cmets 中的格式混乱。
  • 嗨,Amedee,我已经稍微重构了它!但我希望以上内容能让您对我要完成的工作有一个模糊的认识。

标签: java pdf pdf-generation


【解决方案1】:

我意识到其中包含双倍间距的字符串,即“DOUBLE SPACE”不会被保留

这取决于您的意思是保留

我对您的示例进行了一些扩展,以打印单个空格、双空格和三空格

table.addCell(new Phrase("SINGLE SPACED", new Font(BaseFont.createFont(), 36)));
table.addCell(new Phrase("DOUBLE  SPACED", new Font(BaseFont.createFont(), 36)));
table.addCell(new Phrase("TRIPLE   SPACED", new Font(BaseFont.createFont(), 36)));

并将使用的类更新为当前的 iText 5.5.x 变体。

如果您查看生成的 PDF 内部说明,您会看到

(SINGLE SPACED) Tj
...
(DOUBLE  SPACED) Tj
...
(TRIPLE   SPACED) Tj

因此,iText 确实保留了空格。

视觉效果:

正如您所见,差距越来越大。因此,在 PDF 的可视化表示中保留了双空格和三空格!


另一方面,如果您使用 Adob​​e Reader 进行复制和粘贴,您会得到:

SINGLE SPACED
DOUBLE SPACED
TRIPLE SPACED

因此,当前的 Adob​​e Reader不会复制和粘贴 PDF 中的空格字符,而是将多个字符折叠成一个字符。

所以:

这是 .PDF 限制吗

这既不是 PDF 限制也不是 iText 限制,它是 Adob​​e Reader(以及其他一些 PDF 查看器)的一个怪癖。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多