处理文档内容
要处理文档的内容,可以使用 ECMContentStream 数据类型来合并内容流,并返回有关流的信息。内容流是包含文档(例如,字处理文档或图像)内容的数据流。
ECMContentStream 数据类型用于以下四种 Enterprise Content Management (ECM) 操作:
- 检入文档
- 创建文档
- 获取文档内容
- 设置文档内容
可在主题Enterprise Content Management 操作中的数据映射中找到有关这些操作的信息。
下表描述了 ECMContentStream 数据类型的属性:
| 属性名 | Description |
|---|---|
| contentLength | 原始(非编码)内容长度(以字节为单位)。如果设置该属性,长度必须为正数。如果长度未知,那么不得设置该属性。 |
| mimeType | 内容流的 MIME 介质类型。对于文档的主要内容,MIME 介质类型应与属性 cmis:contentStreamMimeType 的值相匹配。例如,application/pdf。 |
| fileName | 内容流的文件名。对于文档的主要内容,文件名应与属性 cmis:contentStreamFileName 的值相匹配。 |
| 内容 (content) | 文档的值。其类型必须为 String Base64,并且它采用 UTF-8 进行编码。 |
以下示例代码段可用于脚本步骤以在 ECMContentStream 对象中设置字符串值:
// Script sample code to set and encode the document content
var value = "abc";
var bytesValue = new Packages.java.lang.String(value).getBytes("UTF-8");
tw.local.contentStream = new tw.object.ECMContentStream();
tw.local.contentStream.contentLength = bytesValue.length;
tw.local.contentStream.mimeType = "text/plain";
tw.local.contentStream.content = Packages.javax.xml.bind.DatatypeConverter.printBase64Binary(bytesValue);
以下示例代码段可用于脚本步骤中以从 ECMContentStream 对象获取字符串值:
// Script sample code to get and decode the document content
var bytesValue = Packages.javax.xml.bind.DatatypeConverter.parseBase64Binary(tw.local.contentStream.content);
var value = new Packages.java.lang.String(bytesValue, "UTF-8");
以下示例代码段可用于脚本步骤中以将文件的内容写入 ECMContentStream 对象:
// Script sample code to set and encode the document content from a file
var file = new Packages.java.io.File(tw.local.fileName);
var bytesValue = Packages.org.apache.commons.io.FileUtils.readFileToByteArray(file);
tw.local.contentStream = new tw.object.ECMContentStream();
tw.local.contentStream.contentLength = file.length();
tw.local.contentStream.fileName = file.getName();
tw.local.contentStream.mimeType = "text/plain"; // provide your designated mime type here
tw.local.contentStream.content = Packages.javax.xml.bind.DatatypeConverter.printBase64Binary(bytesValue);
以下示例代码段可用于脚本步骤中以将内容从 ECMContentStream 对象写入文件:
// Script sample code to decode the document content and write it to a file
var bytesValue = Packages.javax.xml.bind.DatatypeConverter.parseBase64Binary(tw.local.contentStream.content);
var file = new Packages.java.io.File(tw.local.outputDirectory, tw.local.contentStream.fileName);
Packages.org.apache.commons.io.FileUtils.writeByteArrayToFile(file, bytesValue);