2021年8月4日水曜日

PDFを直リンクしない(ダウンロードしない)で表示する方法

 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 件のコメント:

コメントを投稿