C# iTextSharp-“信息技术”;您想保存吗;关闭pdf时提示

C# iTextSharp-“信息技术”;您想保存吗;关闭pdf时提示,c#,itextsharp,C#,Itextsharp,我一直在尝试使用iTextSharp创建pdf,但遇到了一个问题。关闭pdf后,Acrobat Reader会提示用户“是否要保存更改…” 这似乎是一个常见的问题,关于堆栈溢出可能有十几个问题,以及同样多的不同解决方案。我已经尝试了尽可能多的解决办法,但都没有用 我的代码如下。我使用MemoryStream和PdfWriter创建了一个包含一个段落的简单pdf。然后,我将MemoryStream作为数组返回,然后使用response.outputstream将文件下载到客户端 protected

我一直在尝试使用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();
    }
}
我已经试过了--但我仍然可以看到“保存”对话框

我也尝试过实现它--但是我的程序没有使用母版。Bruno在这个链接上有一个答案,同时提到了acroform字典,但我不确定如何从该字典中删除条目,提出问题的用户无论如何都无法解决他们的问题


我需要使用PdfWriter。我还研究了使用filestream而不是这里提到的outputstream,但是我需要将pdf下载到客户端,而不是保存在磁盘上

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

我补充说-

Response.End();

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

除了为数组提供服务外,您是否还尝试过将数组写入文件?然后检查所提供的版本是否与保存的版本相同?明天我肯定会尝试一下。你能详细说明一下“服务”是什么意思吗?对不起,我不知道该怎么办。从您的web服务返回时,即您已经尝试过的内容。另外,您在提供服务之前是否清除了HTTP缓冲区?以某种方式,Adobe Acrobat/Reader正在为您“修复”您的PDF,当它修复时,它总是要求您保存。罪魁祸首通常是PDF二进制流之前或之后的额外位