PDFを直リンクしない(ダウンロードしない)で表示する方法
1.html5標準のembedを使用する
例
<embed style="position:absolute; left: 30px; top: 50px;"
width="100%" height="100%"
type="application/pdf"
src="data:application/pdf;base64,---ココにbase64文字列---" />
2.PDF.jsを利用
例
https://mozilla.github.io/pdf.js/examples/
上記のHello World using base64 encoded PDF を使用しました。
1の場合、Android以外はOKでした。
仕方なく2のPDF.jsを使用しましたが、PDF.jsがCJKに対応していないので
PDFにフォントを埋め込んで対応しました。
サーバ側でPDFファイルをBase64に変換する。
using (var fs = new System.IO.FileStream(Pdffile, System.IO.FileMode.Open, System.IO.FileAccess.Read)) {
// ファイルをバイト配列に変換
byte[] bs = new byte[fs.Length];
fs.Read(bs, 0, bs.Length);
fs.Close();
// base64形式に変換
string base64str = System.Convert.ToBase64String(bs);
ViewBag.Base64 = base64str;
}
Razorで @ViewBag.Base64でデータを流し込みます。
PDFを直リンク させると誰でも見れるので、PDFファイルをbase64に変換後
pdf.jsでクライアント側で表示するようにしました。
0 件のコメント:
コメントを投稿