有点远射,但我没有任何运气找到任何地方记录的答案。
我正在编写一个自定义工具,使用 eDOCS DM API 将文件批量上传到 eDOCS。该工具几乎可以按预期工作,我创建了一个文件和元数据属性的任务列表,它创建了所需的 eDOCS 配置文件并保存了文件。
将文件保存到 eDOCS 本质上是一个两步过程:
第 1 步 - 创建文档配置文件表单 这是通过创建具有键/值对的 DM API 对象来设置表单上的字段来完成的。其中一个字段将文档链接到具有默认扩展名的特定应用程序(例如 MS Word、Excel 等)。创建配置文件后,会在 eDOCS 文件存储库中生成一个空文件,该文件具有随机文件名和链接应用程序的默认扩展名。
第 2 步 - 将文档保存到存储库 这很简单,基本上将源文件读入字节数组并使用 eDOCS DM API 对象将流写入 eDOCS 文件存储库中保存的文件(在第 1 步中创建)。
我正在努力的是在创建表单时更改在 eDOCS 文件存储库中生成的文件的扩展名。我无法在官方文档中找到任何指针或在线任何答案(尽管几年前我发现有人在 Spiceworks 上问过这个问题(https://community.spiceworks.com/topic/196865- open-text-edocs-hummingbird-support-group?page=2#entry-5226944 ))。
因此,一个实际示例使用此工具将 rtf 文件保存到 eDOCS 并与 Microsoft Word 相关联,因为 Microsoft Word 的默认扩展名设置为 docx,该文件使用扩展名 docx 保存,并且当用户检索时 Word 无法解释该文件并抛出错误消息。
使用标准 eDOCS DM 扩展程序单独保存文件时,有一个“另存为”字段可用,可让您覆盖默认文件扩展名。
目前我能想到的解决此问题的唯一方法是在 eDOCS 数据库应用程序表中为我们遇到的每个文件扩展名创建一个条目,但是我希望有一种方法可以使用提供的 API 解决此问题。
任何建议将不胜感激,谢谢。
附加信息:所以我们在 APP_FILE_EXTNS 表中为每个应用程序定义了多个扩展,例如,我在下面包含了一些与 Microsoft Word 相关的行:
APPS_LINK LANGUAGE EXTENSION FILE_FORMAT DESCRIPTION NEW_DOC_ONLY ORDER_NO DISABLED
1435 EN docx NULL Word Document (*.docx) N 1 N
1435 EN DOT NULL Word 97-2003 Template (*.dot) N 13 N
1435 EN doc NULL Word 97-2003 Document (*.doc) N 2 N
1435 EN rtf 6 Rich Text Format (*.rtf) N 8 N
以下是创建配置文件的示例 API 调用(使用 Powershell):
$doc = New-Object -ComObject PCDClient.PCDDocObject.1
$doc.SetDST($global:dmDST)
$doc.SetObjectType($global:dmForm)
$doc.SetProperty("PD_FILEPT_NO", $edocsFilePart)
$doc.SetProperty("DOCNAME", $docname)
$doc.SetProperty("APP_ID", $appid)
$doc.SetProperty("AUTHOR_ID", $author
$doc.SetProperty("TYPIST_ID", $typist
$doc.SetProperty("TYPE_ID", "DEFAULT")
$doc.SetProperty("%TARGET_LIBRARY", $global:dmLibrary)
$doc.Create()
# use PCDClient.PCDPutDoc and PCDClient.PCDPutStream to save the file to the edocs file repo
# unlock the document
所以在上面的例子中,$appid 将与APPS 表中的APPLICATION 列相关(例如MS WORD、FOLDER、PDF 等)。当 $doc.Create() 被调用时,会发生以下情况:
- 创建文档配置文件
- edocs 文件 repo 上的空文件是通过 $doc.SetProperty("APP_ID", $appid) 创建的,扩展名设置为应用程序集的默认扩展名
- COMPONENTS 表已更新以将空文件链接到文档配置文件
您是否知道是否有办法使用 DM API 将文件扩展名设置为与文档关联的应用程序的非默认扩展名之一?
我用几个不同的键尝试了 PCDClient.PCDDocObject.SetProperty() 都失败了:
- 扩大
- %扩大
- 分机
- %EXT
- 小路
- %小路
- 文件扩展名
- %文件扩展名