AxAcroPdf控件-重新加载PDF时出现问题



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

  1. 将更改保存到PDF后,在同一路径上再次使用LoadFile()方法时,控件将变为空白(未显示PDF)
  2. 如果我将控件的src属性设置为路径,我会收到一条消息,说文件不是以"%PDF-"开头的。但确实如此。我用Word打开它,它清楚地以%PDF-开头。它也没有损坏或锁定
  3. 我甚至尝试过关闭、处理或将其设置为Nothing,然后像第一次加载时那样完全重新实例化它——没有效果。窗口关闭并显示,控件为空白
  4. 通过上述方法加载不同的文件具有相同的效果-空白

使用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

你知道这里可能出了什么问题吗?

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

相关内容

  • 没有找到相关文章

最新更新