我正在开发一个 ASP.NET 应用程序,它通过 ASP.NET Web API 向客户端返回 iTextSharp (v4.1.6) PDF。这适用于我尝试过的所有桌面 PC 浏览器,例如 IE9、Firefox、Opera 和 Safari。下面的代码演示了发回 PDF 的响应。
该应用程序还可以在运行 IOS 6.1 的 Ipad 2 上作为 Web 应用程序运行。当我在 iPad 上返回 PDF 时,我收到以下错误。
此页面包含以下错误:第 1 行第 1 列的错误:文档为空 第 1 行第 1 列的错误:编码错误
这发生在 iPad 上的以下任何一种情况下:Web App 模式、Safari 或 Google Chrome。当我将 PDF 从我的台式电脑通过电子邮件发送到我的 iPad 时,PDF 本身确实可以打开并查看良好,因此它不认为 PDF 本身存在问题,而是我将其提供给客户的方式存在问题。
任何帮助将不胜感激 - 我已经坚持了很长一段时间!
生成 PDF 的 API 代码:
[HttpPost]
public string GetReport(JObject jObject)
{
var context = HttpContext.Current;
using (var ms = new MemoryStream())
{
MyPDF.Generate(ms); // Fills the Memory Stream with the iTextSharp PDF
var data = ms.ToArray();
var response = context.Response;
response.Cache.SetCacheability(HttpCacheability.NoCache);
response.ContentType = "application/octlet-stream";
response.AddHeader("content-length", data.Length.ToString(CultureInfo.InvariantCulture));
response.AddHeader("content-disposition", "attachment; filename=" + fileName.Replace(" ", string.Empty) + ".pdf");
response.BinaryWrite(data);
context.ApplicationInstance.CompleteRequest();
}
return string.Empty;
}