AxAcroPdf Control - Проблемы с перезагрузкой PDF
При использовании элемента управления axAcroPdfLib.AxAcroPDF в моем приложении Windows Forms я не могу перезагрузить тот же образ. Изображение изначально загружается с помощью метода LoadFile().
- При повторном использовании метода LoadFile() по тому же пути ПОСЛЕ сохранения изменений в PDF элемент управления становится пустым (PDF не отображается).
- Если я установил для свойства src элемента управления путь, я получу сообщение о том, что файл не начинается с "%PDF-". Но это так. Я открыл его с помощью Word, и он явно начинается с%PDF-. Он не поврежден и не заблокирован.
- Я даже пытался закрыть, утилизировать или установить его в Nothing, а затем полностью восстановить его, как я делал в первый раз, когда он загружался - безрезультатно. Окно закрывается и отображается с пустым элементом управления.
- Загрузка другого файла с помощью вышеуказанных методов имеет тот же эффект - пустой.
Использование 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()
,