1

在我的 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

有什么想法可能是这里的问题吗?

4

1 回答 1

0

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

于 2013-08-21T21:12:21.683 回答