【问题标题】:read pdf file in alfresco在露天阅读pdf文件
【发布时间】:2014-07-02 11:23:47
【问题描述】:

我向 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 文档和 excel 中的数字。

有解决办法吗?

【问题讨论】:

  • 您看到的是内部 PDF 语法。改为使用适当的 PDF 库来访问 PDF 内容。

标签: excel pdf alfresco


【解决方案1】:

是的。请改用contentService.getReader(nodeRef, ContentModel.TYPE_CONTENT).getContentInputStream()。如果您需要查找特定文本,请将流中的数据输入 PDF 库并使用其 API 访问内容。

【讨论】:

  • 别忘了,您可以使用 Alfresco 中内置的内容转换器为您生成大多数受支持文档(包括 PDF)的纯文本版本!
【解决方案2】:

实际上,Alfresco 有自己的阅读器、转换器和所有工作人员,因此要阅读我使用此代码的任何内容,它可以正常工作

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)
                    {


                    }
                }
            }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-31
    相关资源
    最近更新 更多