JAVA - 将 PDF 字节数组转换为可读字符串
JAVA - Convert PDF Byte array into Readable String
我正在尝试从附加到电子邮件的 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()));
}
}
然而 returns 例如
"%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 文件,但据我所知,这需要写入磁盘。我需要在内存中执行此操作。
你可以试试 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);
我正在尝试从附加到电子邮件的 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()));
}
}
然而 returns 例如
"%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 文件,但据我所知,这需要写入磁盘。我需要在内存中执行此操作。
你可以试试 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);