com.itextpdf.text.exceptions.IllegalPdfSyntaxException:不平衡的开始/结束文本运算符

时间:2015-01-08 08:09:18

标签: java itextsharp itext

使用PdfContentByte在iText中解决这个问题。当我尝试创建新页面时,我正在使用下面的代码 -

           canvas = writer.getDirectContent();
           canvas.saveState();


           canvas.stroke();
           canvas.restoreState();
         ...
            canvas.endText();
            itextDocument.newPage();

            setUpperFontAndSize(canvas);
            canvas.beginText();

问题发生在调用endText()时。它有什么解决方案吗?

2 个答案:

答案 0 :(得分:3)

OP说

  

问题发生在调用endText()

根据该方法的源代码,相关例外表明之前没有匹配的beginText()调用。

  
    

文本对象以 BT 运算符开头,以 ET 运算符结束,如示例所示,并在表107中进行了描述。

         

实施例

BT
…Zero or more text operators or other allowed operators…
ET
         

...文本对象不能静态嵌套......

  

答案 1 :(得分:2)

您的代码段不完整。我们看到您使用:

canvas.endText();

因此,该陈述是非法的,您获得例外是正常的,因为您在第一次使用后只能使用endText()

canvas.beginText();

在您的代码段中,我们只有在触发beginText()后才会看到endText()

另请注意,BT / ET文本对象(您在引入beginText() / endText()序列时创建的对象)"生活&# 34;在页面上。文本对象不能跨越"多页。

例如,这将是非法的:

canvas.beginText();
// do stuff
document.newPage();
canvas.endText();

BT / ET对应出现在同一页面上:

canvas.beginText();
// do stuff
canvas.endText();
document.newPage();