相关文章推荐
成熟的小熊猫  ·  成功解决ERROR: FAILED ...·  10 月前    · 
痴情的硬盘  ·  用 Python ...·  1 年前    · 

最近需要用到一个pdf展示的功能,本来是打算用浏览器自带的预览,直接用window.open打开,但是由于在磁盘上的pdf文件都是随机字符串命名,一些标题和下载名称会不对,所以引用了这个pdfjs插件,这里记录一下使用过程

首先放着pdf.js的官方演示,这个地址经常访问超时,我也不知道怎么回事

链接: https://mozilla.github.com/pdf.js/web/viewer.html

注意,现在官网已经更新到2.0+版本,在2.0后的版本,有些字段修改方式不一样,我昨天比对了一下,在官网最新的2.5.207版本中,已经没有DEFAULT_URL这个参数,我看了一下csdn里面大部分的教程都是说修改DEFAULT_URL这个参数,所以可能已经不太适用新版本,下面放上两张对比图

1.9.426

2.5.207

我使用的版本是1.9版本,所以后面教程也是基于这个版本,对新版本可能会有不适用的地方,废话说完了,上干货

1.部署pdfjs

我这里放上我自己用的版本

链接: https://pan.baidu.com/s/1fLZ1YNJmxe57YZ9Fuh20RQ?pwd=pg2g 提取码: pg2g 复制这段内容后打开百度网盘手机App,操作更方便哦

下好后解压,目录结构为下图

如果单独部署来跑的话,就在iis或者tomcat里创建一个新网站指向到这里,放在项目中的话,直接通过项目地址访问

我这里就放在iis里

然后可以尝试访问一下,需要访问web下viewer.html文件,如图,如果pdf正常加载,说明插件是没有问题的,现在进入项目

2.修改pdfjs参数

如果你不是通过后台加载,而是明确的访问一下路径,那么我们只用修改viewer.js文件中的pdf路径参数即可,如图

这个参数也是默认加载的pdf,就像你上面首次访问他加载的pdf,这里改为你的pdf路径如var DEFAULT_URL = '09.pdf';,如果不在同级目录,那就写相对路径var DEFAULT_URL = ' ../doc/ 09.pdf';

例如,我改变参数指定的pdf(同级目录)

3.后台获取文件流打开

如果需要自己制定地址打开,那么就需要把DEFAULT_URL设为空值,并且在访问的地址后追加file参数并跟上你的文件地址

3.1设为空值

3.2追加参数,如果你的访问地址是 http://localhost:45644/web/viewer.html ,那么替换的方式就是 http://localhost:45644/web/viewer.html ?file=你的文件来源

注意,file后面的地址参数需要用encodeURIComponent转码,如果不转码会出现两个?的地址,会报错,而转码后,pdfjs对两个?的进行了处理,这里可以看源码

例如,先定义一个你pdfjs的加载地址

然后,定义你文件的地址来源,我这里直接是后台返回的byte流

接着就拼接起来一个完整的地址

这里顺便附上我后台文件流的写法(C#)

public void ReadFileToPDF(string fileid,string name)
                Response.Clear();
                Response.BufferOutput = true;
                Response.AddHeader("Content-Disposition", "attachment; filename=" + name);
                Response.AppendHeader("Contenttype", "application/octet-stream");
                FileStream fs = new FileStream(OAPDFFileWordUrl + fileid, FileMode.Open, FileAccess.Read);
                byte[] by = new byte[fs.Length];
                fs.Read(by, 0, (int)fs.Length);
                Response.BinaryWrite(by);
                try { Response.Flush(); }
                catch { }
                finally
                    System.Web.HttpContext.Current.ApplicationInstance.CompleteRequest();
            catch (Exception ex)
                throw ex;

展示就如图,具体的url是这样

http://localhost:831/Scripts/pdfjs/web/viewer.html?file=http%3A%2F%2Flocalhost%3A831%2FNtkoOffice%2FReadFileToPDF%3Ffileid%3D760f9890ea9d46f092edfba96c5593fd.pdf%26name%3D%E6%B5%8B%E8%AF%95pdf4.pdf

这样一来,整个获取文件流到展示的过程就完成了,其中会遇到几个问题,在下面提醒一下

4.可能会遇到的问题

1.页面按钮是英文,并且locale.properties文件报错(f12控制台)

这个是因为iis的mime类型没有配置properties文件类型,程序访问不到,这里面是一个语言包,在iis你项目的部署下添加mime类型

2.标题乱码

除开你文件来源问题,这里可能就是编码问题,在viewer.html中,修改这个参数

3.跨域问题

这里的跨域有两种,可能就算你在同域名下他也会报错,报错信息如下

这里参照别人的方法,直接在viewer.js把这段代码注释掉就可以正常加载了,比较神奇..

 一个基本的使用pdfjs步骤就到这里完成了,新旧版本不同的更改方式确实捣鼓了我半天,新版本的话需要自定义一个DEFAULT_URL参数,并且替换defaulturl里的参数,这里我就不详细说了,希望这篇文章可以帮你更快的上手,过程中有问题的可以百度或者留言(虽然不一定能解决),点个赞吧~

最近需要用到一个pdf展示的功能,本来是打算用浏览器自带的预览,直接用window.open打开,但是由于在磁盘上的pdf文件都是随机字符串命名,一些标题和下载名称会不对,所以引用了这个pdfjs插件,这里记录一下使用过程 1、设置字体 static BaseFont FontBase = BaseFont.CreateFont("C:\\WINDOWS\\FONTS\\STSONG.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED); static iTextSharp.text.Font bodyFont = new iTextSharp.text.Font(FontBase, 12); static iTextSharp.text.Font titleFont = new
建模适配M 数据建模(ER图、数据字典、配置表和配置参数)、程建模(工作配置)和后台适配(数据库日志配置和服务配置等)等。 前台配置开发OBA,智能化界面总线驱动,0界面控制代码,强大的客户适配能力。同一配置多平台运行∶JS/Java B/S(Vue/Spring Boot),.net thin C/S (WPF C#/XAML),Android(Java)和iOS(Swift)本地应用(Native App)。 后台配置开发MAP,把业务处理抽象成元动作,短元动作用存储过程实现,长元动作用Java/Python 实现。通过元动作,为配置计算、现场管控、接口处理和告警等,配置后台处理程序,并配合DRO实现复杂报表和打印。 MQX是企业信息和物联总线,消息和文件的发布和订阅,严格的安全验证,可靠的一次必达包括网络故障和宕机,Exactly once delivery)。 接口处理IPS,提取发送数据和接收数据处理均可配置;支持MQ/ESB、MQX/MQTT、SAP(RFC/Cloud)、WebService、RESTful、EDIFTP等接口方式。
题目:关于自我意识的重要性和如何培养自我意识? 自我意识是指人们对自身状态、需要、价值、责任等方面的主观体验和认知,是认识和掌控自我、理解自己身处的环境的基础。在现代社会中,有关自我意识的问题更加重要和复杂。有了自我意识,人们能够对自身及人际关系等有更深入、全面的认识,能够更好地应对生活中的压力和挫折,也能够更加自信地面对挑战。 那么,如何培养自我意识呢?首先,需要提高对自我认知的意识,通过注意、观察、探索、反思等方式来了解自己的内在世界,增强对自己的理解和接纳,进而提高对自己情感和动机的掌控。其次,建立良好的沟通和关系,与家人、朋友、同事等人进行更多的交和了解,探寻自己的社交技能和形象,从而更好地了解自己在他人心目中的角色和形象。再次,开展一些寻求自我认知和提高自我意识的活动,例如阅读书籍、听课、参加自我管理培训等,以不断学习和不断反馈改进的方式提升自我认知和意识的水平。 总之,自我意识对于现代人来说是极为重要的。有效的自我意识能够提升个人的认知和情感能力,在人际关系、职业发展、情绪管理等方面都具有极大的优势,因此,我们应该持续不断地提升自我意识的水平。