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

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.

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

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

AddTextByFindingTargetCoordinates.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. # You can also upload your own file into PDF.co and use it as url. Check "Upload File" samples for code snippets: https://github.com/bytescout/pdf-co-api-samples/tree/master/File%20Upload/ SourceFileUrl = "https://bytescout-com.s3.amazonaws.com/files/demo-files/cloud-api/pdf-edit/sample.pdf" # Search string. SearchString = 'Notes' # 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" # Text annotation params Type = "annotation" Text = "Some notes will go here... Some notes will go here.... Some notes will go here....." FontName = "Times New Roman" FontSize = 12 Color = "FF0000" 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): import json """Add text using PDF.co Web API""" # Prepare requests params as JSON # See documentation: https://apidocs.pdf.co payload = json.dumps({ "name": os.path.basename(destinationFile), "password": Password, "url": SourceFileUrl, "annotations": [{ "text": Text, "x": left, "y": top + 25, "fontname": FontName, "size": FontSize, "color": Color, "pages": Pages }] }) # 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=payload, 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: