How to add text and images to PDF in Python and PDF.co Web API

If you want to learn more then this tutorial will show how to add text and images to PDF in Python

This sample source code below will display you how to add text and images to PDF in Python. PDF.co Web API is the flexible Web API that includes full set of functions from e-signature requests to data extraction, OCR, images recognition, pdf splitting and pdf splitting. Can also generate barcodes and read barcodes from images, scans and pdf and you can use it to add text and images to PDF with Python.

These Python code samples for Python guide developers to speed up coding of the application when using PDF.co Web API. Just copy and paste the code into your Python application’s code and follow the instructions. Further improvement of the code will make it more robust.

You can download free trial version of PDF.co Web API from our website to see and try many others source code samples for Python.

On-demand (REST Web API) version:
 Web API (on-demand version)

On-premise offline SDK for Windows:
 60 Day Free Trial (on-premise)

AddImageByFindingTargetCoordinates.py

      
import os import requests # pip install requests # The authentication key (API Key). # Get your own by registering at https://app.pdf.co/documentation/api API_KEY = "**************************************" # Base URL for PDF.co Web API requests BASE_URL = "https://api.pdf.co/v1" # Direct URL of source PDF file. SourceFileUrl = "https://bytescout-com.s3.amazonaws.com/files/demo-files/cloud-api/pdf-edit/sample.pdf" # Search string. SearchString = 'Your Company Name' # Comma-separated list of page indices (or ranges) to process. Leave empty for all pages. Example: '0,2-5,7-'. Pages = "" # PDF document password. Leave empty for unprotected documents. Password = "" # Destination PDF file name DestinationFile = ".//result.pdf" # Image params Type = "image" Width = 119 Height = 32 ImageUrl = "https://bytescout-com.s3.amazonaws.com/files/demo-files/cloud-api/pdf-edit/logo.png" def main(args = None): # First of all try to find Text within input PDF file res = findTextWithinPDF(SourceFileUrl, SearchString) if res: addImageToPDF(DestinationFile, res['top'], res['left']) else: print("No result found!") def findTextWithinPDF(sourceFile, searchText): # Prepare URL for PDF text search API call # See documentation: https://app.pdf.co/documentation/api/1.0/pdf/find.html retVal = dict() # Prepare requests params as JSON # See documentation: https://apidocs.pdf.co parameters = {} parameters["url"] = sourceFile parameters["searchString"] = searchText url = "{}/pdf/find".format(BASE_URL) # Execute request and get response as JSON response = requests.post(url, data=parameters, headers={"x-api-key": API_KEY}) if (response.status_code == 200): json = response.json() if json["error"] == False: # print(json) if json["body"]: retVal['top'] = json["body"][0]['top'] retVal['left'] = json["body"][0]['left'] else: # Show service reported error print(json["message"]) else: print(f"Request error: {response.status_code} {response.reason}") return retVal def addImageToPDF(destinationFile, top, left): """Add image using PDF.co Web API""" # Prepare requests params as JSON # See documentation: https://apidocs.pdf.co parameters = {} parameters["name"] = os.path.basename(destinationFile) parameters["password"] = Password parameters["pages"] = Pages parameters["url"] = SourceFileUrl parameters["type"] = Type parameters["x"] = top + 300 parameters["y"] = left parameters["width"] = Width parameters["height"] = Height parameters["urlimage"] = ImageUrl # Prepare URL for 'PDF Edit' API request url = "{}/pdf/edit/add".format(BASE_URL) # Execute request and get response as JSON response = requests.post(url, data=parameters, headers={"x-api-key": API_KEY}) if (response.status_code == 200): json = response.json() if json["error"] == False: # Get URL of result file resultFileUrl = json["url"] # Download result file r = requests.get(resultFileUrl, stream=True) with open(destinationFile, 'wb') as file: for chunk in r: file.write(chunk) print(f"Result file saved as \"{destinationFile}\" file.") else: # Show service reported error print(json["message"]) else: print(f"Request error: {response.status_code} {response.reason}") if __name__ == '__main__': main()

VIDEO

ON-PREMISE OFFLINE SDK

Get 60 Day Free Trial

See also:

ON-DEMAND REST WEB API

Get Your API Key

See also:

Related Samples: