我得到的com.itextpdf.text.exceptions.IllegalPdfSyntaxException:
不平衡保存/恢復狀態運營商異常時,我試圖從j2e Web應用程序生成PDF。com.itextpdf.text.exceptions.IllegalPdfSyntaxException:不平衡保存/恢復狀態運算符
我使用PdfGraphics2D
對象來繪製文字和形狀,因爲與其他應用程序同步。
任何人都可以舉手解決這個問題。我無法前進,因爲它是工作了一些時間和某些時候它拋出異常,可能是什麼原因?我正在使用itextpdf-5.2.1.jar
。請讓我知道你需要任何信息。
我看看Dispose方法的PdfGraphics2D源代碼,對象是如下
/**
* @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
你爲什麼打電話cb.restoreState();方法兩次。 –
這是一個關於「平衡」調用一對方法的錯誤。您需要考慮更多的代碼,可能會覆蓋對象'cb'的整個生命週期。 – Persixty
*爲什麼'cb.restoreState();'方法調用兩次。* - 查看參數化的'PdfGraphics2D'構造函數,它們調用'cb.saveState()'兩次。因此,'dispose()'也必須調用'cb.restoreState()'兩次。 – mkl