1

我正在向我的页面发送 PDF,并且我想在用户尝试保存 PDF 文档时设置默认名称。

我正在使用 ItextSharp 和 VB.Net

Using s As MemoryStream = New MemoryStream()
  Dim Pdf_Writer As PdfWriter = PdfWriter.GetInstance(DocumentPDF, s)
  DocumentPDF.Open()

  DocumentPDF.SetMargins(10.0F, 10.0F, 10.0F, 10.0F)

  DocumentPDF.Add(Table)

  DocumentPDF.Close()

  contentX= s.ToArray()
  HttpContext.Current.Response.Buffer = False
  HttpContext.Current.Response.Clear()
  HttpContext.Current.Response.ClearContent()
  HttpContext.Current.Response.ClearHeaders()
  HttpContext.Current.Response.ContentType = "Application/pdf"
  HttpContext.Current.Response.BinaryWrite(contentX)
  HttpContext.Current.Response.Flush()
  HttpContext.Current.Response.End()
End Using

.

Response.AddHeader("content-disposition", @"attachment;filename=""MyFile.pdf""");

这样下载文件(是的,它设置了默认名称),但我只想显示文件,如果用户想保存它,那么......保存它(使用默认名称)

如何为我的 PDF 文档设置默认名称?

4

2 回答 2

1

试试这个代码:

Response.ContentType = "application/pdf"
Response.AppendHeader("Content-Disposition", "inline; filename="filename".pdf")
Response.TransmitFile("filename")
Response.End()
于 2013-07-18T08:37:02.417 回答
0

我在通过处理程序页面 (.ashx) 传递 PDF 时遇到了类似的问题。无论我在 HTTP 标头中设置什么,当我使用此 url 时,从浏览器 PDF 阅读器保存总是会将文件名设置为“getpdf.pdf”。

http://www.thepdfchef.com/handlers/getpdf.ashx?id=5188p

所以我所做的是在处理程序路径之后添加一个转义字符串,然后在其末尾添加查询字符串,如下所示:

http://www.thepdfchef.com/handlers/getpdf.ashx/Wellbeing%20And%20Domestic%20Assistance%20From%20John%20Paul?id=5188p

您应该检查无效字符并删除任何可能导致名称危险的字符。

于 2013-07-06T11:33:59.837 回答