1

PDF レンダリングの問題が原因で、髪をかきむしったり頭をぶつけたりしています。IE 7以下を使用した場合、すべて問題ありません。しかし、今年は最新のブラウザー IE 8 以降のサポートを開始し、すべてが暴走しました。

実際、私は iframe を使用してインライン PDF をレンダリングしましたが、これは IE7 以下で正常に動作しますが、現在 IE8 を使用している場合、多くのユーザーが iframe 内で PDF が空白として表示される (灰色のボックスが表示されるだけ) と不満を言い始めました。次のコードを使用して、pdf を iframe にレンダリングしました。

 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ドキュメントを作成し、サーバーに保存しました。しかし、このアプローチでも2つの問題があります。

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