This tutorial shows how to convert files to another format using the LEADTOOLS Cloud Services in a Python application.
Overview | |
---|---|
Summary | This tutorial covers how to make Convert requests and process the results using the LEADTOOLS Cloud Services in a Python application. |
Completion Time | 30 minutes |
Project | Download tutorial project (2 KB) |
Platform | LEADTOOLS Cloud Services API |
IDE | Visual Studio |
Language | Python |
Development License | Download LEADTOOLS |
Try it in another language |
|
Be sure to review the following sites for information about LEADTOOLS Cloud Services API.
Create an Account with LEADTOOLS Hosted Cloud Services to obtain both Application ID and Password strings.
LEADTOOLS Service Plan offerings:
Service Plan | Description |
---|---|
Free Trial | Free Evaluation |
Page Packages | Prepaid Page Packs |
Subscriptions | Prepaid Monthly Processed Pages |
To further explore the offerings, refer to the LEADTOOLS Hosted Cloud Services page.
To obtain the necessary Application ID and Application Password, refer to Create an Account and Application with the LEADTOOLS Hosted Cloud Services.
With the project created and the requests
package added, coding can begin.
In the Solution Explorer, open Convert.py
. Add the following variables at the top.
Note
Where it states
Replace with Application ID
andReplace with Application Password
, be sure to place your Application ID and Password accordingly.
# Simple script to make and process the results of a Convert request to the LEADTOOLS CloudServices.
import requests
import sys
import time
# Enums in python
from enum import Enum
class FormatsEnum(Enum):
Png = 1
Jpeg = 2
Tiff = 3
Pdf = 4
Pdfa = 5
PdfImage = 6
PdfImageOverText = 7
PdfaImageOverText = 8
Docx = 9
DocxFramed = 10
Rtf = 11
RtfFramed = 12
Txt = 13
TxtFramed = 14
servicesUrl = "https://azure.leadtools.com/api/"
# The application ID.
appId = "Replace with Application ID"
# The application password.
password = "Replace with Application Password"
# The first page in the file to mark for processing
firstPage = 1
# Sending a value of -1 will indicate to the services that the rest of the pages in the file should be processed.
lastPage = -1
# Enum corresponding to the output format for the file. For the purposes of this script, we will be converting a file to tif.
fileFormat = FormatsEnum.Tiff.value
# We will be uploading the file via a URl. Files can also be passed by adding a PostFile to the request. Only 1 file will be accepted per request.
# The services will use the following priority when determining what a request is trying to do GUID > URL > Request Body Content
fileURL = 'http://demo.leadtools.com/images/cloud_samples/leadtools.pdf'
baseConversionUrl = '{}Conversion/Convert?firstPage={}&lastPage={}&format={}&fileurl={}'
formattedConversionUrl = baseConversionUrl.format(
servicesUrl, firstPage, lastPage, fileFormat, fileURL)
Add a request.post
call to process the Convert
request and capture the GUID from the resulting request.text
, then provide it to the next section.
This sends a Convert
request to the LEADTOOLS Cloud Services API, if successful, a unique identifier (GUID) will be returned and then a query using this GUID will be made.
request = requests.post(formattedConversionUrl, auth=(appId, password))
# If uploading a file alongside the HTTP request
#baseConversionUrl ='{}Conversion/Convert?firstPage={}&lastPage={}&format={}'
#formattedConversionUrl = baseConversionUrl.format(
# servicesUrl,firstPage, lastPage)
#file = {'file' : open('path/to/file', 'rb')}
#request = requests.post(
# formattedRecognitionUrl, auth=(appId, password), files = file)
if request.status_code != 200:
print("Error sending the conversion request")
print(request.text)
sys.exit()
# Grab the GUID from the Request
guid = request.text
print("Unique ID returned by the services: " + guid + "\n")
Next, create a Query
request that utilizes the GUID provided by Convert
request.
If successful the response will contain all the request data in JSON format.
# Now, we need to Query the results
print("Now Querying Results....")
baseQueryUrl = '{}Query?id={}'
formattedQueryUrl = baseQueryUrl.format(servicesUrl, guid)
while True: # Poll the services to determine if the request has finished processing
request = requests.post(formattedQueryUrl, auth=(appId, password))
returnedData = request.json()
if returnedData['FileStatus'] != 100 and returnedData['FileStatus'] != 123:
break
time.sleep(5)
print("File finished processing with file status: " +
str(returnedData['FileStatus']))
if returnedData['FileStatus'] != 200:
sys.exit()
Finally, parse the json data into a readable format.
try:
print("Results:")
returnedJson = returnedData['RequestData']
for requestObject in returnedJson:
print("Service Type: " + requestObject['ServiceType'])
if requestObject['ServiceType'] == 'Conversion':
print("Returned URLS:")
for url in requestObject['urls']:
print(url)
except Exception as e:
print("Failed to Parse JSON")
print(e)
Run the project by pressing F5, or by selecting Debug -> Start Debugging.
If the steps were followed correctly, the console appears and the application displays a link to the converted file from the returned JSON data.
This tutorial showed how to convert files via the LEADTOOLS Cloud Services API.