VB Fax - Retrieve an Inbound Fax Image

Download the VB fax (VB6) code samples.

In this sample, the GetImageChunkEx2 method retrieves an image for a received (inbound) VB fax.

To retrieve the fax image, you need the fax message ID and file size, both of which are retrieved using the method GetList2.

In the VB6 fax code sample below, you retrieve a fax image in multiple chunks (the chunk size is configurable):

Attribute VB_Name = "GetImageChunkEx2"
Option Explicit
'
' This sample gets an entire VB fax message from the Inbound queue and saves it to a local file.
' Message is being retrieved in chunks, to optimize performance.
' A typical usage would be to call this method for each item retreived by the GetList2() method
'
Const MessageID As Long = 30476113   ' Specify ID of message to be retrieved to get it
Const ChunkSize As Long = 10000   '10KB per request
Const OutputFileName As String = "c:\temp\" & MessageID & ".PDF"    'Path of local file

 
Public Sub Invoke()
'
' Loop until no more data
'
Dim lngReturnedSize As Long
Dim lngStartFrom As Long: lngStartFrom = 0
Dim Chunk() As Byte
Dim Buffer() As Byte
 
Do While True
    If Not GetChunk(lngStartFrom, Chunk) Then Exit Do
    Buffer = Utils.ConcatByteArrays(Buffer, Chunk)
    lngStartFrom = lngStartFrom + UBound(Chunk) + 1
    'MsgBox "Received so far: " & CStr(lngStartFrom) & " bytes"
Loop
 
Utils.WriteBinaryFile OutputFileName, Buffer
MsgBox "Saved as " & OutputFileName
End Sub
 
Private Function GetChunk(ByVal From As Long, ByRef Chunk() As Byte) As Boolean
 
Dim objEnv As PocketSOAP.CoEnvelope
Dim objHttp As PocketSOAP.HTTPTransport
 
Set objEnv = New PocketSOAP.CoEnvelope
objEnv.EncodingStyle = ""
objEnv.SetMethod "GetImageChunkEx2", "http://www.interfax.net"
objEnv.SerializerFactory.ElementMapping "buffer", "", "base64Binary", ""
Set objHttp = New PocketSOAP.HTTPTransport
objHttp.SOAPAction = "http://www.interfax.net/GetImageChunkEx2"
 
objEnv.Parameters.Create "Username", Main.Username, objEnv.URI
objEnv.Parameters.Create "Password", Main.Password, objEnv.URI
objEnv.Parameters.Create "MessageID", MessageID, objEnv.URI
objEnv.Parameters.Create "MarkAsRead", False, objEnv.URI
objEnv.Parameters.Create "ChunkSize", ChunkSize, objEnv.URI
objEnv.Parameters.Create "From", From, objEnv.URI
 
objHttp.send "http://ws.interfax.net/Inbound.asmx", objEnv.Serialize
objEnv.EncodingStyle = ""
objEnv.parse objHttp
 
Dim Result As PocketSOAP.CoSoapNode
Set Result = objEnv.Parameters.Item(0)  'entire response

Dim ResultCode As PocketSOAP.CoSoapNode
Set ResultCode = Result.Nodes.itemByName("ResultCode", objEnv.URI)
If CLng(ResultCode.Value) <> 0 Then
    MsgBox "Bad ResultCode=" & ResultCode.Value
    GetChunk = False
    End
End If
 
Dim SourceFileType As PocketSOAP.CoSoapNode
Set SourceFileType = Result.Nodes.itemByName("SourceFileType", objEnv.URI)
 
Dim Buffer As PocketSOAP.CoSoapNode
Set Buffer = Result.Nodes.itemByName("buffer", objEnv.URI)
 
' Decoding is done at the application level, as PowerSoap does not seem to de-serialize the response.
GetChunk = Utils.DecodeBase64(Buffer.Value, Chunk)
 
Set objEnv = Nothing
Set objHttp = Nothing
 
End Function
</vb>