我向alfresco添加了一个UI操作,它将nodeRef作为我正在尝试读取内容的参数
contentService.getReader(nodeRef, ContentModel.TYPE_CONTENT).getContentString()但它只处理.txt文件,而不是.pdf、.xlsx、.docx .例如,当我试图读取一个pdf文件时,它会让我:
S#?_#3C?? R/Metadata 64 0 R/OCProperties<</D<</Order[]/R .....用word文档和它的数字。
有解决办法吗?
发布于 2014-07-03 08:02:53
实际上,阿尔弗雷科有自己的阅读器、转换器和所有工作人员,所以我用这段代码从任何内容中阅读,它就能工作了。
ContentReader reader = contentService.getReader(nodeRef, ContentModel.PROP_CONTENT);
String content="";
if (reader != null && reader.exists())
{
// get the transformer
ContentTransformer transformer = contentService.getTransformer(reader.getMimetype(), MimetypeMap.MIMETYPE_TEXT_PLAIN);
// is this transformer good enough?
if (transformer != null)
{
// We have a transformer that is fast enough
ContentWriter writer = contentService.getTempWriter();
writer.setMimetype(MimetypeMap.MIMETYPE_TEXT_PLAIN);
try
{
transformer.transform(reader, writer);
// point the reader to the new-written content
reader = writer.getReader();
// Check that the reader is a view onto something concrete
if (!reader.exists())
{
logging(new ContentIOException("The transformation did not write any content, yet: \n"
+ " transformer: " + transformer + "\n" + " temp writer: " + writer+"")+"");
throw new ContentIOException("The transformation did not write any content, yet: \n"
+ " transformer: " + transformer + "\n" + " temp writer: " + writer);
}else {
content = reader.getContentString();
logging("------------------------------------------------------------");
logging(content);
}
}
catch (ContentIOException e)
{
}
}
}发布于 2014-07-02 16:41:18
是。试一试contentService.getReader(nodeRef, ContentModel.TYPE_CONTENT).getContentInputStream()。如果需要找到特定的文本,请将流中的数据输入PDF库,并使用其API访问内容。
https://stackoverflow.com/questions/24529859
复制相似问题