none
la funcion "generar" no devuelve un valor en todas las rutas de acceso del codigo RRS feed

  • Pregunta

  • Imports iTextSharp.text
    Imports iTextSharp.text.pdf
    Imports System.IO
    Public Class _Default
        Inherits System.Web.UI.Page
        Dim FntHelvNg, FntHelv As iTextSharp.text.pdf.BaseFont

        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

            If Not Page.IsPostBack Then

                Dim parametro As String = Request.QueryString("parametro")
                Dim inf As Byte()

                inf = generar(parametro)
                Response.ClearContent()
                Response.ClearHeaders()
                pintaPDF(inf, "Primer ejemplo")
                Response.BinaryWrite(inf)

            Else

            End If

        End Sub
        Public Function generar(ByVal parametro As String) As Byte()


            Dim filebuffer As Byte()
            Dim objecpluma As PdfWriter
            Dim obDocument As New Document(PageSize.LETTER, 10, 10, 10, 10)
            Dim object_pms As New MemoryStream
            Dim object_pcb As PdfContentByte


            Try
                objecpluma = PdfWriter.GetInstance(obDocument, object_pms)
                obDocument.Open()
                object_pcb = objecpluma.DirectContent


                obDocument.NewPage()
                object_pcb.BeginText()
                FntHelvNg = FontFactory.GetFont(FontFactory.HELVETICA_BOLD, iTextSharp.text.Font.DEFAULTSIZE, iTextSharp.text.Font.BOLD).BaseFont
                object_pcb.SetColorFill(BaseColor.ORANGE)
                object_pcb.SetFontAndSize(FntHelvNg, 30)
                object_pcb.ShowTextAligned(PdfContentByte.ALIGN_CENTER, parametro & "ejemplo de prueva", 320, 428, 0)
                object_pcb.EndText()

                'forzamos vaciamiento el buffer.
                objecpluma.Flush()
                'cerramos el documento.
                obDocument.Close()
                'crea el pdf al vuelo.
                filebuffer = object_pms.ToArray

            Catch ex As Exception
                Throw New Exception("Error al generar achivo pdf intente mas tarde (" & ex.Message & ")")
            Finally
                'limpieza
                object_pcb = Nothing
                objecpluma = Nothing
                obDocument = Nothing
            End Try

            Return filebuffer

        End Function
        Public Sub pintaPDF(ByVal filebufer As Byte(), ByVal Nombre As String)
            Try
                Dim NombrePdf = "cred_" & Nombre
                If filebufer IsNot Nothing Then
                    Response.ContentType = "aplication/pdf"
                    Response.AddHeader("content-lengh", filebufer.Length.ToString())
                    Response.AddHeader("content-Disposition", "Filename" & NombrePdf & ".pdf")

                    'using fs  as fileStream = File.Create "C:\testpdf\" & NombrePdf = &". Pdf")
                    '   Fs.Write(Filebufer, 0, filebufer.Length)
                    'End Using

                End If

            Catch ex As Exception
                MsgBox("Error " & ex.Message)
            End Try
        End Sub

    End Class

    jueves, 5 de marzo de 2020 22:49

Todas las respuestas

  • Pues eso que la función generar que tienes no siempre devuelve valor. Si da error no devuelve nada.

    Empieza la función inicializándola a Nothing;

    Public Function generar(ByVal parametro As String) As Byte()


            Dim filebuffer As Byte()
            Dim objecpluma As PdfWriter
            Dim obDocument As New Document(PageSize.LETTER, 10, 10, 10, 10)
            Dim object_pms As New MemoryStream
            Dim object_pcb As PdfContentByte

            generar = Nothing
            Try
          .....


    Saludos, Javier J

    • Propuesto como respuesta Pablo Rubio viernes, 6 de marzo de 2020 18:56
    viernes, 6 de marzo de 2020 11:54