【问题标题】:Merge PDF by streams按流合并 PDF
【发布时间】:2014-12-04 12:09:03
【问题描述】:

我遇到了.ashx 的麻烦,它应该合并一些 PDF 内存流,在最简单的情况下,我只输出一个流,输出 PDF 流已损坏,但是当我调用另一个 ashx 时,它得到在输出中只有单个流有效,我在下面的代码中错过了什么?

我收集内存流:

Dim streamDocument As MemoryStream = FumForm.CreatePdfDocument(context, _fumForm, _formTemplate, _match)
lReader.Add(New PdfReader(streamDocument))

然后我想将所有 pdf 页面附加到另一个 pdf 中:

Dim document As Document = New Document(PageSize.A4, 0, 0, 0, 0)
Dim writer As PdfWriter = PdfWriter.GetInstance(document, context.Response.OutputStream)
document.Open()

For Each r As PdfReader In lReader
  For i As Integer = 1 To r.NumberOfPages
    Dim page As PdfImportedPage = writer.GetImportedPage(r, i)
    document.Add(Image.GetInstance(page))

  Next
Next

Dim filename = String.Format("{0}{1}.pdf", "pippo", "test")
document.Close()
context.Response.Clear()
context.Response.ContentType = "application/pdf"
context.Response.AppendHeader("content-disposition", "inline; filename=""" & filename & """")
context.Response.Flush()
context.Response.Close()
context.Response.End()

CreatePdfDocument 运行良好,并且有这个签名

static public MemoryStream CreatePdfDocument(HttpContext context, 
                                             FumForm form, 
                                             FumFormTemplate formTemplate, 
                                             Match match)

任何帮助将不胜感激

【问题讨论】:

  • 我认为在整个 PDF 已经写入 context.Response.OutputStream 之后清除和更改 context.Response 的标题是一个非常糟糕的主意。
  • @mkl 该死的,你是对的 :) 请添加你的答案
  • @AlexisPigeon ty Alex 我会改进字符串格式,bwt 字符串不是问题;)

标签: asp.net vb.net pdf itextsharp


【解决方案1】:

代码首先将整个PDF写入context.Response.OutputStream

Dim document As Document = New Document(PageSize.A4, 0, 0, 0, 0)
Dim writer As PdfWriter = PdfWriter.GetInstance(document, context.Response.OutputStream)
...
document.Close()

之后清除和更改context.Response的标题

context.Response.Clear()
context.Response.ContentType = "application/pdf"
context.Response.AppendHeader("content-disposition", "inline; filename=""" & filename & """")

为了正常工作,所有响应对象清除和标头操作都必须在数据写入响应流之前完成。

【讨论】:

    猜你喜欢
    • 2019-12-25
    • 2013-05-31
    • 2016-11-20
    • 2015-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多