iText - 导出PDF - 不平衡的开始结束文本操作符

时间:2012-06-12 10:44:03

标签: java pdf itext

有两种使用iText以编程方式创建PDF文件的方法:

  1. 使用ParagraphChunk等高级对象
  2. 使用低级功能。这是使用PdfContentByte类的圆顶。
  3. 第二种方式是在每次插入新数据之前和之后使用beginTextendText

    首先是否也需要这样做?它使用beginTextendText吗?

    我正在使用第一种方式,而且我得到了一个不平衡的开始结束文本运算符异常。

    怎么可能?

2 个答案:

答案 0 :(得分:2)

分析

如果我们查看iText API:

  

PdfContentByte是一个包含用户定位文本的对象   和页面的图形内容。它知道如何应用正确的字体   编码。

     

Chunk是可以添加的文本中最重要的部分   到文件。大多数元素可以分为一个或多个块。一个   chunk是一个带有某个Font的String。所有其他布局参数   应该在添加了这块文本的对象中定义。

PdfContentByte和Chunk(Element)用于不同目的。它们没有任何共同点,也没有接口,也没有超类(不包括Object ofc)。

Q / A

  

第一个为什么也这样做?

它使用begin开始写入文本并结束完成文本的写入并使当前字体无效。

  

是否使用beginText和endText?

不,像Chunk和Paragraph这样的元素不使用begin和end。它使用StringBuffer来保存其文本值。

  

为什么我得到'不平衡开始结束文本操作符'异常?

如果你看一下PdfContentByte's beginText() and endText() sources,你会看到,如果我们在尚未完成时尝试开始文本,或者在文本尚未开始时结束文本,我们将获得此异常。


确保在开始向其添加任何元素之前调用document.open(),在完成文档时调用document.close()。

答案 1 :(得分:0)

在iText中使用高级对象时,您无需担心beginText()endText()方法。看看这个Hello World example