Asp.net Core 配合 PDFObject 和 pdf.js 在浏览器显示pdf文件

Asp.net Core 配合 PDFObject 和 pdf.js 在浏览器直接显示pdf文件

测试环境的浏览器版本:
  1. Chrome :90.0.4430.93(64 位)
  2. FireFox :88.0 (64 位)
  3. Edge :90.0.818.49 (64 位)
  4. IE11(使用pdf.js)显示
  5. Opera :73.0.3856.329 (64 位) / 76.0.4017.94 (64 位)
FireFox 浏览器开启PDF预览

在地址栏输入 → about:config (右上角菜单 中的 选项)
第一步:搜索 browser.preferences.inContent,如图:
browser.preferences.inContent配置项不存在的结果如果没有此配置项,可点击右侧 + 添加配置项

browser.preferences.inContent搜索结果 默认:false如果为 false 点击右侧 左右箭头 将值切换为 true 。
browser.preferences.inContent 将值切换为true第二步:搜索 pdfjs.disabled
pdfjs.disabled搜索结果 默认:true如果为 true 点击右侧切换按钮将值切换为 false

Chrome 开启PDF预览

进入设置面(右上角菜单中的设置或在地址栏输入chrome://settings/),
依次进入 隐私设置和安全性→网站设置→更多内容设置→PDF 文档,使 “下载 PDF 文件,而不是在 Chrome 中自动打开它们”为未开启状态。

或直接在最上面的搜索栏搜索PDF可快速查找到设置项的路径
搜索PDF可直接定位到 网站设置 配置项,点击进入后可直接看到 PDF文档 配置项

Chrome PDF下载而不是打开为不开启

前端 Html 与 Javascript脚本使用
<body>
    <div id="reportPdfDoc" style="text-align:center;"></div>
    <script src="/lib/jquery/jquery-2.2.0.min.js"></script>
    <script src="/lib/pdfobject/pdfobject.min.js"></script>
    <script src="/lib/pdf.js/pdf.min.js"></script>
</body>
$(document).ready(function () {
            if (PDFObject.supportsPDFs) {
                PDFObject.embed(url, "#reportPdfDoc"{ PDFJS_URL: "/lib/pdf.js/web/viewer.html" });
            } else {
                $("#reportPdfDoc").append('<iframe id="reportPdfDocBody" src="/lib/pdf.js/web/viewer.html?file=' + url + '" frameborder="0" style="width:100%;height:100%;"></iframe>');
            }
        });
//PDFObject.supportsPDFs 判断是否支持 pdf
//如果不支持则使用 iframe + pdf.js 的方式显示
注意事项
Content-Disposition 头

1、返回 FileContentResult 对象时不能使用FileDownloadName

后端如果直接返回 FileContentResult ,不能直接给 FileDownloadName 赋值,需要通过

Response.Headers.Add("Content-Disposition", "filename=filename.pdf" );

Response.Headers.Add("Content-Disposition", "inline;filename=filename.pdf" );

加入头信息,否则返回的Content-Disposition带有attachment;项,Chrome、Edge下会直接保存,FireFox无法加载,IE+Acrobat可以正常加载。

使用FileDownloadName后的Content-Disposition如下:

  • Content-Disposition: attachment; filename=_0_.pdf; filename*=UTF-8’%E5%90_0_%A9%E5%8D%95.pdf

2、filename的值须使用UrlEncode编码,否则在出现字母外字符后前端不能正常加载。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值