c#的回应.写pdf不与Android浏览器工作
本文关键字:Android 浏览器 工作 不与 pdf 回应 | 更新日期: 2023-09-27 18:01:27
我目前有很大的问题与android环境与pdf导出。我使用报表查看器控件将报表呈现为字节数组。接下来我将使用response。Binarywrite方法将字节流输出到浏览器。这适用于所有浏览器以及iphone和ipad。然而,它不能在android上工作。
Pdf说它已损坏。当我在记事本中打开pdf时,我看到它正在导出我的整个页面html,而不是由报表查看器生成的字节数组。
代码:
Warning[] warnings;
string[] streamids;
string mimeType;
string encoding;
string extension;
string filename = "attachment; filename=Data.pdf";
byte[] bytes = ReportViewer1.ServerReport.Render(
"PDF", null, out mimeType, out encoding,
out extension,
out streamids, out warnings);
Response.Buffer = true;
Response.Clear();
Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", filename);
Response.BinaryWrite(bytes);
Response.Flush();
Response.End();
你需要从你的页面中删除所有的HTML(设计时)
根据开放的Android issue 11422, content-disposition
的处理不符合rfc。尝试引用文件名值(filename="Data.pdf"
),看看它是否正确保存。
此外,这个StackOverflow答案建议设置mime类型除了内容类型。
如果在此代码之前有任何 HTML,那么这将被发送到浏览器,因为Response.Clear()
只清除缓存的HTML输出,而Response.Buffer
仅在没有HTML输出的情况下工作。
尝试在代码之前阻止任何输出(以某种方式)或将此代码移动到其自己的文件中。然后去掉输出缓冲代码。
PS:这可能工作,也可能不工作;我还没机会测试一下。此外,Android的内容处理有很多问题,所以您可能希望将MIME类型设置为GalacticCowboy建议的