ByteScout Cloud API Server - DOC To PDF API - Python - Convert DOC To PDF From URL Asynchronously - ByteScout

ByteScout Cloud API Server – DOC To PDF API – Python – Convert DOC To PDF From URL Asynchronously

  • Home
  • /
  • Articles
  • /
  • ByteScout Cloud API Server – DOC To PDF API – Python – Convert DOC To PDF From URL Asynchronously

How to convert DOC to PDF from URL asynchronously for DOC to PDF API in Python using ByteScout Cloud API Server

ByteScout Cloud API Server is the ready to deploy Web API Server that can be deployed in less than thirty minutes into your own in-house Windows server (no Internet connnection is required to process data!) or into private cloud server. Can store data on in-house local server based storage or in Amazon AWS S3 bucket. Processing data solely on the server using built-in ByteScout powered engine, no cloud services are used to process your data!.

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

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

ConvertDocToPdfFromUrlAsynchronously.py

      
""" Cloud API asynchronous "PDF To Text" job example. Allows to avoid timeout errors when processing huge or scanned PDF documents. """ import os import requests # pip install requests import time import datetime # Please NOTE: In this sample we're assuming Cloud Api Server is hosted at "https://localhost". # If it's not then please replace this with with your hosting url. # Base URL for PDF.co Web API requests BASE_URL = "https://localhost" # Direct URL of source DOC file. SourceFileURL = "https://bytescout-com.s3.amazonaws.com/files/demo-files/cloud-api/doc-to-pdf/sample.docx" # Destination PDF file name DestinationFile = ".\\result.pdf" # (!) Make asynchronous job Async = True def main(args = None): convertDocToPDF(SourceFileURL, DestinationFile) def convertDocToPDF(uploadedFileUrl, destinationFile): """Converts DOC To PDF using PDF.co Web API""" # Prepare URL for 'DOC To PDF' API request url = "{}/pdf/convert/from/doc?async={}&name={}&url={}".format( BASE_URL, Async, os.path.basename(destinationFile), uploadedFileUrl ) # Execute request and get response as JSON response = requests.get(url, headers={ "content-type": "application/octet-stream" }) if (response.status_code == 200): json = response.json() if json["error"] == False: # Asynchronous job ID jobId = json["jobId"] # URL of the result file resultFileUrl = json["url"] # Check the job status in a loop. # If you don't want to pause the main thread you can rework the code # to use a separate thread for the status checking and completion. while True: status = checkJobStatus(jobId) # Possible statuses: "working", "failed", "aborted", "success". # Display timestamp and status (for demo purposes) print(datetime.datetime.now().strftime("%H:%M.%S") + ": " + status) if status == "success": # Download result file r = requests.get(resultFileUrl, stream=True) if (r.status_code == 200): with open(destinationFile, 'wb') as file: for chunk in r: file.write(chunk) print(f"Result file saved as \"{destinationFile}\" file.") else: print(f"Request error: {response.status_code} {response.reason}") break elif status == "working": # Pause for a few seconds time.sleep(3) else: print(status) break else: # Show service reported error print(json["message"]) else: print(f"Request error: {response.status_code} {response.reason}") def checkJobStatus(jobId): """Checks server job status""" url = f"{BASE_URL}/job/check?jobid={jobId}" response = requests.get(url) if (response.status_code == 200): json = response.json() return json["status"] else: print(f"Request error: {response.status_code} {response.reason}") return None 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:

Tutorials:

prev
next