【发布时间】:2016-08-24 17:52:57
【问题描述】:
我有一个控制器,它使用 pdfsharp 构建 PDF 文件并将其作为对 GET 请求的文件响应返回,如下所示:
[HttpGet]
public ActionResult downloadImageResultsPDF()
{
// Create a new PDF document
PdfDocument document = new PdfDocument();
document.Info.Title = "myhealth.pdf";
// Create an empty page
PdfPage page = document.AddPage();
// Get an XGraphics object for drawing
XGraphics gfx = XGraphics.FromPdfPage(page);
//XPdfFontOptions options = new XPdfFontOptions(PdfFontEncoding.Unicode, PdfFontEmbedding.Always);
// Create a font
XFont font = new XFont("Times New Roman", 20, XFontStyle.BoldItalic);
// Draw the text
gfx.DrawString("Hello, World!", font, XBrushes.Black,
new XRect(0, 0, page.Width, page.Height),
XStringFormats.Center);
MemoryStream stream = new MemoryStream();
document.Save(stream, false);
byte[] myFile = stream.ToArray();
Response.ClearHeaders();
Response.AddHeader("Content-Disposition", "filename='myhealth.pdf'");
return File(myFile, "application/pdf");
}
我正在使用剃须刀调用此控制器:
<a href="@Url.Action("downloadImageResultsPDF","Home")">Download</a>
在桌面上的 Chrome、Firefox 和 IE11、iOS 上的 Chrome 和 Safari 以及 Android 6.0 上的 Firefox 上似乎一切正常
我无法让它在 Android 上的 Chrome 或 Android 的默认浏览器上运行。下载似乎开始了,但我得到“下载不成功”。该文件在下载文件夹中显示为“无标题”。
我也尝试使用八位字节流作为文件类型,并使用 .PDF 扩展名(而不是 .pdf)。我尝试在文件名中添加/删除引号,但仍然没有。我也尝试在 content-disposition 标头中使用附件和内联。
我还尝试提供静态 pdf 文件。
似乎没有任何效果。有什么想法吗?
【问题讨论】:
-
是 Response.AddHeader("Content-Disposition", "attachment; filename='myhealth.pdf'");
标签: c# android model-view-controller http-headers pdf-generation