iTextSharp - “Do you want to save” prompt when closing pdf
我一直试图用ITextSharp创建一个PDF文件,但遇到了一个问题。关闭PDF后,Acrobat Reader会提示用户"是否要保存更改…"
这似乎是一个常见的问题,可能有很多关于栈溢出的问题,以及许多不同的解决方案。我已经尝试了尽可能多的解决方案,但都无济于事。
我的代码在下面。我用memoryStream和pdfWriter创建了一个简单的PDF文件,其中有一个段落。然后我将memoryStream作为数组返回,然后使用response.outputstream将文件下载到客户机。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | 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生成的PDF现在在Adobe Reader X中生成了"保存"对话框-但我仍然得到了"保存"对话框。
我也尝试过实现这一点——使用ITextSharp将数据写入PDF非常好,但Acrobat Reader在关闭文件时会询问"是否要保存更改"——但我的程序不使用stamper。布鲁诺在这个链接上有一个答案,也提到了AcroForm字典,但是我不知道如何从字典中删除条目,并且提出问题的用户无论如何都无法解决他们的问题。
我需要使用pdfwritter。我还研究了使用文件流而不是这里提到的输出流-ITextSharp生成的PDF在关闭时会导致保存对话框-但我需要将PDF下载到客户端,而不是保存到磁盘上。
一段时间后,我发现这根本不是一个iText问题(据我所知)。
我添加了-
1 | Response.End(); |
-在lnkbtndownloadpdf的末尾,单击函数,它就工作了。Acrobat在关闭我的PDF时不再要求用户保存。