property AttachmentRelationship[Index: Integer]: WString; // read only
Связанные файлы в PDF 2.0 (ISO 32000-2 §7.11.4) помечают каждую спецификацию файла именем /AFRelationship, которое говорит, как встроенный файл соотносится с содержимым, к которому он прикреплён: Source, Data, Alternative, Supplement, EncryptedPayload, FormData, Schema или Unspecified (Table 43). Счета PDF/A-3 и ZUGFeRD / Factur-X полагаются на эту запись, чтобы пометить машиночитаемую XML-полезную нагрузку
Свойство читает запись через нативный экспорт FPDFAttachment_GetAFRelationship и возвращает исходный токен имени как строку Unicode. Пустая строка возвращается, когда в спецификации файла нет записи /AFRelationship, когда запись не является именем или когда загруженный pdfium.dll старше этого экспорта (см. AttachmentRelationshipFeaturesAvailable)
Свойство доступно только для чтения. Чтобы прикреплять файлы с relationship, используйте код записи на стороне Pascal в FPdfAssocFiles — он выдаёт те же токены имён
| Index | Integer. Слот вложения с отсчётом от нуля. Должно выполняться 0 <= Index < AttachmentCount; при других значениях возникает EPdfError (Incorrect attachment index) |
/EmbeddedFiles; связанный файл, на который ссылаются исключительно из массива /AF, через это свойство недоступен (см. AttachmentCount)Relationship в TPdfAttachmentMetadata, а TryGetAnnotationFileAttachment заполняет аналогичное поле для аннотаций с файловыми вложениями
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;