Add File Attachment Annotation From Stream

Contents
[ ]

File attachment annotations allow embedding files as interactive icons within a PDF page. Using a stream-based approach, you can attach files dynamically without relying on a physical file path. This method also supports customizing the annotation’s appearance, including opacity.

  1. Create the PdfContentEditor object.
  2. Bind the input PDF.
  3. Read the Attachment File as a Stream.
  4. Add the File Attachment Annotation.
  5. Save the updated Document.
import aspose.pdf.facades as pdf_facades
import aspose.pydrawing as apd
from io import BytesIO
import sys
from os import path

sys.path.append(path.join(path.dirname(__file__), ".."))

from config import set_license, initialize_data_dir


def add_file_attachment_annotation_from_stream(infile, attachment_file, outfile):
    # Create PdfContentEditor object
    content_editor = pdf_facades.PdfContentEditor()
    # Bind document to PdfContentEditor
    content_editor.bind_pdf(infile)

    with open(attachment_file, "rb") as source_stream:
        attachment_stream = BytesIO(source_stream.read())

    # Create file attachment annotation using stream+opacity overload
    content_editor.create_file_attachment(
        apd.Rectangle(130, 520, 20, 20),
        "Attachment annotation from stream",
        attachment_stream,
        path.basename(attachment_file),
        1,
        "Tag",
        0.75,
    )
    # Save updated document
    content_editor.save(outfile)