AxAcroPdf控件 - 重新加载PDF的问题

时间:2013-08-20 15:22:03

标签: vb.net pdf axacropdf

在我的Windows窗体应用程序中使用axAcroPdfLib.AxAcroPDF控件时,我无法重新加载相同的图像。最初使用LoadFile()方法加载图像。

  1. 在保存对PDF的更改后,在同一路径上再次使用LoadFile()方法时,控件变为空白(未显示PDF)。
  2. 如果我将控件的src属性设置为路径,则会收到一条消息,指出该文件不以'%PDF-'开头。但确实如此。我用Word打开它,它显然以%PDF-开头。它也没有腐败或被锁定。
  3. 我甚至尝试过关闭,处理或将其设置为Nothing,然后像我第一次加载时那样完全重新实例化 - 没有效果。窗口关闭并显示控件空白。
  4. 通过上述方法加载不同的文件具有相同的效果 - 空白。
  5. 使用Windows 7 64位,VS 2010,VB.NET。

    代码如下。现在,我只想在它上画一条简单的线。

    Private Sub _btnBarCode_Click(ByVal sender As Object, ByVal e As EventArgs) Handles _btnBarCode.Click
        Dim pdfReader As iTextSharp.text.pdf.PdfReader = Nothing
    
        Try
            pdfReader = New iTextSharp.text.pdf.PdfReader(File.ReadAllBytes(_path))
    
            Using fs As New FileStream(_path, FileMode.Create, FileAccess.Write)
                Using pdfStamper = New iTextSharp.text.pdf.PdfStamper(pdfReader, fs)
                    Dim pdfPage As iTextSharp.text.pdf.PdfContentByte = pdfStamper.GetOverContent(1)
    
                    Using barCodeForm As New FBarCode
                        barCodeForm.Barcode = _barCode
                        If (barCodeForm.ShowDialog(Me) = DialogResult.OK) Then
    
                            Dim screenBarCode As Point = barCodeForm.Location
                            Dim clientBarCode As Point = Point.op_Subtraction(PointToClient(screenBarCode), New Point(0, 50)) '_pdfControl.Location '_imgView.Location
                            clientBarCode = New Point(10, 50)
    
                            Dim barcodeImg As New Bitmap(200, 50)
                            Using gc As Graphics = Graphics.FromImage(barcodeImg)
                                gc.DrawLine(Pens.Red, New Point(10, 10), New Point(20, 20))
                                'barCodeForm._barCode.DrawBarCode(gc, clientBarCode)
                            End Using
    
                            Dim convert As ImageConverter = New ImageConverter()
                            Dim bmpBytes As Byte() = DirectCast(convert.ConvertTo(barcodeImg, GetType(Byte())), Byte())
                            Dim thisImage As iTextSharp.text.Image = iTextSharp.text.Image.GetInstance(bmpBytes)
                            thisImage.SetAbsolutePosition(clientBarCode.X, clientBarCode.Y)
                            thisImage.SetDpi(72, 72)
    
                            pdfPage.AddImage(thisImage)
    
                            rdrAdobePdf.LoadFile(_path) 'Blank pdf
                            'rdrAdobePdf.src = _path '"Does not begin with '%PDF-' (even though it does)
    
                            'Me.Close()
                            '_myParent.ResetPdfViewer()
                            'ReloadPdfViewer(Me.Barcode)
    
                        End If
                    End Using
                End Using
            End Using
    
        Catch ex As Exception
            MessageBox.Show(ex.Message, "An error occurred.")
            Return
        Finally
            If Not pdfReader Is Nothing Then pdfReader.Close()
        End Try
    
    End Sub
    

    任何想法可能会出现问题吗?

1 个答案:

答案 0 :(得分:0)

通过从单击方法中获取重新加载代码解决了问题。把它放在另一个点击方法解决了问题 - 不知道为什么。我使用的代码只运行了.LoadFile,然后是Form.Show()Form.Activate()