GetStringListItemA
杂项函数
描述
末尾的 A 表示 ANSI(char)DLL 入口点,ActiveX/COM 接口仅公开 Unicode 形式。其行为与 GetStringListItem 相同,字符串参数会按照当前的 SetAnsiMode 代码页进行解释
返回由 StringListID 标识的字符串列表中位置 ItemIndex 的字符串,字符串列表由其他 API 函数产生,最常见的是 CheckFileCompliance,它会为每个检测到的合规性问题返回一个条目
语法
Delphi
Function DLGetStringListItemA(InstanceID, StringListID, ItemIndex: Integer): PAnsiChar;
DLL
const char * DLGetStringListItemA(int InstanceID, int StringListID, int ItemIndex);
参数
| StringListID | 由生成器函数(如 CheckFileCompliance)返回的字符串列表 ID |
|---|---|
| ItemIndex | 要检索项目的从一开始的索引。第一个项目为 1;最后一个项目为 GetStringListCount(StringListID)。超出范围的索引返回空字符串 |
返回值
请求索引处的字符串;若 StringListID 无效或 ItemIndex 不在 [1 .. GetStringListCount] 范围内,则返回空字符串
备注
对于 CheckFileCompliance 生成的列表,项目格式为 CODE: human-readable description,其中 CODE 是 CheckFileCompliance 页面记录的五位问题代码之一(00002、00003、00005、00006、00007、00011、00012),在冒号前剥离前缀即可按代码以编程方式处理
示例
// Parse the issue code from each compliance issue line
var
Issues, Count, I, ColonPos: Integer;
Line, Code: WideString;
begin
Issues := PDF.CheckFileCompliance('archive.pdf', '', 1, 0);
if Issues = 0 then Exit;
Count := PDF.GetStringListCount(Issues);
for I := 1 to Count do
begin
Line := PDF.GetStringListItem(Issues, I);
ColonPos := Pos(':', Line);
if ColonPos > 0 then
Code := Trim(Copy(Line, 1, ColonPos - 1))
else
Code := Line;
if Code = '00006' then
WriteLn('Document is encrypted — cannot be PDF/A')
else
WriteLn('Issue ', Code, ': ', Line);
end;
PDF.ReleaseStringList(Issues);
end;