com.itextpdf.text.exceptions.IllegalPdfSyntaxException:不平衡的保存/恢复状态运算符

时间:2015-01-06 07:05:02

标签: java itext

当我尝试从j2e Web应用程序生成PDF时,我得到了com.itextpdf.text.exceptions.IllegalPdfSyntaxException:非平衡保存/恢复状态运算符异常。

我正在使用PdfGraphics2D对象来绘制文本和形状,因为它与其他swing应用程序同步。

任何人都可以伸出援助之手。我无法向前推进,因为它工作了一段时间有时它会抛出异常,可能是什么原因?

我正在使用itextpdf-5.2.1.jar。请告诉我您需要任何信息。

我在PdfGraphics2D对象中查看了dispose方法的源代码,如下所示

 /**
 * @see Graphics#dispose()
 */
@Override
public void dispose() {
    if (kid)
        return;
    if (!disposeCalled) {
        disposeCalled = true;
        cb.restoreState();
        cb.restoreState();
        if (dg2 != null) {
            dg2.dispose();
            dg2 = null;
        }
        if (kids != null) {
            ByteBuffer buf = new ByteBuffer();
            internalDispose(buf);
            ByteBuffer buf2 = cb.getInternalBuffer();
            buf2.reset();
            buf2.append(buf);
        }
    }
}

为什么cb.restoreState();方法调用了两次。

如果有任何人知道这件事,请直接告诉我或直接向我解决问题。

由于 Dhorrairaajj

1 个答案:

答案 0 :(得分:0)

@覆盖 public void dispose(){

if (kid)
    return;
if (!disposeCalled) {
    disposeCalled = true;
    //you are calling restoreState() twice. check it
    cb.restoreState();
    cb.restoreState();
    if (dg2 != null) {
        dg2.dispose();
        dg2 = null;
    }
    if (kids != null) {
        ByteBuffer buf = new ByteBuffer();
        internalDispose(buf);
        ByteBuffer buf2 = cb.getInternalBuffer();
        buf2.reset();
        buf2.append(buf);
    }
 }

}