【问题标题】:From VB pdf byte array to a (Javascript,HTML5) pdf从 VB pdf 字节数组到 (Javascript,HTML5) pdf
【发布时间】:2015-04-17 17:37:51
【问题描述】:

我尝试使用字节数组中的 Javascript 在网络浏览器中显示(或下载)一个 .pdf。我从这篇文章构建了我的代码:

 http://stackoverflow.com/questions/20401006/show-a-pdf-stream-in-a-new-window 

我收到此错误:

ERROR Request URL Too Long HTTP Error 414. The request URL is too long.

我的代码使用 $ajax 调用 VB WebMethod 并接收 base64String (.pdf)。 .pdf 由 SSRS 报表服务器生成。

VB

Public Function testPDF(data As String) As String

    Try
        Dim strReportUser As String = Bidon.utilisateur
        Dim strReportUserPW As String = Bidon.motDePasse
        Dim strReportUserDomain As String = Bidon.domaine
        Dim sTargetURL As String = "an URL" + data
        Dim req As HttpWebRequest = WebRequest.Create(sTargetURL)
        req.PreAuthenticate = True
        req.Credentials = New System.Net.NetworkCredential(strReportUser, strReportUserPW, strReportUserDomain)
        Dim HttpWResp As HttpWebResponse = req.GetResponse()
        Dim fStream As Stream = HttpWResp.GetResponseStream()
        Dim fileBytes As Byte() = ReadFully(fStream)
        Return System.Convert.ToBase64String(fileBytes)
    Catch ex As Exception
        Console.WriteLine(System.Reflection.MethodBase.GetCurrentMethod().Name + "[exception : " + ex.ToString() + "]")
    End Try

    Return Nothing
End Function

Public Function ReadFully(input As Stream) As Byte()

    Using MemoryStream As New MemoryStream()

        input.CopyTo(MemoryStream)
        Return MemoryStream.ToArray()

    End Using
End Function

JS

success: function (reponse) {
    var pdfwin = window.open(escape(reponse.d),"Titre","");
}

【问题讨论】:

    标签: javascript vb.net html pdf bytearray


    【解决方案1】:

    如果不使用 .aspx,我找不到任何解决方案……就是这样。我希望有一天它可以帮助某人。

    .ASPX

    <!-- inside body -->
            <%testPDF(a number)%>
    

    VB

    Partial Class AfficherPdf
    Inherits System.Web.UI.Page
    
    Public Function testPDF(data As String) As Stream
    
        Dim autorise As Boolean = True ' remplacer par un appel de méthode validant si l'utilisateur est autorisé à imprimer ce pdf
    
        If (autorise) Then 'un utilisateur ne doit pas pouvoir imprimer des factures auquelles il n'a pas accès
            Try
                Dim strReportUser As String = Bidon.utilisateur
                Dim strReportUserPW As String = Bidon.motDePasse
                Dim strReportUserDomain As String = Bidon.domaine
                Dim sTargetURL As String = "... An URL ..." + data
                Dim req As HttpWebRequest = WebRequest.Create(sTargetURL)
                req.PreAuthenticate = True
                req.Credentials = New System.Net.NetworkCredential(strReportUser, strReportUserPW, strReportUserDomain)
                Dim HttpWResp As HttpWebResponse = req.GetResponse()
                Dim fStream As Stream = HttpWResp.GetResponseStream()
                Dim fileBytes As Byte() = ReadFully(fStream)
                Response.Clear()
                Response.ContentType = "application/pdf"
                Response.AddHeader(
                "content-length", fileBytes.Length.ToString())
                Response.BinaryWrite(fileBytes)
                Response.Flush()
                Response.End()
                Return fStream
            Catch ex As Exception
                Console.WriteLine(System.Reflection.MethodBase.GetCurrentMethod().Name + "[exception : " + ex.ToString() + "]")
            End Try
        End If
    
        Return Nothing
    End Function
    
    Public Function ReadFully(input As Stream) As Byte()
    
        Using MemoryStream As New MemoryStream()
    
            input.CopyTo(MemoryStream)
            Return MemoryStream.ToArray()
    
        End Using
    End Function
    

    结束类

    JS

    window.open("AfficherPdf.aspx","_blank");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-05
      • 1970-01-01
      • 1970-01-01
      • 2011-12-04
      • 1970-01-01
      • 2010-11-10
      相关资源
      最近更新 更多