2015-12-30 46 views
0

我們有一個應用程序,它可以很好地工作。 現在我們在分裂應用 在這個過程中,我得到一個錯誤,說明事情的過程,在這裏如下圖所示... 這只是發生在d.close()的地方iText在執行document.Close時發生問題...不平衡保存恢復狀態操作員

Document d = new Document(PageSize.A4, 10, 10, 50, 50); 
...... 
..... 
finally{ 
      if(d.isOpen()) { 
       d.close(); 
      } 
      byteOutputStream.flush(); 
      byteOutputStream.close(); 
      pw.close(); 
      return byteOutputStream.toByteArray(); 
     } 

(作爲一個整體整個申請被精細加工) (iText2.1.7罐時)

at com.ibm.CORBA.iiop.UtilDelegateImpl.mapSystemException(UtilDelegateImpl.java:241) 
at javax.rmi.CORBA.Util.mapSystemException(Util.java:84) 
at <<stub path>>.retrieve(_fileName1Remote_Stub.java:1) 
at <<filePath>>.retrieve(fileName2.java:778) 
at <<filePath>>.onCustomAction1(fileName3.java:403) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37) 
at java.lang.reflect.Method.invoke(Method.java:611) 
at org.apache.el.parser.AstValue.invoke(AstValue.java:266) 
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:278) 
at org.apache.myfaces.view.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:83) 
at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:83) 
... 43 more 

引起:com.itextpdf.text.exceptions.IllegalPdfSyntaxException:非平衡保存/恢復狀態操作符。 at com.itextpdf.text.pdf.PdfContentByte.sanityCheck(PdfContentByte.java:3171) at com.itextpdf.text.pdf.PdfContentByte.toPdf(PdfContentByte.java:245) at com.itextpdf.text.pdf。 PdfFormXObject。(PdfFormXObject.java:88) 在com.itextpdf.text.pdf.PdfTemplate.getFormXObject(PdfTemplate.java:241) 在com.itextpdf.text.pdf.PdfWriter.addSharedObjectsToBody(PdfWriter.java:1257) at com.itextpdf.text.pdf.PdfWriter.close(PdfWriter.java:1169) at com.itextpdf.text.pdf.PdfDocument.close(PdfDocument.java:780) at com.itextpdf.text.Document.close (Document.java:409) at <> .createPDF(<> .java:135) at <> .getPdfData (fileName1Bean.java:339) 在<> .retrieve(fileName1Bean.java:205) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本機方法) 在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:88) 在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55) at java.lang.reflect.Method.invoke(Method.java:613) at com.ibm.ejs.container.EJSContainer.invokeProceed(EJSContainer.java :5730) 在com.ibm.ejs.container.interceptors.InvocationContextImpl.proceed(InvocationContextImpl.java:568) 在<> .retrieveIntercept(<>的.java:43) 在sun.reflect.GeneratedMethodAccessor215.invoke(未知來源) 在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55) 在java.lang.reflect.Method.invoke(Method.java:613) 在com.ibm.ejs.container.interceptors.InterceptorProxy.invokeInterceptor( InterceptorProxy.java:227) at com.ibm.ejs.container.interceptors.InvocationContextImpl.proceed(InvocationContextImpl.java:548) at com.ibm.ejs.container.interceptors.InvocationContextImpl.doAroundInvoke(InvocationContextImpl.java:229) 在com.ibm.ejs.container.EJSContainer.invoke(EJSContainer.java:5621) 在<> _c01dfd09.retrieve(EJSRemote0SL <> Bean_c01dfd09.java) 在<> Bean_c01dfd09_Tie.retrieve(_ <> Bean_c01dfd09_Tie.java: 1) at <>。 調用( <> _c01dfd09_Tie.java) 在com.ibm.CORBA.iiop.ServerDelegate.dispatchInvokeHandler(ServerDelegate.java:669) 在com.ibm.CORBA.iiop.ServerDelegate.dispatch(ServerDelegate.java:523) at com.ibm.rmi.iiop.ORB.process(ORB.java:523) at com.ibm.CORBA.iiop.ORB.process(ORB.java:1575) at com.ibm.rmi.iiop。 Connection.doRequestWork(Connection.java:3039) at com.ibm.rmi.iiop.Connection.doWork(Connection.java:2922) at com.ibm.rmi.iiop.WorkUnitImpl.doWork(WorkUnitImpl。的java:64) 在com.ibm.ws.giop.threadpool.WorkQueueElement.dispatch(WorkQueueElement.java:165) 在com.ibm.ws.giop.filter.GiopFilterChain.processMessage(GiopFilterChain.java:203) 在com.ibm.ws.giop.threadpool.PooledThread.handleRequest(PooledThread.java:81) at com.ibm.ws.giop.threadpool.PooledThread.run(PooledThread.java:102) at com.ibm.ws. util.ThreadPool $ Worker.run(ThreadPool.java:1862)

+0

你的問題有些不對。你說你使用古老的iText 2.1.7版(2009年7月7日發佈),所以你的代碼中應該有'com.lowagie',但是你的錯誤信息提到了'com.itextpdf',它只存在於iText版本中5.0.0。也許你的構建路徑中有多個iText jar? –

+0

這個異常說明你在代碼中寫了一個bug。既然你不顯示你的代碼,我們不能準確地告訴你*你做錯了什麼。我們只能告訴你,你沒有爲每個'saveState()'使用'restoreState()',或者你使用'restoreState()'而不使用'saveState()'。我們也知道你或者不知道你使用的是哪個版本的iText,或者你是在說謊。 –

+0

另外...你有沒有檢查你的'try'塊中是否真的出現了一些異常?他們可能會過早地讓你進入'finally'塊,並帶來一些保存/恢復問題。 – mkl

回答

0

因此,這裏是... 首先,如果我的問題有歧義,我很抱歉。 如前所述,還使用了版本2.1.7(感謝Amedee提出的觀點)。我在服務器的共享庫中找到了一個5.x版本。 由於兩個版本之間的目錄結構完全不同,因此兩個罐子都因特定原因而被維護。

此外,我自己對這個整個應用程序是新手,並試圖與此項目中的人們瞭解。當開發它的人可能不在這裏時,我認爲一個帖子可能會給我一些想法。所以,你也是正確的Mr.Lowagie - 我對iText一無所知,並且也在學習 - 我沒有理由說謊! :-)。

Mkl,try塊中沒有例外。最終結果是,由於其他原因,圖像沒有生成或出現亂碼。它正在調查中。我將這項活動交給了比我更瞭解系統的人。

感謝您的郵件和支持我親愛的朋友!