Загрузить PDF в MemoryStream в VB.NET

Я использую этот код для чтения данных XFA в мое приложение vb.net. Однако я не могу понять, как загрузить заполненный PDFFrom в приложение.

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

        Dim filePath As String

        filePath = "d:\waiver_testing\test_pdf\rfrprg67.pdf"

        TextBox1.Text = Export(filePath)

    End Sub

Public Shared Function Export(populatedPDFForm As System.IO.Stream) As System.IO.MemoryStream

        '  Exports XFA data from a PDF File
        '  <param name="populatedPDFForm">a readable stream of the PDF with a populated form</param>
        '  <returns>A stream containing the exported XML form data</returns>

        Dim outputStream As New System.IO.MemoryStream()
        Dim reader As New iTextSharp.text.pdf.PdfReader(populatedPDFForm)
        Dim settings As XmlWriterSettings = New XmlWriterSettings
        settings.Indent = True
        'settings.OmitXmlDeclaration = True

        Using writer = XmlWriter.Create(outputStream, settings)
            reader.AcroFields.Xfa.DatasetsNode.WriteTo(writer)
        End Using

        Return outputStream

    End Function

Ошибка на линии: textbox1.text = Export(filePath)

Ошибка: Value type "String" cannot be converted to to "System.IO.Stream"

Кто-нибудь может бросить мне кость?


person turkaffe    schedule 23.02.2015    source источник
comment
возможный дубликат преобразовать строку в поток   -  person Andrew Morton    schedule 23.02.2015


Ответы (1)


Ну, вы не можете присвоить MemoryStream строке. Вам нужно сначала преобразовать его. Например, чтобы прочитать поток как Ascii, вы можете использовать Encoding.ASCII.GetString.
Кроме того, ваша функция Export, похоже, принимает поток в качестве параметра, а не путь к файлу. Чтобы справиться с этим, напишите:

Using inStream As Stream = File.OpenRead(filePath)
  TextBox1.Text = Encoding.ASCII.GetString(Export(inStream).ToArray())
End Using
person Magnus    schedule 23.02.2015