PDF to Image With Custom Size - VB.NET
PDF Renderer SDK sample in VB.NET demonstrating ‘PDF to Image With Custom Size’
Program.vb
Imports System.Collections.Generic
Imports Bytescout.PDFRenderer
Class Program
Friend Shared Sub Main(args As String())
' Specify Image Generation Inputs
Dim imageGenerationInputs As New ImageGenerationInputs()
imageGenerationInputs.AddCustomSize(width:=320, height:=420)
imageGenerationInputs.AddCustomSize(width:=600, height:=800)
imageGenerationInputs.EnableSaveAsPng = True
imageGenerationInputs.EnableSaveAsJpeg = True
imageGenerationInputs.EnableSaveAsTiff = True
' Create an instance of Bytescout.PDFRenderer.RasterRenderer object and register it.
Dim renderer As New RasterRenderer()
renderer.RegistrationName = "demo"
renderer.RegistrationKey = "demo"
' Load PDF document.
renderer.LoadDocumentFromFile("multipage.pdf")
' Specify Rendering Options to fine tune output generation
Dim RenderingOptions As New RenderingOptions()
RenderingOptions.TIFFCompression = TIFFCompression.None
RenderingOptions.VectorSmoothingMode = GraphicsTransformationQuality.HighQuality
' Loop through each custom size specified
For Each itmCustomSize As KeyValuePair(Of Int32, Int32) In imageGenerationInputs.CustomSizes
' Loop through all pages
For pageIndex As Integer = 0 To renderer.GetPageCount() - 1
' Perform save as PNG, if specified
If imageGenerationInputs.EnableSaveAsPng Then
Dim pngImageName As String = $"output_{itmCustomSize.Key}x{itmCustomSize.Value}_page{pageIndex + 1}.png"
' Save png image per page, per custom size
renderer.Save(
destFileName:=pngImageName,
outputFormat:=RasterImageFormat.PNG,
pageIndex:=pageIndex,
width:=itmCustomSize.Key,
height:=itmCustomSize.Value,
renderingOptions:=RenderingOptions
)
Console.WriteLine(pngImageName + " - Generated")
End If
' Perform save as JPG, if specified
If imageGenerationInputs.EnableSaveAsJpeg Then
Dim jpgImageName As String = $"output_{itmCustomSize.Key}x{itmCustomSize.Value}_page{pageIndex + 1}.jpg"
' Save jpg image per page, per custom size
renderer.Save(
destFileName:=jpgImageName,
outputFormat:=RasterImageFormat.JPEG,
pageIndex:=pageIndex,
width:=itmCustomSize.Key,
height:=itmCustomSize.Value,
renderingOptions:=RenderingOptions
)
Console.WriteLine(jpgImageName + " - Generated")
End If
Next
' Perform save as TIFF, if specified
If imageGenerationInputs.EnableSaveAsTiff Then
Dim tiffImageName As String = $"output_{itmCustomSize.Key}x{itmCustomSize.Value}.tiff"
' Save tiff image per page, per custom size
renderer.SaveMultipageTiff(
destFileName:=tiffImageName,
startPageIndex:=0,
endPageIndex:=renderer.GetPageCount() - 1,
width:=itmCustomSize.Key,
height:=itmCustomSize.Value,
renderingOptions:=RenderingOptions)
Console.WriteLine(tiffImageName + " - Generated")
End If
Next
' Cleanup
renderer.Dispose()
Console.ReadLine()
End Sub
End Class
Class ImageGenerationInputs
#Region "Constructors"
Public Sub New()
CustomSizes = New List(Of KeyValuePair(Of Integer, Integer))()
EnableSaveAsPng = True
End Sub
#End Region
#Region "Properties"
Public Property CustomSizes As List(Of KeyValuePair(Of Int32, Int32))
Public Property EnableSaveAsPng As Boolean
Public Property EnableSaveAsJpeg As Boolean
Public Property EnableSaveAsTiff As Boolean
#End Region
#Region "Methods"
Public Sub AddCustomSize(ByVal width As Int32, ByVal height As Int32)
CustomSizes.Add(New KeyValuePair(Of Integer, Integer)(width, height))
End Sub
#End Region
End Class