博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
vue项目pdf文档的在线预览(注:意外服务器响应或pdf文件缺失损坏解决办法)
阅读量:4029 次
发布时间:2019-05-24

本文共 1534 字,大约阅读时间需要 5 分钟。

一、引入插件

npm安装:npm install --save pdfjs
方式一:只引入pdf.js的核心文件pdf.js和pdf.work.js,其他无关的文件全部删除,如图:
在这里插入图片描述
方式二:将插件直接放在static文件夹下,如图:
在这里插入图片描述
二、前端页面代码
方式一和方式二:特点精简

方式三:功能强大,但是引入过多无用文件,此种方式的filePath如为本地文件不进行编码也可发送请求,如为跨域文件不进行编码无法发送请求,因此建议统一进行编码。

三、后台代码实现

后台通过http请求将获取的文档流返回给前端

@Controllerpublic class ShowPdfController {
@RequestMapping(name = "/showPdf") public String showPdf(HttpServletRequest request, HttpServletResponse response, String pdfUrl) {
try {
pdfUrl = pdfUrl.trim(); URL url = new URL(pdfUrl); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setConnectTimeout(5*1000); InputStream inputStream = conn.getInputStream(); response.setHeader("Content-Disposition", "attachment;fileName=show.pdf"); response.setContentType("multipart/form-data"); OutputStream outputStream = response.getOutputStream(); IOUtils.write(IOUtils.toByteArray(inputStream), outputStream); } catch (Exception e) {
e.printStackTrace(); } return null; }}

具体采用哪种方式实现pdf文档的在线预览,可根据项目实际情况选择,如业务简单建议使用方式一和方式二(精简),如业务复杂建议使用方式三(功能强大)。

下面列举出现的问题:

1、路径问题:vue-cli3之后的项目没有单独的static文件夹,只有public。
如果自带static文件夹或者你自己创建一个,静态资源访问路径为:/static/pdf/web/XX.pdf
如果使用高版本的public文件夹,则不用加/public,直接从下一个路径写起,例如:
在这里插入图片描述

/static/pdf/web/安徽XX公司能效诊断报告.pdf

2、view.html是pdf浏览插件,如果报错:在这里插入图片描述

则文件路径不对。
3、如果报错意外的服务器响应,我的是IDM这个插件的问题,它拦截了服务器请求,关掉IDM的获取Chrome站点关闭即可。
在这里插入图片描述
还有什么问题可以评论区提问喔。

转载地址:http://cmlbi.baihongyu.com/

你可能感兴趣的文章
逻辑回归
查看>>
感知机 - 支持向量机
查看>>
决策树算法(ID3、C4.5、CART)
查看>>
集成学习(Bagging、Boosting、Stacking)
查看>>
无监督学习
查看>>
K均值算法(K-means)
查看>>
机器学习中的损失函数
查看>>
机器学习中的性能度量
查看>>
机器学习中的优化问题
查看>>
机器学习中的参数估计方法
查看>>
机器学习中的特征工程
查看>>
Softmax数值不稳定问题
查看>>
Spark学习笔记(一)——Spark编程
查看>>
奇异值分解(Singular Value Decomposition, SVD)
查看>>
文本处理—LSA、 LDA
查看>>
文本匹配(Text Matching)
查看>>
机器学习中的正则化方法
查看>>
广告学与在线广告
查看>>
计算广告
查看>>
Web广告--广告定向
查看>>