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>
だから、私を助けてください、それは非常に緊急です.
上記の方法のいずれかが機能する場合、私はそれで問題ありません。