JAVA - 将PDF字节数组转换为可读字符串

时间:2016-12-21 11:00:08

标签: java arrays pdf byte exchangewebservices

我正在尝试从附加到eMail的PDF中获取内容文本。

我正在使用EWS-JAVA-API来获取附件

public void getAttachments(Item item)throws Exception{
    EmailMessage message = EmailMessage.bind(service, item.getId(), new PropertySet(BasePropertySet.FirstClassProperties, ItemSchema.MimeContent, EmailMessageSchema.Attachments ) );
    for(Attachment attachment:message.getAttachments()) {
        FileAttachment newAttachment =(FileAttachment) attachment;
        newAttachment.load();
        newAttachment.getFileName();
        newAttachment.getContentType();
        System.out.println(new String(newAttachment.getContent()));
    }
}
然而,这会返回,例如

"%PDF-1.4
%����
4 0 obj
<<
/Subject (label, DEFAULT format)
/Producer (Apache FOP Version 0.95)
/CreationDate (D:20161015002945+01'00')
\>\>
endobj
5 0 obj
<<
  /N 3
  /Length 12 0 R
  /Filter /FlateDecode
\>\>
stream
 ��e����mi ]�P����`/ ���u}q�|^R��,g+���\K�k)/����C_|�R����ax�8�t1C^7nfz�D����p�柇��u�$��/�ED˦L L��[���B�@�������ٹ����ЖX�!@~ (*   {d+��}�G�͋љ���ς�}W�L��$�cGD2�Q���Z4" ...

以上简短截断。

有没有办法将其转换为代码中的可读文本(无需写入光盘?

注意:我可以使用PDFbox从中创建PDF文件,但是根据我的理解需要写入磁盘。我需要在记忆中这样做。

1 个答案:

答案 0 :(得分:0)

您可以尝试tika解析器

<dependency>
    <groupId>org.apache.tika</groupId>
    <artifactId>tika-parsers</artifactId>
    <version>LATEST_VERSION</version>
</dependency>

示例代码

Tika tikaParser = new Tika();
tikaParser.setMaxStringLength(-1);
Metadata metadata = new Metadata();
InputStream inputStream = new ByteArrayInputStream(newAttachment.getContent());
String content = tikaParser.parseToString(inputStream, metadata);