By incorporating supplemental resources directly into the PDF, it consolidates all relevant information in a single file, making it easier to organize, share, and archive. This feature enables users to seamlessly share supporting documents, images, or multimedia elements, eliminating the need for separate file transfers or external links. It streamlines communication, improves efficiency, and ensures that recipients have convenient access to all the necessary resources within the PDF itself. In this article, you will learn how to attach files to a PDF document in Python with the help of Spire.PDF for Python.
Install Spire.PDF for Python
This scenario requires Spire.PDF for Python and plum-dispatch v1.7.4. They can be easily installed in your Windows through the following pip command.
pip install Spire.PDF
If you are unsure how to install, please refer to this tutorial: How to Install Spire.PDF for Python on Windows
Background Knowledge
There are generally two types of attachments in PDF, namely document level attachment and annotation attachment. Both are supported by Spire.PDF for Python. The table below lists the differences between them.
Attachment type | Represented by | Definition |
Document level attachment | PdfAttachment class | A file attached to a PDF at the document level won't appear on a page, but can be viewed in the "Attachments" panel of a PDF reader. |
Annotation attachment | PdfAnnotationAttachment class | A file attached as an annotation can be found on a page or in the "Attachment" panel. An Annotation attachment is shown as a paper clip icon on the page; reviewers can double-click the icon to open the file. |
Attach Files to a PDF Document in Python
To attach files to PDFs at the document level, you first need to create a PdfAttachment object based on an external file, and then you can add it to a PDF document using the PdfDocument.Attachments.Add() method. The following are the detailed steps.
- Create a PdfDocument object.
- Load a PDF document using PdfDocument.LoadFromFile() method.
- Create a PdfAttachment object based on an external file.
- Add the attachment to the document using PdfDocument.Attachments.Add() method.
- Save the document to a different PDF file using PdfDocument.SaveToFile() method.
- Python
from spire.pdf import * from spire.pdf.common import * # Create a PdfDocument object doc = PdfDocument() # Load a sample PDF file doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Input.pdf") # Create PdfAttachment objects based on external files attachment_one = PdfAttachment("C:\\Users\\Administrator\\Desktop\\Data.xlsx") attachment_two = PdfAttachment("C:\\Users\\Administrator\\Desktop\\logo.png") # Add the attachments to PDF doc.Attachments.Add(attachment_one) doc.Attachments.Add(attachment_two) # Save to file doc.SaveToFile("output/Attachment.pdf")
Attach Files as Annotations in PDF in Python
An annotation attachment is represented by the PdfAttachmentAnnotation class. Create an instance of this class, specify its attributes such as bounds, flag and text, and then add it to a specified page using the PdfPageBase.AnnotationsWidget.Add() method.
Below are the steps to attach files as annotations in PDF using Spire.PDF for Python.
- Create a PdfDocument object.
- Load a PDF document using PdfDocument.LoadFromFile() method.
- Get a specific page to add annotation through PdfDocument.Pages[] property.
- Create a PdfAttachmentAnnotation object based on an external file.
- Add the annotation attachment to the page using PdfPageBase.AnnotationsWidget.Add() method.
- Save the document to a different PDF file using PdfDocument.SaveToFile() method.
- Python
from spire.pdf import * from spire.pdf.common import * # Create a PdfDocument object doc = PdfDocument() # Load a sample PDF file doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Input.pdf") # Get a specific page page = doc.Pages[1] # Draw a string on PDF str = "Here is the report:" font = PdfTrueTypeFont("Times New Roman", 16.0, PdfFontStyle.Bold, True) x = 50.0 y = doc.Pages[0].ActualSize.Height - 300.0 page.Canvas.DrawString(str, font, PdfBrushes.get_Blue(), x, y) # Create a PdfAttachmentAnnotation object based on an external file data = Stream("C:\\Users\\Administrator\\Desktop\\Data.xlsx") size = font.MeasureString(str); bounds = RectangleF((x + size.Width + 5.0), y, 10.0, 15.0) annotation = PdfAttachmentAnnotation(bounds, "Report.docx", data); # Set color, flag, icon and text of the annotation annotation.Color = PdfRGBColor(Color.get_Blue()) annotation.Flags = PdfAnnotationFlags.Default annotation.Icon = PdfAttachmentIcon.Graph annotation.Text = "Click to open the file" # Add the attachment annotation to PDF page.AnnotationsWidget.Add(annotation) # Save to file doc.SaveToFile("output/AnnotationAttachment.pdf")
Apply for a Temporary License
If you'd like to remove the evaluation message from the generated documents, or to get rid of the function limitations, please request a 30-day trial license for yourself.