function InspectPdfAMetadata: TPdfAMetadataReport;
| Result | Ein TPdfAMetadataReport mit XMP-Verfügbarkeit, Parse-Fehlertext, Abweichungsfeldern und acht feldweisen Vergleichen |
Die Methode liest Title, Author, Subject, Keywords, Creator, Producer, CreationDate und ModDate über PDFium, sodass PDFDocEncoding- und UTF-16-Zeichenketten dieselbe Unicode-Dekodierung wie das geöffnete Dokument verwenden
Die rohe Dictionary-Inspektion erfasst, ob jeder Info-Schlüssel unabhängig von seinem Wert existiert, sodass eine explizit leere Zeichenkette nicht als fehlender Schlüssel gilt
Title und Subject verlangen einen rdf:Alt-Wert mit dem Tag x-default; Author verlangt ein rdf:Seq mit genau einem Wert; die übrigen Zuordnungen verlangen eine einfache Eigenschaft, die über Namespace-URI und lokalen Namen gefunden wird
Textwerte werden nach exakten Unicode-Codepunkten verglichen; Datumsangaben werden als lokale Komponenten verglichen, wenn kein Wert eine Zeitzone besitzt, oder als UTC-Zeitpunkte, wenn beide Werte Zeitzonen tragen
TPdfAMetadataState unterscheidet die Zustände nicht erforderlich, äquivalent, XMP fehlt, falscher RDF-Typ, Wertabweichung, ungültiges Info-Datum und ungültiges XMP-Datum
Die Methode ist rein lesend, erfordert ein aktives Dokument und ändert weder den PDFium- noch den Quellzustand
var Report: TPdfAMetadataReport;
Report := Pdf1.InspectPdfAMetadata;
if Report.HasXmpPacket and not Report.IsEquivalent then
ShowMessage(IntToStr(Length(Report.Comparisons)) + ' fields inspected');