【问题标题】:iTextSharp - "Do you want to save" prompt when closing pdfiTextSharp - 关闭 pdf 时提示“是否要保存”
【发布时间】:2016-03-05 18:42:42
【问题描述】:

我一直在尝试使用 iTextSharp 创建 pdf,但遇到了问题。关闭 pdf 后,Acrobat Reader 会提示用户“是否要保存更改...”

这似乎是一个常见问题,可能有十几个关于堆栈溢出的问题,以及许多不同的解决方案。我尝试了尽可能多的解决方案,但无济于事。

我的代码如下。我使用 MemoryStream 和 PdfWriter 创建了一个带有一段的简单 pdf。然后我将 MemoryStream 作为数组返回,然后使用 response.outputstream 将文件下载到客户端。

protected void lnkbtnDownloadPdf_Click(object sender, EventArgs e)
{
        var Pdf = DownloadPdf();
        Response.ContentType = "application/pdf;";
        Response.AddHeader("Content-Disposition", "attachment; filename=" + "test.pdf");
        Response.OutputStream.Write(Pdf, 0, Pdf.Length);
        Response.OutputStream.Close();
}


public static byte[] DownloadPdf()
{
    using (MemoryStream ms = new MemoryStream())
    {
        Document doc = new Document(PageSize.LETTER.Rotate());
        PdfWriter writer = PdfWriter.GetInstance(doc, ms);
        doc.Open();
        doc.Add(new Paragraph("testtesttesttesttesttestesttest"));
        doc.Close();
        writer.Close();
        return ms.ToArray();
    }
}

我已经试过了 - iTextSharp-generated PDFs now cause Save dialog in Adobe Reader X - 我仍然得到保存对话框。

我也尝试过实现这一点 - Using iTextSharp to write data to PDF works great, but Acrobat Reader asks 'Do you want to save changes' when closing file - 但我的程序不使用压模。 Bruno 在该链接上有一个答案,并提到了 acroform 字典,但我不确定如何从该字典中删除条目,并且提出问题的用户无论如何都无法解决他们的问题。

我需要使用 PdfWriter。我还研究过使用文件流而不是这里提到的输出流 - iTextSharp-generated PDFs cause save dialog when closing - 但我需要将 pdf 下载到客户端而不是将其保存在磁盘上。

【问题讨论】:

  • 除了提供数组之外,您是否尝试过将数组写入文件?然后检查提供的版本是否与保存的版本一样?
  • 我明天绝对可以试一试。您能否详细说明“服务”是什么意思?对不起,我很茫然。
  • Serving 就像从您的网络服务返回,即您已经尝试过的。
  • 另外,您是否在投放前清除 HTTP 缓冲区?
  • 一种或另一种方式,Adobe Acrobat/Reader 正在为您“修复”您的 PDF,当它修复时它总是要求您保存。大多数情况下,罪魁祸首是 PDF 二进制流之前或之后的额外位

标签: c# itextsharp


【解决方案1】:

一段时间后,我发现这根本不是 Itext 问题(据我所知)。

我加了-

Response.End();

-在 lnkbtnDownloadPdf_Click 函数的末尾,它起作用了。当用户关闭我的 PDF 时,Acrobat 不再要求用户保存。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-14
    • 1970-01-01
    • 1970-01-01
    • 2011-11-07
    • 2012-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多