1

我的 PDF 文档包含多张扫描文档的图像/页面。它们的(OCR 生成的)文本内容位于单独的 XML 文件中。

是否可以以某种方式使用/链接 XML 中的文本内容到我的 PDF 文件?(理想情况下,存储库中不会留下其他文件来混淆不知情的用户。)

正如我被告知文本属性有 65k 限制,因此我不能简单地将文本内容放入 上的属性中,因为 PDF 可能很容易超过该限制。

有人建议将带有文本内容的流传递给我的 PDF 文件的 cm:content 属性。我有点迷路了,因为 IMO 这意味着我要么提供参考,要么再次分配巨大的字符串。第一个意味着文本内容必须作为单独的文档保存在某处。后来听起来我会再次达到65k的限制。
另外我认为设置 cm:content 可能会删除 PDF 内容本身。我需要 PDF 二进制数据保持不变。

这是讨论建议的地方。无论如何,我目前正在尝试。

4

2 回答 2

1

Soo,这实际上很容易......需要做的是在您的文档上定义一个“d:content”类型的属性;我通过一个方面做到这一点......

模型.xml:

<aspects>
    <aspect name="mm:my_aspect">
...
            <property name="mm:myTextContentProperty">
                <type>d:content</type>
            </property>
        </properties>
    </aspect>
</aspects>

然后,当我在存储库中同时拥有 PDF 及其文本表示时,我通过添加方面并填充属性来链接这两者...

getNodeService().addAspect(pdfNodeRef, myAspect, null);
getNodeService().setProperty(pdfNodeRef, MyModel.MY_TEXT_CONTENT_PROPERTY, new ContentData("store://....bin", "text/plain", size, "UTF-8"));

现在可以通过以下两个查询找到 PDF,即使它不包含任何文本数据...

"@\\{http\\://mymodel.ns/content/1.0\\}myTextContentProperty:\"" + string + "\""
"TEXT:\"" + string + "\""

此处也暗示了后者,我猜这就是 Alfresco Web Client 中的常规搜索的工作方式,因为现在可以使用常规搜索输入访问 PDF。
但是有一个问题:搜索会吐出 PDF 文档以及我使用该属性链接的文档。所以现在我需要从搜索结果中隐藏后者......

(当使用第一个查询进行搜索时,正如预期的那样,只找到了 PDF;但这种方法对我来说用处不大。)

希望它可以为其他 Alfresco 新手节省一些时间。:)

于 2010-10-13T17:24:12.280 回答
0

实现我需要的另一种方法是使用 contentService 设置 MY_TEXT_CONTENT_PROPERTY...

ContentWriter writer = getContentService().getWriter(pdfNodeRef, MyModel.MY_TEXT_CONTENT_PROPERTY, true);
writer.setMimetype("text/plain");
writer.setEncoding("UTF-8");
writer.putContent(stringFromXmlDescription); // the source XML gets thrown away

(重要的事情似乎是在设置 mimetype 和 encoding之后放置内容。否则内容/属性不可搜索。)

使用这种方法,不需要隐藏链接的文本文档,没有任何东西。

于 2010-10-20T14:04:22.593 回答