DAOpenFileWithEncryptionKeyA
文档管理、直接访问功能、安全
描述
末尾的 A 表示 ANSI(char)DLL 入口点;ActiveX/COM 接口仅暴露 Unicode 形式。行为与 DAOpenFileWithEncryptionKey 完全相同,字符串参数按当前 SetAnsiMode 代码页解释通过直接接受十六进制文件加密密钥(而不是从密码派生)打开加密 PDF,用于经授权的恢复或调查文件通过源只读句柄打开,无法就地追加内容
语法
Delphi
Function DLDAOpenFileWithEncryptionKeyA(InstanceID: Integer; InputFileName, EncryptionKeyHex: PAnsiChar; Options: Integer): Integer; Stdcall;DLL
int DLDAOpenFileWithEncryptionKeyA(int InstanceID, const char * InputFileName, const char * EncryptionKeyHex, int Options);参数
| InputFileName | 加密 PDF 的路径和文件名 |
|---|---|
| EncryptionKeyHex | 长度为偶数的 ASCII 十六进制密钥,不带前缀或空白字符;修订版本 2 到 4 要求与加密字典声明的密钥长度完全一致,修订版本 5 到 7 要求 32 字节 |
| Options | 为 0 时要求存在可用的验证值;PDF_RAW_KEY_ALLOW_UNVERIFIED 仅在文档没有可用验证值时才允许接受其他方面有效的密钥 |
返回值
| 非零 | Direct Access 文件句柄 |
|---|---|
| 0 | 无法打开输入;请检查 LastErrorCode,其中包括 PDFLIB_ERROR_RAW_ENCRYPTION_KEY_INVALID(表示语法、长度、选项或验证无效) |
说明
可用的修订版本 2 到 4 /U 值和修订版本 5 到 7 /Perms 值始终会被检查;PDF_RAW_KEY_ALLOW_UNVERIFIED 绝不接受不匹配的情况打开后请调用
DAGetEncryptionKeyValidation,以区分已验证与显式未验证的句柄在处理请求之前,ANSI 字符串会先按当前
SetAnsiMode 代码页扩展为宽字符串密钥属于敏感凭据材料,其获取、传输和存储应采用与文档密码相同的管控措施