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