2014-02-19 30 views
1

我們使用Tika 1.1從XLSM文件中提取內容。我們有兩個服務器實例。在其中一臺服務器上,文件內容正在被正確提取。但在另一臺服務器上,我得到了同一個文件的zip bomb異常。我們在兩種情況下都使用相同的tika獨立罐。但我無法確定這個問題。Tika拉鍊炸彈例外

不確定SAX配置是否在運行時產生問題(我對SAX不熟悉)。我該如何調試這個問題?

引起:org.apache.tika.exception.TikaException:檢測到Zip炸彈! at org.apache.tika.sax.SecureContentHandler.throwIfCauseOf(SecureContentHandler.java:192) at org.apache.tika.parser.AutoDetectParser.parse(AutoDetectParser.java:123) at org.apache.tika.Tika。 parseToString(Tika.java:380) at com.ptc.search.solr.contentReader.contentExtraction.TikaExtractor.getContent(TikaExtractor.java:36) ... 45更多 引起:org.apache.tika.sax。 SecureContentHandler $ SecureSAXException:可疑的zip炸彈:在org.apache.tika.sax.SecureContentHandler.startElement(SecureContentHandler.java:234) 處的org.apache.tika.sax.ContentHandlerDecorator.startElement(ContentHandlerDecorator。 java:126) at org.apache.tika.sax.ContentHandlerDecorator.startEl EMENT(ContentHandlerDecorator.java:126) 在org.apache.tika.sax.ContentHandlerDecorator.startElement(ContentHandlerDecorator.java:126) 在org.apache.tika.sax.ContentHandlerDecorator.startElement(ContentHandlerDecorator.java:126) 在org.apache.tika.sax.SafeContentHandler.startElement(SafeContentHandler.java:264) at org.apache.tika.sax.XHTMLContentHandler.startElement(XHTMLContentHandler.java:244) at org.apache.tika.sax.XHTMLContentHandler。的startElement(XHTMLContentHandler.java:274) 在org.apache.tika.sax.XHTMLContentHandler.element(XHTMLContentHandler.java:313) 在org.apache.tika.parser.microsoft.ooxml.XSSFExcelExtractorDecorator.extractHeaderFooter(XSSFExcelExtractorDecorator.java: 145) at org.apache.tika.parser.microsoft .ooxml.XSSFExcelExtractorDecorator.buildXHTML(XSSFExcelExtractorDecorator.java:129) 在org.apache.tika.parser.microsoft.ooxml.AbstractOOXMLExtractor.getXHTML(AbstractOOXMLExtractor.java:104) 在org.apache.tika.parser.microsoft.ooxml .OXMLExtractorFactory.parse(OOXMLExtractorFactory.java:110) at org.apache.tika.parser.microsoft.ooxml.OOXMLParser.parse(OOXMLParser.java:82) at org.apache.tika.parser.CompositeParser.parse(CompositeParser .java:242) at org.apache.tika.parser.CompositeParser.parse(CompositeParser.java:242) at org.apache.tika.parser.AutoDetectParser.parse(AutoDetectParser.java:120) ... 47更多

+0

「a」拉鍊炸彈「,即一個壓縮文檔,該文檔擴展爲過量的提取文本。」 – WonderWorld

+0

是的,XLSM文檔實際上是一個壓縮文檔。但我擔心的是同一個文件的內容提取在一個環境中運行良好,但在另一個環境中卻不行而且我無法找出兩種環境之間的差異。有什麼我需要尋找? – sidgate

+0

默認允許的XML嵌套級別爲100,如果超過此值,則會得到該異常。解決方法是增加默認的maxPackageEntryDepth。最大嵌套限制可以直接在SecureContentHandler級別上設置。 – WonderWorld

回答

0

調試完tika代碼之後,我意識到我已經在WriteOutContentHandler上設置了maxStringLength,並且代碼在達到限制後拋出zip bomb錯誤。正確的錯誤消息可能會幫助更快。無論如何,感謝所有的輸入。我們一定會計劃轉向最新版本。

我們應該在Jira中創建一個缺陷來拋出正確的錯誤信息嗎?

0

我解決了這個問題,在安裝

emerge app-office/unoconv 

和執行

$ unoconv -fpdf file.xlsm 

它將創建該文件的同一目錄.pdf文件,那麼你可以把它送到提卡。

我的服務器是Gentoo,然後適應你的dist。