您的位置:

H5预览PDF

一、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);
});