Apache Tika Server 2.5解析加密PDF遇EncryptedDocumentException的问询
解析Tika Server 2.5中受密码保护的PDF文档
Tika Server 2.5支持通过请求头传递PDF密码来解析加密文档,具体方案如下:
核心方法:使用专用请求头传递密码
发送解析请求时,添加X-Tika-PDF-Password请求头,值为PDF的用户打开密码(注意:不是所有者权限密码,所有者密码仅用于限制编辑操作,打开文档需要用户密码)。
示例:curl命令调用
curl -X POST -T /path/to/encrypted.pdf -H "X-Tika-PDF-Password: your_pdf_password" http://localhost:9998/tika
示例:Java客户端库调用
如果使用Tika官方客户端库tika-client,可以通过元数据设置请求头:
import org.apache.tika.client.TikaClient; import org.apache.tika.metadata.Metadata; import java.io.FileInputStream; import java.net.URI; public class TikaEncryptedPDF { public static void main(String[] args) throws Exception { TikaClient client = new TikaClient(new URI("http://localhost:9998")); FileInputStream stream = new FileInputStream("encrypted.pdf"); Metadata metadata = new Metadata(); metadata.set("X-Tika-PDF-Password", "your_pdf_password"); String content = client.parseToString(stream, metadata); System.out.println(content); stream.close(); } }
注意事项
- 若密码错误或传递的是所有者密码,仍会抛出
EncryptedDocumentException,需确认密码类型和正确性 - 该请求头仅对PDF文档生效,其他加密格式需使用对应解析器的专用参数
内容的提问来源于stack exchange,提问作者BChe
相关产品推荐
相关产品推荐

