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;

另请参阅

GetStringListCount、ReleaseStringList、CheckFileCompliance