由于 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>
所以,请帮帮我,这非常紧急。
如果上述任何一种方法都有效,那我很好。