一、H5预览PDF文件
PDF文件是一种常见的格式,H5丰富的文本效果和交互性能让它成为一种流行的预览方法。下面介绍两种实现方法:
1.基于PDF.js的方式
PDF.js是Mozilla开发的一种基于Web的PDF查看器,它可以将PDF文件转换为HTML5,并实现在浏览器上的PDF预览。在使用PDF.js时,我们可以在HTML中引入该库,并通过JavaScript调用该库的PDF预览函数来实现PDF的预览。
<script src="//cdn.bootcss.com/pdf.js/2.2.2/pdf.min.js"></script>
<script>
// 打开PDF文件
pdfjsLib.getDocument('//example.com/path/to/document.pdf').then(function(pdf) {
// 获取第一页的PDF需要渲染的元素
pdf.getPage(1).then(function(page) {
// 获取canvas元素,用于渲染PDF
var canvas = document.getElementById('pdf-canvas');
var canvasContext = canvas.getContext('2d');
// 获取PDF尺寸
var viewport = page.getViewport(1);
canvas.width = viewport.width; // 设置canvas宽度
canvas.height = viewport.height; // 设置canvas高度
// 获取PDF渲染context
var renderContext = {
canvasContext: canvasContext,
viewport: viewport
};
// 渲染第一页
page.render(renderContext);
});
});
</script>
2.基于Adobe Acrobat的方式
Adobe Acrobat是一款常用的PDF编辑器,它可以将PDF文件转换为HTML5,并提供嵌入在网页中的PDF预览功能。在使用Adobe Acrobat时,我们需要使用Object或者iframe嵌入PDF文件。
<object data="//example.com/path/to/document.pdf" width="100%" height="650px">
<embed src="//example.com/path/to/document.pdf" type="application/pdf" width="100%" height="650px" />
</object>
<iframe src="//example.com/path/to/document.pdf" width="100%" height="650px"></iframe>
二、H5预览word、Excel文件
除了PDF,Word、Excel也是十分常见的文档格式。要实现H5预览这两种格式,我们可以使用Office Online Web Apps或者Google Docs。这两种方式可以直接在浏览器中预览和编辑Word和Excel文档,可以在网页中直接嵌入。
三、H5预览PPT前两页
类似于PDF一样,在H5中预览PPT,也需要进行转换。下面介绍一种可行的方式。
1.利用Microsoft Interoperability API
Microsoft Interoperability API是一组API,可以让我们轻松地在网页中预览PPT。我们需要先将PPT文件转换为ODP格式,再使用API进行预览。
<iframe src='https://view.officeapps.live.com/op/view.aspx?src=//example.com/path/to/document.odp' width='100%' height='600px' frameborder='0'></iframe>
四、H5预览中出现的问题及解决方案
1.预览屏幕显示不全
由于预览的文件往往比浏览器窗口要大,因此有时候屏幕可能会显示不全。此时,我们可以通过设置CSS样式或JS实现自适应的方式来解决该问题。
html, body, div, object {
overflow: hidden;
width: 100%;
height: 100%;
}
2.预览以后为什么不显示全部
有时候,我们可能只能看到文件的前几页,无法查看整个文件。这是由于预览组件在实现时限制了预览文件的页数。我们可以对预览组件中的代码进行修改,来展示完整的文件。
3.图片选取
在预览PDF中,我们经常需要在PDF中提取图片,下面是两种方案供参考:
1)使用canvas将PDF转换为图片
使用canvas技术将PDF文件转换为图片,然后进行图片的选取和保存。
2)使用PDF.js提供的接口进行图片的提取
// 从PDF中提取图片
page.getOperatorList().then(function(operatorList) {
var SVGGraphics = new pdfjsLib.SVGGraphics(page.commonObjs, page.objs);
var SVGGenerator = new pdfjsLib.SVGGenerator();
// 按照操作列表运行操作
operatorList.forEach(function(op) {
SVGGraphics.processOperator(op);
});
// 生成SVG XML
var svg = SVGGenerator.getSVG(SVGGraphics.getSVG());
// 从SVG XML获取图片的DataURL
var imgDataURL = 'data:image/svg+xml;base64,'+window.btoa(svg);
});