iTextSharp - "你想保存"关闭pdf时提示

时间:2015-12-01 18:13:52

标签: c# itextsharp

我一直试图使用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下载到客户端而不是将其保存在磁盘上。

1 个答案:

答案 0 :(得分:1)

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

我添加了 -

Response.End();

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