由于PDF渲染问题,我一直在拔头发并四处打我的脑袋。当我们使用IE 7&下面。但是今年我们开始支持最新的浏览器IE 8&以上,一切都很疯狂。
实际上我使用iframe来渲染内联PDF,这适用于IE7&下面但是现在使用IE8,许多用户开始抱怨PDF在iframe中显示为空白(只显示一个灰色框)。我使用以下代码在iframe中呈现pdf。
Response.Clear();
Response.ClearHeaders();
Response.ClearContent();
Response.Buffer = false;
Response.ContentType = "application/pdf";
Response.AddHeader("content-length", doc.Length.ToString());
Response.AddHeader("content-disposition", "inline; filename=\"" + fileName + "\"");
Response.AddHeader("Accept-Header", doc.Length.ToString());
Response.BinaryWrite(doc);
Response.Flush();
Response.Close();
Response.End();
但它没有正常工作。然后在谷歌搜索之后我想到使用标签来渲染pdf。所以,为此我首先创建了pdf文档并存储在服务器中。但在这种方法中我也有两个问题:
1)文件未正确创建。请参阅以下方法,我尝试使用byte []数组创建PDF文件。此外,这在我的本地完美地工作,但在服务器中它两个方法创建1 KB文件。我认为它无法写入整个byte []数组。
a) System.IO.File.WriteAllBytes(fileFullPath, doc);
b) using (System.IO.Stream stream = new System.IO.FileStream(fileFullPath, System.IO.FileMode.Create))
{
stream.Write(attestationDoc, 0, attestationDoc.Length);
}
2)这是我正在使用的对象标签,但问题是,只有当文件驻留在项目的根目录中时才有效,如果文件位于任何其他项目文件夹中,则它不起作用。实际上我尝试使用Server.MapPath但它无法正常工作。
<object data="data\test.pdf" type="application/pdf" width="860px" height="470px">
<embed src="data\test.pdf" type="application/pdf"/>
</object>
所以,请帮助我,这很紧急。
如果上述方法中的任何一种方法有效,我很好。