Cloud API – HTML To PDF – VB.NET – Convert Web Page To PDF From URL Asynchronously

  • Home
  • /
  • Articles
  • /
  • Cloud API – HTML To PDF – VB.NET – Convert Web Page To PDF From URL Asynchronously

Cloud API – HTML To PDF – VB.NET – Convert Web Page To PDF From URL Asynchronously


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

' Cloud API asynchronous "Web Page to PDF" job example.
' Allows to avoid timeout errors when processing huge or scanned PDF documents.

Module Module1

	' (!) If you are getting '(403) Forbidden' error please ensure you have set the correct API_KEY

	' The authentication key (API Key).
	' Get your own by registering at
	Const API_KEY As String = "***********************************"

	' URL of web page to convert to PDF document.
	Const SourceUrl As String = ""
	' Destination PDF file name
	Const DestinationFile As String = ".\result.pdf"
	' (!) 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 `Web Page to PDF` 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 PDF file that will available after the job completion
				Dim resultFileUrl 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 PDF file
						webClient.DownloadFile(resultFileUrl, DestinationFile)

						Console.WriteLine("Generated PDF file saved as ""{0}"" file.", DestinationFile)
						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 = "" + 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