SAP ArchiveLink对象无法打开:SF假脱机转PDF存档后无法正常查看
排查与解决步骤
- 首先校验转换与存档函数的入参合规性:
- 调用
CONVERT_OTFSPOOLJOB_2_PDF时不要开启PDF_NEWLINE参数,该参数会在每一行字节末尾额外插入换行符,破坏PDF原生结构,本地阅读器可容错该问题,但ArchiveLink解析时会直接报错 - 调用
ARCHIVOBJECT_CREATE_TABLE时,DOC_TYPE参数必须固定传PDF,不要传入自定义文档类型编码 - 传入的
LENGTH参数必须等于PDF二进制文件的实际字节数,不要直接取内表行数乘以1024(避免最后一行不满1024字节时计算值偏大),建议直接取CONVERT_OTFSPOOLJOB_2_PDF返回的XSTRING长度作为LENGTH入参 - 传入的
BINARY_TAB内表行类型必须为SOLIX,需和SCMS_XSTRING_TO_BINARY输出的内表结构完全匹配,行结构不匹配会导致字节错位,最终存储的PDF文件损坏
- 调用
- 检查PDF字节的BOM头:
CONVERT_OTFSPOOLJOB_2_PDF在部分ECC版本输出的XSTRING会携带UTF-8 BOM头(首三个字节为EF BB BF),本地PDF阅读器可自动忽略该标识,但ArchiveLink解析时会识别为非法文件头,你可以在转二进制前先判断XSTRING首三个字节,如为BOM则截断后再进行后续处理 - 校验OAC2配置:你配置的对应文档类的MIME类型必须设置为
application/pdf,不能设置为通用二进制流类型application/octet-stream,ArchiveLink调用预览时会读取该配置加载对应解析器,配置错误会触发解析报错 - 检查事务提交逻辑:调用完
ARCHIVOBJECT_CREATE_TABLE和ARCHIV_CONNECTION_INSERT后必须显式执行COMMIT WORK,TOA01生成条目仅代表元数据写入成功,未提交会导致内容服务器侧的PDF文件写入不完整,进而预览失败 - 校验
ARCPARAMS入参:ARCHIVOBJECT_CREATE_TABLE传入的ARCPARAMS-DOCUMENT_CLASS值必须和OAC2中配置的文档类编码完全一致,大小写敏感,不匹配会导致元数据和实际存储文件的关联错误
内容的提问来源于stack exchange,提问作者RALF
相关产品推荐
相关产品推荐

