经常会有客户问,在SharePoint中,如何在浏览器中查看与编辑文档,通常给出的解决方案是集成Office Web App。

而在实际应用过程中,客户通常会要求实现PDF文件在线查看,对于PDF文件,office web App微软一直没有提供官方支持。为了实现这个功能,开发人员通常采用如下两种方式:

1.修改SharePoint,使PDF文件默认在浏览器中打开,这种方式,实质上是告诉浏览器,文档由浏览器调用,根据本地文档关联调用本地客户端进行呈现,这种方式就要求客户端安装adobe reader才可以正常打开,否则仍旧显示下载框。

2.文档转换方式,通常思路是文档转换成图片或文档转换成swf文件,实际项目中常用的是类似百度文档的方式,转换成swf文件,通过程序开发自定义界面进行呈现。

具体做法是上传时,自动转换一份swf文件,然后通过flashpaper进行展示,这种方式控制粒度高,可以防止复制与下载,但需要进行一定的二次开发才可以实现,而且由于文档同时存在两个副本,信息一致性也需要考虑。

一个好的消息是在今年3月份的时候,微软发布了Office Web Apps Server 2013的一个更新,可以在这里下载:KB2760445。这个更新中包括了若干新功能,其中最主要的就是支持了PDF格式的在线查看。

部署过程摘要

在一台加域的服务器上安装Office Web App2013,然后安装该KB,安装完成后,打开PowerShell,输入如下命令,进行Farm初始化(注owa2013为office web app服务器名称):

New-OfficeWebAppsFarm –InternalURL http://owa2013  -ExternalUrl http://owa2013 –AllowHttp –EditingEnabled  -ClipartEnabled –TranslationEnabled

然后在 SharePoint服务器上启动PowerShell,输入如下脚本与office web app服务进行绑定

Add-PSSnapin Microsoft.SharePoint.PowerShell
  New-SPWOPIBinding -ServerName owa2013 -AllowHTTP
  Set-SPWopiZone internal-http

如果使用HTTP连接而非https,则需要执行以下命令:

$sts = (Get-SPSecurityTokenServiceConfig)

$sts.AllowOAuthOverHttp = $true

$sts.Update()

执行完成后,发现PDF文件已经可以在线查看了:

后续产生的问题

1.文档列表中,无法直接预览文档

解决方法:

Designer打开站点,创建pdfview.js文件,文件内容如下(注:我母版页中引用了jquery)

function addPdfPreviews() {
    SP.SOD.executeOrDelayUntilScriptLoaded(function () {
        filePreviewManager.previewers.extensionToPreviewerMap.pdf = [embeddedWACPreview, WACImagePreview]
        embeddedWACPreview.dimensions.pdf= { width: 379, height: 252}
    }, "filepreview.js");     
}

$(function(){addPdfPreviews();});

修改默认母版页,添加JS引用如下:

<script language="javascript" src="/Themes/js/jquery-1.4.2.min.js"></script>
<script language="javascript"   src="/Themes/js/pdfView.js"></script>

保存母版页,刷新界面进行测试,可以看到,PDF文件预览可以正常显示了

2.搜索结果中,也无法直接预览文档

解决方法:

在网站集管理中点击“搜索结果类型”

在类型列表中找到“PDF”,点击“复制”

在弹出的新建类型界面中输入类型名称,并如图所示,将结果类型改为“Word项”

点击“保存”后,重新搜索,可以看到搜索结果的pdf文件已经可以正常预览了。

本文参考:

http://www.cnblogs.com/erucy/archive/2013/07/05/3173707.html

http://www.wictorwilen.se/sharepoint-2013-enabling-pdf-previews-with-office-web-apps-2013-march-2013-update

http://www.wictorwilen.se/sharepoint-2013-enabling-pdf-previews-in-document-libraries-with-office-web-apps-2013

Office Web App2013 在线查看PDF文件的更多相关文章

  1. 浏览器在线查看pdf文件 pdf.js的使用教程

    谷歌浏览器可以直接在线查看pdf,而IE内核浏览器无法在线查看,默认是下载. 这里用到的是pdf.js,不仅支持IE内核浏览器,而且兼容手机查看pdf 官网地址:http://mozilla.gith ...

  2. javaWeb项目中如何实现在线查看pdf文件

    最近有需求要实现在网页直接查看pdf,word,excel文件.但是实际当中并没有很好的开源插件供我们使用,确实有一些付费的插件不错,也很好用,但是对于我来说都不适合. 现在只是单纯的找到了围魏救赵的 ...

  3. office web apps 在线问答预览

    最近在做项目时,需要用到在线文档预览,看过明道的一篇搭建office web apps服务的文章,但是由于时间的关系,没有仔细研究,这几天有时间,就拿出来研究了下,折腾了几天终于完成了部署,然后就搬过 ...

  4. 在线阅读PDF文件js插件——pdf.js

    最近接到一个需求大致是这样的,要求在移动端和pc端能够在线阅读pdf文件,类似百度文库的功能. 首先想到的就是插件,github(全球最大的男性交友网站- -恩)上一大堆啊,首先找到一个PDFobje ...

  5. IOS下载查看PDF文件(有下载进度)

    IOS(object-c) 下载查看 PDF 其实还是蛮容易操作的.在下载前,首先要把 IOS 可以保存文件的目录给过一遍: IOS 文件保存目录 IOS 可以自定义写入的文件目录,是很有限的,只能是 ...

  6. https://github.com/Lushenggang/show-pdf在线浏览pdf文件在线浏览pdf文件

    在线浏览pdf文件 https://github.com/Lushenggang/show-pdf https://github.com/Lushenggang/show-pdf

  7. 【转载】Chrome 0day漏洞:不要用Chrome查看pdf文件

    英文原文地址:https://blog.edgespot.io/2019/02/edgespot-detects-pdf-zero-day-samples.html 中文原文地址:https://ww ...

  8. JAVA实现在线查看PDF和office文档

    一个项目中要做一个在线预览附件(和百度文库差不多)的小功能点,楼主在开发过程中踩了很多坑的同时也总结了一些方法,仅供广大猿友参考,那么要实现这个小功能,目前主要是有如下3种可行的实现方式,下面先说实现 ...

  9. 在线浏览pdf文件,pdfobject的简单使用

    该js插件,官网有详细的使用教程(网址:http://www.pdfobject.com/examples/).打开里面的例子后,查看新打开页面,打开并查看该页面的源代码. 需要的材料: 1.PDFo ...

随机推荐

  1. vb.net中将DataGridView与数据源绑定

    在< .net中将DataGridView内的数据导出为Excel表格>中说了如何导出数据到Excel,今天这篇文章将讲述如何绑定数据源,在控件中显示我们需要的信息. 在敲机房收费系统的时 ...

  2. 从AIDL开始谈Android进程间Binder通信机制

    转自: http://tech.cnnetsec.com/585.html 本文首先概述了Android的进程间通信的Binder机制,然后结合一个AIDL的例子,对Binder机制进行了解析. 概述 ...

  3. Linux shell 提取文件名和目录名

    ${}用于字符串的读取,提取和替换功能,可以使用${} 提取字符串 1.提取文件名 [root@localhost log]# var=/dir1/dir2/file.txt [root@localh ...

  4. 改善C#程序的建议2:C#中dynamic的正确用法

    dynamic是FrameWork4.0的新特性.dynamic的出现让C#具有了弱语言类型的特性.编译器在编译的时候不再对类型进行检查,编译期默认dynamic对象支持你想要的任何特性.比如,即使你 ...

  5. UNIX网络编程读书笔记:原始套接口

    概述 应用程序可以绕过传输层而直接使用IPv4和IPv6,这称为原始套接口(raw socket).http://www.cnblogs.com/nufangrensheng/p/3583435.ht ...

  6. 算法笔记_131:出现次数超过一半的数(Java)

    目录 1 问题描述 2 解决方案 2.1 每次删除两个不同的数 2.2 记录两个值   1 问题描述 数组中有一个数出现的次数超过了数组长度的一半,请找出这个数. 2 解决方案 2.1 每次删除两个不 ...

  7. Linux环境下GNU, GCC, G++编译器(转)

    一,GNU GNU是“GNU 's Not Unix”的递归缩写, Stallman宣布GNU应当发音为Guh-NOO(革奴)以避免与new这个单词混淆(注:Gnu在英文中原意为非洲牛羚,发音与new ...

  8. Eclipse默认编码格式设置方式

    看图即可 STEP ONE: STEP TWO: STEP THREE: STEP FOUR: 项目右击——>Properties 参阅: eclipse编码格式设置 - AlanLee(Jav ...

  9. ubuntu 将&quot;/TMP&quot;挂载到内存中

    一.修改"/etc/fstab"文件:        sudo gedit /etc/fstab  二.在文件中添加下列语句:   1,     # / was on /dev/s ...

  10. C语言错误处理方法、C++异常处理方法(throw, try, catch)简介

    一.C语言错误处理方法 1.返回值(if … else语句判断错误) 2.errno(linux 系统调用) 3.goto语句(函数内局部跳转) 4.setjmp.longjmp(Do not use ...