constructor TPdfXmpPacket.Create;
class function TPdfXmpPacket.Parse(const Xml: TPdfXmpString): TPdfXmpPacket;
class function TPdfXmpPacket.ParseUtf8(const Data: TBytes): TPdfXmpPacket;
function TPdfXmpPacket.Clone: TPdfXmpPacket;
function TPdfXmpPacket.TryGetSimpleValue(const NamespaceUri, Name: TPdfXmpString; out Value: TPdfXmpString): Boolean;
procedure TPdfXmpPacket.SetSimpleValue(const NamespaceUri, PreferredPrefix, Name, Value: TPdfXmpString);
procedure TPdfXmpPacket.SetArrayValues(const NamespaceUri, PreferredPrefix, Name: TPdfXmpString; ContainerKind: TPdfXmpContainerKind; const Values: array of TPdfXmpString);
procedure TPdfXmpPacket.SetLanguageAlternative(const NamespaceUri, PreferredPrefix, Name, Language, Value: TPdfXmpString);
function TPdfXmpPacket.ToXml(PaddingLength: Integer = -1): TPdfXmpString;
function TPdfXmpPacket.ToUtf8(PaddingLength: Integer = -1): TBytes;
function ReadPdfXmpPacket(const PdfData: TBytes; out PacketData: TBytes): Boolean;
function ParsePdfXmpPacket(const PdfData: TBytes): TPdfXmpPacket;
function WritePdfXmpPacketIncremental(const PdfData: TBytes; Packet: TPdfXmpPacket): TBytes;
function ComparePdfAInfoAndXmp(const Info: TPdfAMetadataValues; Packet: TPdfXmpPacket): TPdfAMetadataReport;
function SynchronizePdfAInfoToXmp(const Info: TPdfAMetadataValues; Packet: TPdfXmpPacket): TPdfAMetadataFields;
function TPdf.ReadXmpPacket: TPdfXmpPacket;
function TPdf.InspectPdfAMetadata: TPdfAMetadataReport;
function TPdf.NormalizePdfAMetadata(Stream: TStream; AllowSignedDocument: Boolean = False): Boolean;
function TPdf.SaveAsWithXmpPacket(Stream: TStream; Packet: TPdfXmpPacket; AllowSignedDocument: Boolean = False): Boolean;
| Type | Description |
|---|---|
EPdfXmpError | Excepție ridicată pentru intrări XMP sau de metadate PDF malformate, nesigure sau nesuportate |
TPdfXmpString / TPdfXmpStrings | Șir XMP Unicode și forma sa de vector dinamic |
TPdfXmpContainerKind | pxckSimple pentru o proprietate simplă, pxckBag pentru un bag fără ordine, pxckSequence pentru o secvență ordonată, pxckAlternative pentru o alternativă de limbi sau pxckResource pentru o resursă imbricată |
TPdfXmpValueKind | Tipul valorii pxvkText, pxvkUri sau pxvkResource pentru o resursă RDF imbricată conservată |
TPdfXmpNamespace / TPdfXmpNamespaces | Perechea namespace Prefix și Uri și forma sa de vector dinamic |
TPdfXmpQualifier / TPdfXmpQualifiers | Calificator cu câmpurile NamespaceUri, Prefix, Name și Value și forma sa de vector dinamic |
TPdfXmpValue / TPdfXmpValues | Valoare tipizată cu câmpurile Kind, Text, Language, Qualifiers și RawXml și forma sa de vector dinamic |
TPdfXmpProperty / TPdfXmpProperties | Proprietate cu câmpurile NamespaceUri, Prefix, Name, ContainerKind, Qualifiers și Values și forma sa de vector dinamic |
TPdfAMetadataValues | Valorile decodificate de PDFium plus un set explicit de prezență pentru cele opt chei Info mapate de ISO 19005-1 |
TPdfAMetadataComparison / TPdfAMetadataReport | Dovezi de tip RDF, valoare și dată per câmp, plus setul agregat de neconcordanțe și starea parsării XMP |
| Member | Description |
|---|---|
Create | Creează un packet vid cu valori implicite sigure pentru înfășurătoare și padding |
Parse / ParseUtf8 | Parsează XML Unicode sau octeți UTF-8 într-un arbore de proprietăți mărginit |
Clone | Returnează o copie profundă independentă a packetului |
NamespaceCount / PropertyCount | Returnează numărul de namespace-uri sau de proprietăți înregistrate |
TryGetProperty | Găsește o proprietate după URI de namespace și nume local și returnează indexul ei |
TryGetSimpleValue | Returnează textul unei proprietăți simple, când aceasta există |
RegisterNamespace | Înregistrează un prefix preferat pentru un URI de namespace, evitând coliziunile de prefixe |
RemoveProperty | Elimină proprietatea potrivită, conștientă de namespace |
SetSimpleValue | Creează sau înlocuiește o proprietate scalară de text |
SetArrayValues | Creează sau înlocuiește un bag, o secvență sau o alternativă din valori de text |
SetLanguageAlternative | Adaugă sau înlocuiește o valoare marcată cu limbă într-un container alternativ |
ToXml / ToUtf8 | Serializează packetul ca XML Unicode sau octeți UTF-8, cu padding opțional |
HasPacketWrapper | Controlează dacă serializarea emite înfășurătoarea de instrucțiuni de procesare a packetului XMP |
Namespaces / Properties | Expun vectorii de namespace-uri și de proprietăți ai packetului pentru inspecție |
PacketEndMode / PacketId | Expun modul de final al înfășurătorii packetului și identificatorul packetului |
PaddingLength | Citește sau stabilește lungimea implicită conservată de padding a serializării |
| Function | Description |
|---|---|
ReadPdfXmpPacket | Extrage octeții stream-ului de metadate dintr-un vector complet de octeți PDF |
ParsePdfXmpPacket | Extrage și parsează packetul de metadate, returnând nil când nu există niciunul |
WritePdfXmpPacketIncremental | Returnează octeți PDF cu un nou stream de metadate și o actualizare de catalog adăugate ca revizie incrementală |
ComparePdfAInfoAndXmp | Compară toate intrările Info prezente din Table 1 din ISO 19005-1 cu proprietățile XMP tipizate corespunzătoare |
SynchronizePdfAInfoToXmp | Repară doar proprietățile mapate în neconcordanță și returnează câmpurile pe care le-a schimbat |
Declarațiile de namespace necunoscute, namespace-urile proprietăților, calificatorii, bag-urile RDF, secvențele, alternativele, resursele URI, resursele imbricate, valorile xml:lang, ID-urile de packet, modurile de final și padding-ul trec round-trip prin arborele de proprietăți
Serializarea atribuie prefixe fără coliziuni, păstrând în același timp prefixele cunoscute ori de câte ori este posibil, și emite UTF-8 fără conversii dependente de locale
ReadXmpPacket returnează nil când un document nu are stream de metadate și respinge sursele progresive incomplete
SaveAsWithXmpPacket scrie un document nativ proaspăt și adaugă o actualizare de metadate și de catalog, apoi înlocuiește atomic destinațiile de tip fișier
Comparația PDF/A rezolvă proprietățile după URI de namespace, cere rdf:Alt cu x-default pentru Title și Subject, cere un rdf:Seq cu un singur element pentru Author și cere valori simple pentru Keywords, Creator, Producer, CreationDate și ModDate
Egalitatea textului este exactă după ce PDFium decodifică șirurile Info în Unicode; egalitatea datelor compară valorile locale potrivite fără zone sau același moment UTC când ambele valori poartă zone
Sincronizarea conservă proprietățile fără legătură, namespace-urile necunoscute și alternativele de limbă non-implicite și emite date XMP UTC canonice când o dată Info poartă un fus orar
AllowSignedDocument=True, pentru că orice actualizare de metadate creează o revizie nesemnată
var
Packet: TPdfXmpPacket;
begin
Packet := Pdf1.ReadXmpPacket;
if Packet = nil then
Packet := TPdfXmpPacket.Create;
try
Packet.SetSimpleValue('http://ns.adobe.com/xap/1.0/', 'xmp', 'CreatorTool', 'PDFium Delphi Component');
Pdf1.SaveAsWithXmpPacket('C:\Output\metadata.pdf', Packet);
finally
Packet.Free;
end;
end;