2017-10-10 72 views
1

問題はhereと同じです。iText PDFが "Dictionary key endstreamが名前ではありません"というメッセージで失敗する

私は(2017年7月4日にビルド)this imageを取り、GraphicsMagickののv1.3.26を使用してthis PDFに変換しています

gm convert itext_banner_InvalidPdfException.jpg itext_banner_InvalidPdfException.pdf

私はiTextののv5.5.12でそれを読んしようとすると、私は取得次の例外:

java -cp itextpdf-5.5.12.jar com.itextpdf.text.pdf.parser.PdfContentReaderTool itext_banner_InvalidPdfException.pdf 
com.itextpdf.text.exceptions.InvalidPdfException: Rebuild failed: Dictionary key endstream is not a name. at file pointer 1197; Original message: Dictionary key endstream is not a name. at file pointer 1197 
    at com.itextpdf.text.pdf.PdfReader.readPdf(PdfReader.java:764) 
    at com.itextpdf.text.pdf.PdfReader.<init>(PdfReader.java:197) 
    at com.itextpdf.text.pdf.PdfReader.<init>(PdfReader.java:235) 
    at com.itextpdf.text.pdf.PdfReader.<init>(PdfReader.java:223) 
    at com.itextpdf.text.pdf.PdfReader.<init>(PdfReader.java:213) 
    at com.itextpdf.text.pdf.parser.PdfContentReaderTool.listContentStream(PdfContentReaderTool.java:200) 
    at com.itextpdf.text.pdf.parser.PdfContentReaderTool.main(PdfContentReaderTool.java:249) 

質問:

  • 指定されたPDFにはどんな問題がありますか? GhostScriptにGraphicsMagickによって間接的に使用される問題があるようです。
  • iText RUPS v5.8.8で開くと、コンソールタブに警告が表示されません。それはiText RUPSの観点から有効であることを意味しますか?

    11 0 obj 
    << 
    
    endstream 
    endobj 
    

    開口部<<endstreamによって閉鎖されている:

答えて

1

あなたのPDFは、この壊れたオブジェクトが含まれています。これは一致しません。

そのオブジェクトは単なる辞書であることを意味していた場合、それはこのように見ている必要があります。

11 0 obj 
<< 
    [a reasonable number of dictionary entries] 
>> 
endobj 

そのオブジェクトがストリームであることを意味していた場合、それはこのように見ている必要があります。

11 0 obj 
<< 
    [a reasonable number of dictionary entries] 
>> 
stream 
    [stream data] 
endstream 
endobj 

ところで、問題のオブジェクトはPDFの他のオブジェクトから参照されません。したがって、部分モードでPdfReaderのPDFを開くと、その問題は無視されます。

+0

iText RUPSがそれを報告しない理由を知りましたか?私はそれがその問題のためにも設計されたと思う:壊れた構造を回復するが、それを報告すること。 –

+0

私は後で見ていきます。しかし、私はRUPSがこのエラーを特に処理するとは思わないでしょう。 – mkl

関連する問題