PDF.co Web API - PDF To Image API - VB.NET - Convert PDF To PNG From URL Asynchronously - ByteScout

PDF.co Web API – PDF To Image API – VB.NET – Convert PDF To PNG From URL Asynchronously

  • Home
  • /
  • Articles
  • /
  • PDF.co Web API – PDF To Image API – VB.NET – Convert PDF To PNG From URL Asynchronously

PDF.co Web API – PDF To Image API – VB.NET – Convert PDF To PNG From URL Asynchronously


Imports System.IO
Imports System.Net
Imports System.Threading
Imports Newtonsoft.Json.Linq

‘ Cloud API asynchronous “PDF To PNG” job example.
‘ Allows to avoid timeout errors when processing huge or scanned PDF documents.

Module Module1

‘ The authentication key (API Key).
‘ Get your own by registering at https://app.pdf.co/documentation/api
Const API_KEY As String = “***********************************”

‘ Source PDF file
Const SourceFileUrl As String = “https://s3-us-west-2.amazonaws.com/bytescout-com/files/demo-files/cloud-api/pdf-to-image/sample.pdf”
‘ Comma-separated list of page indices (or ranges) to process. Leave empty for all pages. Example: ‘0,2-5,7-‘.
Const Pages As String = “”
‘ PDF document password. Leave empty for unprotected documents.
Const Password As String = “”
‘ (!) Make asynchronous job
Const Async As Boolean = True

Sub Main()

‘ Create standard .NET web client instance
Dim webClient As WebClient = New WebClient()

‘ Set API Key
webClient.Headers.Add(“x-api-key”, API_KEY)

‘ Prepare URL for `PDF To PNG` API call
Dim query As String = Uri.EscapeUriString(String.Format(

‘ Execute request
Dim response As String = webClient.DownloadString(query)

‘ Parse JSON response
Dim json As JObject = JObject.Parse(response)

If json(“error”).ToObject(Of Boolean) = False Then

‘ Asynchronous job ID
Dim jobId As String = json(“jobId”).ToString()
‘ URL of generated JSON file available after the job completion; it will contain URLs of result PNG files.
Dim resultJsonFileUrl As String = json(“url”).ToString()

‘ 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.
Dim status As String = CheckJobStatus(jobId) ‘ Possible statuses: “InProgress”, “Failed”, “Aborted”, “Finished”.

‘ Display timestamp and status (for demo purposes)
Console.WriteLine(DateTime.Now.ToLongTimeString() + “: ” + status)

If status = “Finished” Then

‘ Download JSON file as string
Dim jsonFileString As String = webClient.DownloadString(resultJsonFileUrl)

Dim resultFilesUrls As JArray = JArray.Parse(jsonFileString)

‘ Download generated PNG files
Dim page As Integer = 1
For Each token As JToken In resultFilesUrls

Dim resultFileUrl As String = token.ToString()
Dim localFileName As String = String.Format(“.\page{0}.png”, page)

webClient.DownloadFile(resultFileUrl, localFileName)

Console.WriteLine(“Downloaded “”{0}””.”, localFileName)
page = page + 1


Exit Do

ElseIf status = “InProgress” Then

‘ Pause for a few seconds


Exit Do

End If


End If

Catch ex As WebException
End Try


Console.WriteLine(“Press any key…”)

End Sub

Function CheckJobStatus(jobId As String) As String

Using webClient As WebClient = New WebClient()

Dim url As String = “https://api.pdf.co/v1/job/check?jobid=” + jobId

Dim response As String = webClient.DownloadString(url)
Dim json As JObject = JObject.Parse(response)

Return Convert.ToString(json(“Status”))

End Using

End Function

End Module


  Click here to get your Free Trial version of the SDK