AxAcroPdf Control - Проблемы с перезагрузкой PDF

При использовании элемента управления axAcroPdfLib.AxAcroPDF в моем приложении Windows Forms я не могу перезагрузить тот же образ. Изображение изначально загружается с помощью метода LoadFile().

  1. При повторном использовании метода LoadFile() по тому же пути ПОСЛЕ сохранения изменений в PDF элемент управления становится пустым (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

Есть идеи, в чем может быть проблема здесь?

1 ответ

Решение

Проблема была решена путем получения кода перезагрузки из этого метода клика. Помещение в другой метод щелчка решило проблему - не уверен почему. Код, который я использовал, только что побежал .LoadFile, затем Form.Show() а также Form.Activate(),

Другие вопросы по тегам