property AttachmentRelationship[Index: Integer]: WString; // read only
Os associated files do PDF 2.0 (ISO 32000-2 §7.11.4) marcam cada file specification com um nome /AFRelationship que indica como o ficheiro incorporado se relaciona com o conteúdo a que está anexado: Source, Data, Alternative, Supplement, EncryptedPayload, FormData, Schema ou Unspecified (Table 43). As faturas PDF/A-3 e ZUGFeRD / Factur-X dependem desta entrada para marcar o payload XML legível por máquina
A propriedade lê a entrada através da exportação nativa FPDFAttachment_GetAFRelationship e devolve o token de nome em bruto como uma string Unicode. Devolve uma cadeia vazia quando a file specification não tem entrada /AFRelationship, quando a entrada não é um nome ou quando o pdfium.dll carregado é anterior à exportação (ver AttachmentRelationshipFeaturesAvailable)
A propriedade é só de leitura. Para anexar ficheiros com uma relationship use o escritor do lado Pascal em FPdfAssocFiles, que emite os mesmos tokens de nome
| Index | Integer. Ranhura de anexo de base zero. Tem de satisfazer 0 <= Index < AttachmentCount; outros valores geram um EPdfError (Incorrect attachment index) |
/EmbeddedFiles têm índice; um ficheiro associado referenciado apenas por um array /AF não é alcançável através desta propriedade (ver AttachmentCount)Relationship de TPdfAttachmentMetadata, e TryGetAnnotationFileAttachment preenche o campo correspondente para anotações de anexo de ficheiro
var
I: Integer;
begin
Pdf1.LoadFromFile('invoice-facturx.pdf');
for I := 0 to Pdf1.AttachmentCount - 1 do
if Pdf1.AttachmentRelationship[I] = 'Alternative' then
SaveInvoiceXml(Pdf1.AttachmentName[I], Pdf1.Attachment[I]);
end;