/Author 条目的值property Author: WString; // read only
Author 返回原始文档作者的可读名称,也就是作者本人或组织的名称。内部来看,该属性只是 MetaText['Author'] 的一层薄封装,而后者又会调用 PDFium 的 FPDF_GetMetaText 来读取文档信息字典中的 /Author 字符串(该字典由 trailer 的 /Info 键引用,参见 ISO 32000-1,第 14.3.3 节 "Document Information Dictionary")
如果文档没有声明作者,或者文档当前未加载,结果就是空的 WString。这个属性不会抛出异常,空字符串就是“未记录作者”的正确哨兵值。由于底层 PDFium API 会把原始的 PDFDocEncoding 或 UTF-16BE 字节串解码为 UTF-16,结果始终以 Delphi 原生的 WideString 编码返回,可以直接赋给 TStrings、TLabel 或任何其他支持 Unicode 的界面
该属性为只读。若要为新建或已加载的文档设置作者,请直接对 Document 句柄使用更底层的 FPDF_SetMetaText 导入,或者通过元数据流编写 / 刷新 XMP 包
True(文档必须已加载)。在未激活的组件上读取时只会返回空字符串,不会因为缺少条目而抛出异常FE FF)前缀的 UTF-16BE 字节串。PDFium 会为你解码这两种形式,因此你无需直接处理编码Author 为空,但你在 Acrobat 的属性对话框中能看到作者,请到 XMP 包(dc:creator)里找这个值
procedure TForm1.ShowDocumentInfo;
begin
Pdf1.FileName := 'C:\Docs\Report.pdf';
Pdf1.Active := True;
try
Memo1.Lines.Add('Title: ' + Pdf1.Title);
Memo1.Lines.Add('Author: ' + Pdf1.Author);
Memo1.Lines.Add('Subject: ' + Pdf1.Subject);
if Pdf1.Author = '' then
Memo1.Lines.Add(' (no /Author entry in info dictionary)');
finally
Pdf1.Active := False;
end;
end;