PDFium Delphi Component Docs

Attachment 속성

컴포넌트: TPdf  ·  유닛: PDFium
지정한 0 기반 인덱스의 문서 수준 embedded file raw byte payload를 읽거나 바꿉니다. 각 slot은 PDF 1.7 specification 7.11절에 정의된 PDF EmbeddedFiles name tree의 한 entry에 해당합니다

Syntax

property Attachment[Index: Integer]: TBytes;

Description

PDF 문서에는 원본 스프레드시트, 워드 문서, 첨부 인보이스, 서명된 XML 페이로드, ZIP 묶음, 심지어 다른 PDF까지 어떤 부속 파일이든 EmbeddedFiles 이름 트리라는 문서 수준 컨테이너 안에 넣어 둘 수 있습니다. 각 항목은 PDF 파일 스펙 딕셔너리로, 그 스트림이 첨부 파일의 실제 바이트를 담습니다. PDFium Delphi Component는 이 트리를 0부터 AttachmentCount - 1까지의 평면적인 0 기반 인덱스로 노출합니다

Attachment[Index]를 읽으면 첨부 파일의 디코딩된 바이트 내용이 TBytes 배열로 돌아옵니다 — 사용자가 클립 아이콘을 눌러 첨부 파일을 저장할 때 다른 PDF 리더가 추출하는 바이트와 정확히 같은 것입니다. 반환된 바이트는 이미 압축이 풀려 있으므로 디스크에 바로 쓰거나 스트림으로 흘려보내거나, 첨부가 PDF라면 다른 TPdf 인스턴스에 다시 먹일 수도 있습니다

쓰기는 기존 첨부 슬롯의 파일 스트림을 그 자리에서 교체합니다. 슬롯이 이미 존재해야 하며 새 항목을 추가하려면 먼저 CreateAttachment를 사용하세요. 쓰기는 메모리에 버퍼링되고 SaveAs로 문서를 저장해야 비로소 반영됩니다

Parameters

IndexInteger. EmbeddedFiles 이름 트리에서의 0 기반 위치입니다. 0 <= Index < AttachmentCount를 만족해야 합니다. 인덱스는 AttachmentName과 AttachmentType이 알려 주는 것과 같으므로, 0..AttachmentCount - 1을 순회하면 각 첨부를 정확히 한 번씩 방문합니다

Remarks

Example

var
  I: Integer;
  Data: TBytes;
  OutPath: string;
begin
  Pdf1.LoadFromFile('with-attachments.pdf');
  for I := 0 to Pdf1.AttachmentCount - 1 do
  begin
    Data := Pdf1.Attachment[I];
    OutPath := 'extracted\' + Pdf1.AttachmentName[I];
    TFile.WriteAllBytes(OutPath, Data);
    Memo1.Lines.Add(Format('%s (%s, %d bytes)',
      [Pdf1.AttachmentName[I], Pdf1.AttachmentType[I], Length(Data)]));
  end;
end;

See Also

AttachmentCount, AttachmentName, AttachmentType, CreateAttachment, DeleteAttachment