Scala 如何设置Tika解析器来检测受密码保护的文档

Scala 如何设置Tika解析器来检测受密码保护的文档,scala,pdf,password-protection,apache-tika,Scala,Pdf,Password Protection,Apache Tika,我们使用ApacheTika解析器从各种文档中提取内容,并检测文档是否受密码保护(PDF、MS Office文档等)。对于Tika 1.6,我们使用了以下Scala代码(简化): 并且正在捕获包装在TikaException中的EncryptedDocumentException或CryptographyException 它过去工作正常,但当我们将Tika升级到1.7时,检测被破坏了。例如,现在对于受保护的PDF,我们将得到普通的IOException包装到TikaException: jav

我们使用ApacheTika解析器从各种文档中提取内容,并检测文档是否受密码保护(PDF、MS Office文档等)。对于Tika 1.6,我们使用了以下Scala代码(简化):

并且正在捕获包装在
TikaException
中的
EncryptedDocumentException
CryptographyException

它过去工作正常,但当我们将Tika升级到1.7时,检测被破坏了。例如,现在对于受保护的PDF,我们将得到普通的
IOException
包装到
TikaException

java.io.IOException: null
    at org.apache.pdfbox.filter.FlateFilter.decode(FlateFilter.java:109) ~[tika-app-1.7.jar:1.7]
    at org.apache.pdfbox.cos.COSStream.doDecode(COSStream.java:379) ~[tika-app-1.7.jar:1.7]
    at org.apache.pdfbox.cos.COSStream.doDecode(COSStream.java:291) ~[tika-app-1.7.jar:1.7]
    at org.apache.pdfbox.cos.COSStream.getUnfilteredStream(COSStream.java:225) ~[tika-app-1.7.jar:1.7]
    at org.apache.pdfbox.pdfparser.PDFStreamParser.<init>(PDFStreamParser.java:117) ~[tika-app-1.7.jar:1.7]
Caused by: java.util.zip.DataFormatException: incorrect header check
    at java.util.zip.Inflater.inflateBytes(Native Method) ~[na:1.7.0_71]
    at java.util.zip.Inflater.inflate(Inflater.java:259) ~[na:1.7.0_71]
    at java.util.zip.Inflater.inflate(Inflater.java:280) ~[na:1.7.0_71]
    at org.apache.pdfbox.filter.FlateFilter.decompress(FlateFilter.java:128) ~[tika-app-1.7.jar:1.7]
    at org.apache.pdfbox.filter.FlateFilter.decode(FlateFilter.java:101) ~[tika-app-1.7.jar:1.7]
java.io.IOException:null
在org.apache.pdfbox.filter.FlateFilter.decode(FlateFilter.java:109)~[tika-app-1.7.jar:1.7]
在org.apache.pdfbox.cos.costream.doDecode(costream.java:379)~[tika-app-1.7.jar:1.7]
在org.apache.pdfbox.cos.costream.doDecode(costream.java:291)~[tika-app-1.7.jar:1.7]
在org.apache.pdfbox.cos.costream.getUnfilteredStream(costream.java:225)~[tika-app-1.7.jar:1.7]
在org.apache.pdfbox.pdfparser.PDFStreamParser.(PDFStreamParser.java:117)~[tika-app-1.7.jar:1.7]
原因:java.util.zip.DataFormatException:标头检查不正确
在java.util.zip.Inflater.inflateBytes(本机方法)~[na:1.7.0_71]
在java.util.zip.Inflater.inflate(Inflater.java:259)~[na:1.7.071]
在java.util.zip.Inflater.inflate(Inflater.java:280)~[na:1.7.0\u71]
在org.apache.pdfbox.filter.FlateFilter.decompress(FlateFilter.java:128)~[tika-app-1.7.jar:1.7]
在org.apache.pdfbox.filter.FlateFilter.decode(FlateFilter.java:101)~[tika-app-1.7.jar:1.7]
我们在Tika解析器设置中缺少什么来正确检测受保护的文档


提前感谢您的提示。

很难100%确定,但此问题可能由以下原因引起或与之相关:

该问题在1.7中出现,但似乎在1.8的主要分支上得到了解决


开源的好处在于它是很好的、开放的,因此如果需要的话,应该可以在官方1.8版本之前用本地版本在本地修补问题。

很难100%确定,但这个问题可能是由以下原因引起的:

该问题在1.7中出现,但似乎在1.8的主要分支上得到了解决


开源的好处在于它是很好的、开放的,因此如果需要的话,应该可以在官方1.8版本之前用本地版本在本地修补问题。

很难100%确定,但这个问题可能是由以下原因引起的:

该问题在1.7中出现,但似乎在1.8的主要分支上得到了解决


开源的好处在于它是很好的、开放的,因此如果需要的话,应该可以在官方1.8版本之前用本地版本在本地修补问题。

很难100%确定,但这个问题可能是由以下原因引起的:

该问题在1.7中出现,但似乎在1.8的主要分支上得到了解决


开源的好处在于它是很好的、开放的,因此如果需要的话,应该可以在官方1.8版本之前使用本地版本在本地修补问题。

可能是:-或类似的/相关的?@MikeCurry-谢谢!可能就是这样。我还没有测试过Tika后备箱,但我在正确的位置看到了修复。现在我必须等待Tika 1.8发布:(很高兴提供帮助。我只是提出了一个答案,这样如果其他人在1.7中遇到同样的问题,它将比评论中的问题更明显。正如答案中所指出的,如果你不能等待1.8,可能可以在本地应用补丁,因为源代码是开放的,如果你不能等待1.8,可能是这样:-或类似的/相关的?@MikeCurry-谢谢!这是问题我还没有用Tika trunk进行测试,但我看到了正确的修复。现在我必须等待Tika 1.8发布:(很高兴提供帮助。我只是提出了一个答案,这样如果其他人在1.7中遇到同样的问题,它将比评论中的问题更明显。正如答案中所指出的,如果你不能等待1.8,可能可以在本地应用补丁,因为源代码是开放的,如果你不能等待1.8,可能是这样:-或类似的/相关的?@MikeCurry-谢谢!这是问题我还没有用Tika trunk进行测试,但我看到了正确的修复。现在我必须等待Tika 1.8发布:(很高兴提供帮助。我只是提出了一个答案,这样如果其他人在1.7中遇到同样的问题,它将比评论中的问题更明显。正如答案中所指出的,如果你不能等待1.8,可能可以在本地应用补丁,因为源代码是开放的,如果你不能等待1.8,可能是这样:-或类似的/相关的?@MikeCurry-谢谢!这是问题我还没有用Tika trunk进行测试,但我看到了正确的修复。现在我必须等待Tika 1.8发布:(很高兴提供帮助。我只是提出了一个答案,这样如果其他人遇到与1.7相同的问题,它将比评论中的问题更明显。正如答案中所指出的,如果你不能等待1.8,可能可以在本地应用补丁,因为源代码是开放的
java.io.IOException: null
    at org.apache.pdfbox.filter.FlateFilter.decode(FlateFilter.java:109) ~[tika-app-1.7.jar:1.7]
    at org.apache.pdfbox.cos.COSStream.doDecode(COSStream.java:379) ~[tika-app-1.7.jar:1.7]
    at org.apache.pdfbox.cos.COSStream.doDecode(COSStream.java:291) ~[tika-app-1.7.jar:1.7]
    at org.apache.pdfbox.cos.COSStream.getUnfilteredStream(COSStream.java:225) ~[tika-app-1.7.jar:1.7]
    at org.apache.pdfbox.pdfparser.PDFStreamParser.<init>(PDFStreamParser.java:117) ~[tika-app-1.7.jar:1.7]
Caused by: java.util.zip.DataFormatException: incorrect header check
    at java.util.zip.Inflater.inflateBytes(Native Method) ~[na:1.7.0_71]
    at java.util.zip.Inflater.inflate(Inflater.java:259) ~[na:1.7.0_71]
    at java.util.zip.Inflater.inflate(Inflater.java:280) ~[na:1.7.0_71]
    at org.apache.pdfbox.filter.FlateFilter.decompress(FlateFilter.java:128) ~[tika-app-1.7.jar:1.7]
    at org.apache.pdfbox.filter.FlateFilter.decode(FlateFilter.java:101) ~[tika-app-1.7.jar:1.7]