当我尝试从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
答案 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);
}
}
}