1

由于 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>

所以,请帮帮我,这非常紧急。

如果上述任何一种方法都有效,那我很好。

4

0 回答 0