function InspectPdfAMetadata: TPdfAMetadataReport;
| Result | TPdfAMetadataReport com a disponibilidade de XMP, o texto do erro de análise, os campos em desconformidade e oito comparações por campo |
O método lê Title, Author, Subject, Keywords, Creator, Producer, CreationDate e ModDate através do PDFium, de modo a que as cadeias em PDFDocEncoding e UTF-16 usem a mesma descodificação Unicode do documento em uso
A inspeção do dicionário bruto regista se cada chave Info existe independentemente do seu valor, pelo que uma cadeia explicitamente vazia não é tratada como chave ausente
Title e Subject exigem um valor rdf:Alt etiquetado como x-default; Author exige um rdf:Seq com exatamente um valor; os restantes mapeamentos exigem uma propriedade simples encontrada pelo URI de namespace e pelo nome local
Os valores de texto comparam-se por pontos de código Unicode exatos; as datas comparam-se como componentes locais quando nenhum dos valores tem fuso horário, ou como instantes UTC quando ambos os valores transportam fuso horário
TPdfAMetadataState distingue os estados de não exigido, equivalente, XMP em falta, tipo RDF errado, valor em desconformidade, data Info inválida e data XMP inválida
O método é apenas de leitura, exige um documento ativo e não altera 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');