【问题标题】:Itextsharp download PDFItextsharp 下载 PDF
【发布时间】:2017-02-07 03:01:11
【问题描述】:

此代码完美运行。问题是按钮位于控制更新面板内,这会导致一些问题。但我已经修好了,现在可以工作了。

 Dim documentoPDF As New Document(PageSize.A4, 10, 10, 10, 10)
        Dim memStream As MemoryStream = New MemoryStream()
        Dim writer As PdfWriter = PdfWriter.GetInstance(documentoPDF, memStream)
        documentoPDF.Open()

        Dim Paragraph1 As Paragraph = New Paragraph("First paragraph")
        documentoPDF.Add(New Paragraph(Paragraph1))

        documentoPDF.Close()

        Dim bytesInStream As Byte() = memStream.ToArray()
        memStream.Close()

        'Dim memorystreaam As MemoryStream = New MemoryStream(bytesInStream)

        Response.Clear()
        Response.ContentType = "application/pdf"
        Response.AddHeader("content-disposition", "attachment;filename=FileName.pdf")
        Response.Buffer = True
        Response.Cache.SetCacheability(HttpCacheability.NoCache)
        'Response.OutputStream.Write(memStream.GetBuffer(), 0, memStream.GetBuffer().Length)

        Response.BinaryWrite(bytesInStream)
        Response.End()

【问题讨论】:

  • 您的代码在哪些方面不起作用? IE。预期行为是什么,观察到的行为是什么?
  • @mkl 看,我实现了代码,问题是 pdf 从来没有下载到我的电脑上。
  • 当您尝试下载时究竟会发生什么?您是否检查了所有相关的日志文件?您是否在调试器中运行过代码?您是否使用过 tcpdump 工具来捕获和分析 Web 流量?
  • 您是否使用此代码来响应 ajax 请求?如果是,请不要认为它会起作用......
  • 我看到有人使用writer.CloseStream = False,但我不明白他们为什么要这样做。作为 iText 的原始开发人员,我想知道您为什么添加该行。是故意的吗?还有,memoryStream的目的是什么?

标签: asp.net vb.net pdf model-view-controller itext


【解决方案1】:

您似乎没有将 PDF 文档保存到某处的流中。

Dim bin() As Byte
Dim stream As MemoryStream = New MemoryStream
documentoPDF.Save(stream, false)
bin = stream.ToArray

Response.ClearHeaders
Response.Clear
Response.Buffer = true
Response.ContentType = "application/pdf"
Response.AddHeader("content-length", bin.Length.ToString)
Response.AddHeader("content-disposition", "attachment; filename="""" + txtnombre.Text + ".pdf, "")
Response.OutputStream.Write(bin, 0, bin.Length)

【讨论】:

  • :( 不起作用 documentoPDF 是文档并且没有 .save 功能我将内存流之类的参数放在 pdfwriter 中,所以没有必要保存它。我没有错误调试,但页面看起来一直没有发生任何事情。我替换了初始代码,我将在其他评论中发布 Dim memStream As MemoryStream = New MemoryStream() Dim writer As PdfWriter = PdfWriter.GetInstance(documentoPDF, memStream)
猜你喜欢
  • 2011-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多