Hi,
We have encountered a bug in the PDF Parser DLL which was shipped.
Error Description:
VeryPDF_PDFParserSDK_GetHandle functions accepts parameter f and l where you can specify the first and the last page range of the report. VeryPDF returns handle id Which can be used to fetch the pages in subsequent calls.
Problem is everything works fine if the first page is 1. But if you have first page as 3 and last page as 10 it would return last 3 pages as blank (8,9,10). Similarly if you have first page as 4 and last page as 11 it returns the last 4 pages Blank.
Sample Application To Reproduce the Error:
Download The Sample application which I have created to reproduce the error.
XXXXXXXXXXXXXXXXXXXX
Steps To Reproduce the Error:
1. Enter Pages 3 and 10 and click the Load Pages Button As shown in the below Screenshot. It will populate the image box with the 3rd Page. It returns Handle which you can use to Load Pages 3 to 10.
2. Now Enter 7 below the show Page and it would correctly load the 7th Page.
3. Now Again Enter 8 page and Click Show Page. It would return Blank.Same thing would happen for pages 9,10.
4. So When you try to use the Handleid for loading last 3 pages(8,9,10) it would return Blank.
Let me know if you have any Questions.
===================================================
Could you please relate to the error as descried below?
===================================================
I have double checked your source code, it seems there has a misunderstanding in the index parameter of VeryPDF_PDFParserSDK_GetImageLength() and VeryPDF_PDFParserSDK_GetTextInfoLength() functions, you need deliver the index instead of page number to the VeryPDF_PDFParserSDK_GetImageLength() and VeryPDF_PDFParserSDK_GetTextInfoLength() functions, for example, if you render the page range "-f 3 -l 6" and if you wish display the page 3, you need deliver index "0" to VeryPDF_PDFParserSDK_GetImageLength() function, then you will get the image data of page 3, please refer to following modified source code,
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
txtFrm.Text = "3"
txtTo.Text = "6"
Dim strInPDFFile As String
strInPDFFile = Application.StartupPath() & "\tst1.pdf"
Handleid = VeryPDF_PDFParserSDK_GetHandle(strInPDFFile, "-$ XXXXXXXXXXXXX -f " & txtFrm.Text & " -l " & txtTo.Text)
Dim nImageIndex As Integer = 0
//If you wish display page 3, please set nImageIndex to 0
//If you wish display page 4, please set nImageIndex to 1
//If you wish display page 5, please set nImageIndex to 2
//If you wish display page 6, please set nImageIndex to 3
//and so on
iImageDataLen = VeryPDF_PDFParserSDK_GetImageLength(Handleid, nImageIndex)
iTextInfoLen = VeryPDF_PDFParserSDK_GetTextInfoLength(Handleid, nImageIndex)
ReDim btImgData(iImageDataLen)
ReDim btTxtData(iTextInfoLen)
VeryPDF_PDFParserSDK_GetImageData(Handleid, nImageIndex, btImgData(0), iImageDataLen)
VeryPDF_PDFParserSDK_GetTextInfoData(Handleid, nImageIndex, btTxtData(0), iTextInfoLen)
sLogMsg = System.Text.Encoding.ASCII.GetString(btTxtData)
PageMap = sLogMsg
PageImage = btImgData
PictureBox1.Image = Byte2Image(PageImage)
End Sub
Public Function Byte2Image(ByVal ByteArr() As Byte) As Image
Dim NewImage As Image = Nothing
Dim ImageStream As MemoryStream
Try
If ByteArr.GetUpperBound(0) > 0 Then
ImageStream = New MemoryStream(ByteArr)
NewImage = Image.FromStream(ImageStream)
Else
NewImage = Nothing
End If
Catch ex As Exception
NewImage = Nothing
End Try
Byte2Image = NewImage
End Function
VeryPDF
====================================================
Continuous to previous email, I have attached a new piece of source code at below, you can use following code to read all images which returned by VeryPDF_PDFParserSDK_GetHandle() function,
====================================================
Continuous to previous email, I have attached a new piece of source code at below, you can use following code to read all images which returned by VeryPDF_PDFParserSDK_GetHandle() function,
Private Sub Memory_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Memory.Click
Dim nRet As Integer
Dim strOptions As String
Dim strInPDFFile As String
Dim strOutFile As String
Dim nPDFSDKLib As Integer
Dim nCount As Integer
Dim nItem As Integer
Dim vecImgData() As Byte = Nothing
Dim vecTxtData() As Byte = Nothing
Dim nImageDataLen As Integer
Dim nTextInfoLen As Integer
Dim strLogMsg As String
strInPDFFile = Application.StartupPath() & "\example1.pdf"
strOptions = "-$ XXXXXXXXXXXXXXXXXXXX"
nPDFSDKLib = VeryPDF_PDFParserSDK_GetHandle(strInPDFFile, strOptions)
nCount = VeryPDF_PDFParserSDK_GetCount(nPDFSDKLib)
For nItem = 0 To nCount - 1
nImageDataLen = VeryPDF_PDFParserSDK_GetImageLength(nPDFSDKLib, nItem)
nTextInfoLen = VeryPDF_PDFParserSDK_GetTextInfoLength(nPDFSDKLib, nItem)
ReDim vecImgData(nImageDataLen)
ReDim vecTxtData(nTextInfoLen)
VeryPDF_PDFParserSDK_GetImageData(nPDFSDKLib, nItem, vecImgData(0), nImageDataLen)
VeryPDF_PDFParserSDK_GetTextInfoData(nPDFSDKLib, nItem, vecTxtData(0), nTextInfoLen)
strLogMsg = System.Text.Encoding.ASCII.GetString(vecTxtData)
MsgBox(strLogMsg.Substring(0, 300))
Next nItem
VeryPDF_PDFParserSDK_Free(nPDFSDKLib)
nPDFSDKLib = Nothing
End Sub
You can use VeryPDF_PDFParserSDK_GetCount() function to get the count of returned items, then you can read each item in a loop, the item index for following functions is start from "0", this item index is not equal to page number in PDF file, please notice this difference,
VeryPDF_PDFParserSDK_GetTextInfoLength()
VeryPDF_PDFParserSDK_GetImageLength()
VeryPDF_PDFParserSDK_GetImageData()
VeryPDF_PDFParserSDK_GetTextInfoData()
VeryPDF
Related Posts
Related posts:
Convert EMF, Metafile, WMF files to Flash SWF files
Printing with colors in PCL to PDF Converter product
Convert pxl to jpg and set page size via command line?
Convert prn to bmp and rotate page via command line?
A guide on how to convert PDF to JPE
PDF Invoice Creator :Free
Office file converter for Mac and Linux
Scan to Word in batch