function InspectPdfAMetadata: TPdfAMetadataReport;
| Result | TPdfAMetadataReport contendo a disponibilidade de XMP, o texto de erro de análise, os campos de divergência e oito comparações por campo |
O método lê Title, Author, Subject, Keywords, Creator, Producer, CreationDate e ModDate por meio do PDFium, de modo que strings em PDFDocEncoding e UTF-16 usem a mesma decodificação Unicode do documento ativo
A inspeção bruta do dicionário registra se cada chave de Info existe de forma independente do seu valor, de modo que uma string explicitamente vazia não é tratada como chave ausente
Title e Subject exigem um valor rdf:Alt com a tag x-default; Author exige um rdf:Seq contendo exatamente um valor; os demais mapeamentos exigem uma propriedade simples encontrada pelo URI de namespace e pelo nome local
Valores de texto são comparados por pontos de código Unicode exatos; datas são comparadas como componentes locais quando nenhum dos valores tem fuso horário, ou como instantes UTC quando ambos os valores carregam fuso horário
TPdfAMetadataState distingue os estados não exigido, equivalente, XMP ausente, tipo RDF incorreto, valor divergente, data de Info inválida e data de XMP inválida
O método é somente leitura, exige um documento ativo e não modifica o estado do PDFium nem da origem
var Report: TPdfAMetadataReport;
Report := Pdf1.InspectPdfAMetadata;
if Report.HasXmpPacket and not Report.IsEquivalent then
ShowMessage(IntToStr(Length(Report.Comparisons)) + ' fields inspected');