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,如图:
如果没有此配置项,可点击右侧 + 添加配置项

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

Chrome 开启PDF预览

进入设置面(右上角菜单中的设置或在地址栏输入chrome://settings/),
依次进入 隐私设置和安全性→网站设置→更多内容设置→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编码,否则在出现字母外字符后前端不能正常加载。

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

  1. html如何跳转到pdf页面,使用PDF.js在网页显示pdf文件并跳转到指定页码

    最近在做一个土地档案管理系统 ,有个需求是在前端网页展示土地档案扫描件的pdf文件,并根据目录跳转到指定页. 第一个问题,显示pdf文件.引入pdf.js.然后设定html地址,地址为http://l ...

  2. asp.net core根据用户权限控制页面元素的显示

    asp.net core根据用户权限控制页面元素的显示 Intro 在 web 应用中我们经常需要根据用户的不同允许用户访问不同的资源,显示不同的内容,之前做了一个 AccessControlHelp ...

  3. fis3+vue+pdf.js制作预览PDF文件或其他

    人生第一篇博客,的确有点紧张,但有些许兴奋,因为这对于我来说应该是一个好的开始,以此励志在技术的道路上越走越远. 看过了多多少少的技术博客,给自己带来了很多技术上的收获,也因此在想什么时候自己也可以赠 ...

  4. uniapp 使用pdf.js 加载本地pdf文件报错问题

    最近有在做一个移动端的应用,应用里涉及到大量的js游戏开发,使用Android原生做不太合适,就选择了uniapp,其中有一个功能是读取本地的pdf文件并展示.在网上查了点资料都是用pdf.js来开发 ...

  5. JS实现浏览器打印PDF(使用HttpPrinter打印插件)

    JS实现浏览器打印PDF(使用HttpPrinter打印插件) 第一步:启动HttpPrinter打印插件 第二步:用浏览器打开示例文件\调用示例\websocket协议示例\html\打印pdf.h ...

  6. pdf.js 字体无法显示

    pdf.js 字体无法显示 前端框架:antdpro 2  使用的插件是react-pdf 不显示的原因:字体文件找不到 错误提示:Warning: The CMap "baseUrl&qu ...

  7. android 在线解析pdf文件格式,Android PDF预览阅读:用Mozilla PDF.js浏览本地在线PDF文件 | KaelLi的博客...

    在之前的Android端预览PDF方案一文中,曾经提到了使用Mozilla的PDF.js来加载PDF的办法,今天就详细的说一下具体的实现. 简介 PDF.js是一个使用HTML5构建的PDF查看器.由 ...

  8. RAD PDF于Web浏览器的PDF阅读器

    RAD PDF 基于Web浏览器的PDF阅读器 作为功​​能最完备的基于HTML的PDF查看器,编辑器和ASP.NET的表单填充器,提供了灵活而强大的替代常规PDF解决方案.与Adobe Acroba ...

  9. 在ASP.NET Core中如何将各种文档合并为PDF?Aspose快速搞定!

    在各种业务环境中,将各种文档合并为一个PDF是客户最常问的问题之一.例如,假设您的组织有多个应用程序以XPS和PDF生成特定的文档,使用扫描的图像,并且您的用户希望将其中一些文档合并为一个PDF. 本 ...

最新文章

  1. Jquery元素判断是否存在
  2. MySQL—04—MySQL的其他对象
  3. 优化问题中的两个挑战是?
  4. JavaScript中的原型prototype及原型链
  5. 一直对zookeeper的应用和原理比较迷糊,今天看一篇文章,讲得很通透,分享如下(转)...
  6. 我很喜欢写作。但总难以坚持!
  7. led屏背后线路安装图解_弱电工程LED屏安装工程施工方案
  8. ClientToScreen 和ScreenToClient
  9. 生活随记 - 2020国庆第三天
  10. 交换机与路由器技术-04-远程管理交换机
  11. 计算机dns怎么设置方法,dns设置_dns怎么设置【步骤|图文教程】-太平洋IT百科
  12. VB6 简单实现 支付宝二维码扫马支付
  13. vue二维码解码器(增加上传二维码之后弹窗预览)
  14. STM32 CUBEIDE MacOS首次使用笔记
  15. 解决Vue路由重复跳转报错
  16. 从企业微信、钉钉、班聊、纷享逍客,看企业服务
  17. 为什么上班只是坐着,一天下来还是觉得好累?
  18. 怀院计科院1901班NICE组限时答题程序
  19. 仅拍125个视频成为千万级网红?Python:看视频都在拍些什么?
  20. vue项目搭建及打包运行

热门文章

  1. 【分享】AlienWareM15R6键盘失灵
  2. 程序员工资又涨了!你拖后腿了吗?
  3. 使用 HBuilder X 将微信 小程序 项目 打包
  4. fpga的希尔伯特变换实现
  5. Maven tomcat7:run 配置
  6. [Excel] excel随机填充内容/文本/数字
  7. 前端:blob转换为图片URL,但是图片不显示
  8. 烟台计算机中考模拟题,烟台中考数学模拟试卷
  9. 【19调剂】国家211工程大学、世界一流学科建设高校-福州大学,硕士研究生预调剂通知...
  10. SpringBoot-jdbcTemplate访问数据库