property AttachmentName[Index: Integer]: WString; // read only
Каждое файловое вложение PDF имеет связанное имя файла в словаре спецификации файла — обычно это исходное имя файла, как оно выглядело на диске автора, например contract.docx или source-data.csv. AttachmentName отдаёт это имя как WString, чтобы его можно было показать в интерфейсе, использовать как предложенный путь сохранения или сопоставлять по расширению
Возвращаемая строка декодируется из хранилища PDF в формате UTF-16BE или PDFDocEncoding, поэтому имена вне ASCII, такие как китайские, кириллические и латиница с диакритикой, корректно проходят туда и обратно. Если автор оставил только ключевую запись без явного имени файла /F или /UF, возвращается пустая строка
Свойство доступно только для чтения. Переименование вложения этим API не предусмотрено; если нужно изменить имя файла, удалите ячейку через DeleteAttachment и создайте её заново через CreateAttachment, а затем повторно присвойте байты через Attachment
| Index | Integer. Позиция вложения с нулевой индексацией. Должна находиться в [0, AttachmentCount - 1]. Передача индекса вне диапазона возвращает пустую строку |
\, /) перед записью на диск; некоторые инструменты авторинга сохраняют в имени относительные пути
var
I: Integer;
FileName: string;
begin
Pdf1.LoadFromFile('package.pdf');
ListBox1.Items.BeginUpdate;
try
ListBox1.Items.Clear;
for I := 0 to Pdf1.AttachmentCount - 1 do
begin
FileName := Pdf1.AttachmentName[I];
if FileName = '' then
FileName := Format('(unnamed #%d)', [I]);
ListBox1.Items.AddObject(FileName, TObject(I));
end;
finally
ListBox1.Items.EndUpdate;
end;
end;