条件:

  1. 安装好禅道的服务器
  2. 能直接浏览PDF的浏览器(或通过 安装插件实现 )
  3. 文档转换服务程序(建议部署在另一台服务器上)

 
 

实现 原理:

  1. 修改禅道的文件预览功能(OFFICE文档其使用的是下载打开方式)为向转换服务请求PDF
  2. 转换服务收到URL后,下载该文件并调用后台服务转换为PDF,向请求者返回PDF
  3. 禅道内置的预览PDF功能直接请求浏览器预览PDF

 
 

需要修改的文件及内容

xampp\zentao\module\file\control.php

xampp\zentao\module\file\view\printfiles.html.php

xampp\zentao\module\group\lang\resource.php

xampp\zentao\module\file\lang\zh-cn.php

 
 

control.php

 
 

增加方法

 
 

public function cloudview($fileID, $mouse = '')

{

$file = $this->file->getById($fileID);

 
 

/* Judge the mode, down or open. */

$mode = 'view';

$fileTypes = 'txt|jpg|jpeg|gif|png|bmp|xml|html|pdf|dwg';

if(stripos($fileTypes, $file->extension) !== false and $mouse == 'left') $mode = 'open';

        if($mode == 'open')

{

if(file_exists($file->realPath))$this->locate($file->webPath);

$this->app->triggerError("The file you visit $fileID not found.", __FILE__, __LINE__, true);

}

        else

if(file_exists($file->realPath))

{

$fileName = $file->title . '.' . $file->extension;

                $fileData = file_get_contents($file->realPath);

                $md5data=md5( $fileData);

$this->locate( 'http://192.168.118.136:9345/?url=' . common::getSysURL() . $file-> webPath . '&' . 'fileName=' . $fileName . '&' . 'md5=' . $md5data );

}

else

{

$this->app->triggerError("The file you visit $fileID not found.", __FILE__, __LINE__, true);

}

 
 

}

 
 

 
 

printfiles.html.php

 
 

修改方法downloadFile

新增方法viewFile

增加超链接指向

function downloadFile(fileID)

{

if(!fileID) return;

var sessionString = '<?php echo $sessionString;?>';

var url = createLink('file', 'cloudview', 'mfileID=' + fileID + '&mouse=left&mode=open') + sessionString;

    
 

window.open(url, '_blank');

return false;

}

 
 

function viewFile(fileID)

{

if(!fileID) return;

var sessionString = '<?php echo $sessionString;?>';

var url = createLink('file', 'cloudview', 'mfileID=' + fileID + '&mouse=left&mode=open') + sessionString;

      
 

window.open(url, '_blank');

return false;

}

 
 

增加链接

 
 

$fileTitle = "<li class='list-group-item'><i class='icon-file-text text-muted icon'></i> &nbsp;" . $file->title .'.' . $file->extension;

echo html::a($this->createLink('file', 'download', "fileID=$file->id") . $sessionString, $fileTitle, '_blank', "onclick='return viewFile($file->id)'");

echo "<span class='right-icon'>";

         common::printLink('file', 'download', "fileID=$file->id", "<i class='icon-download'></i>", '', "class='edit btn-icon' title='{$lang->file->download}'");

common::printLink('file', 'edit', "fileID=$file->id", "<i class='icon-pencil'></i>", '', "class='edit btn-icon' title='{$lang->file->edit}'");

if(common::hasPriv('file', 'delete')) echo html::a('###', "<i class='icon-remove'></i>", '', "class='btn-icon' onclick='deleteFile($file->id)' title='$lang->delete'");

echo '</span>';

echo '</li>';

 
 

resource.php

 
 

$lang->resource->file = new stdclass();

$lang->resource->file->download = 'download';

$lang->resource->file->cloudview = 'cloudview';

$lang->resource->file->edit = 'edit';

 
 

zh-cn.php

 
 

$lang->file->uploadImages = '多图上传';

$lang->file->cloudview = '云预览';

$lang->file->download = '下载附件';

 
 

 
 

执行效果

 
 

权限

 
 

 
 

附件管理

 

  

在禅道中实现WORD等OFFICE文档转换为PDF进行在线浏览的更多相关文章

  1. 转:C#实现office文档转换为PDF或xps的一些方法

    代码支持任意office格式 需要安装office 2007 还有一个office2007的插件OfficeSaveAsPDFandXPS 下载地址 [url]http://www.microsoft ...

  2. C#实现office文档转换为PDF或xps的一些方法( 转)

    源博客http://blog.csdn.net/kable999/article/details/4786654 代码支持任意office格式 需要安装office 2007 还有一个office20 ...

  3. C#实现office文档转换为PDF格式

    1.安装组件OfficeSaveAsPDFandXPS 需要安装office 2007 还有一个office2007的插件OfficeSaveAsPDFandXPS 下载地址   OfficeSave ...

  4. java使用jacob将office文档转换为PDF格式

    jacob 包下载地址: http://sourceforge.net/projects/jacob-project/ 下载后,将jacob 与 jacob-1.19-x64.dll放到安装jdk目录 ...

  5. office文档转pdf

    这里贴下代码吧,没啥好说的. using System; using System.Collections.Generic; using System.Linq; using System.Text; ...

  6. OFFICE 文档转换为html在线预览

    OFFICE 文档在线预览方案很多: 服务器先转换为PDF,再转换为SWF,最后通过网页加载Flash预览,比如flexpaper Office文档直接转换为SWF,通过网页加载Flash预览 微软的 ...

  7. Java实现web在线预览office文档与pdf文档实例

    https://yq.aliyun.com/ziliao/1768?spm=5176.8246799.blogcont.24.1PxYoX 摘要: 本文讲的是Java实现web在线预览office文档 ...

  8. Java实现office文档与pdf文档的在线预览功能

    最近项目有个需求要java实现office文档与pdf文档的在线预览功能,刚刚接到的时候就觉得有点难,以自己的水平难以在三四天做完.压力略大.后面查找百度资料.以及在同事与网友的帮助下,四天多把它做完 ...

  9. 把office文档转换为html过程中的一些坑

    之前和我们项目的团队一起酝酿了一个项目,公司的业务文档技术文档比较多,但都比较分散,虽然通过FTP或其他方式聚合起来了,但感觉还是不够方便. 另外公司每次都来新员工,新员工都需要一些培训,比较耗时,比 ...

随机推荐

  1. 使用TSQL查询和更新 JSON 数据

    JSON是一个非常流行的,用于数据交换的文本数据(textual data)格式,主要用于Web和移动应用程序中.JSON 使用“键/值对”(Key:Value pair)存储数据,能够表示嵌套键值对 ...

  2. 菜鸟学Struts2——Struts工作原理

    在完成Struts2的HelloWorld后,对Struts2的工作原理进行学习.Struts2框架可以按照模块来划分为Servlet Filters,Struts核心模块,拦截器和用户实现部分,其中 ...

  3. 记一个mvn奇怪错误: Archive for required library: 'D:/mvn/repos/junit/junit/3.8.1/junit-3.8.1.jar' in project 'xxx' cannot be read or is not a valid ZIP file

    我的maven 项目有一个红色感叹号, 而且Problems 存在 errors : Description Resource Path Location Type Archive for requi ...

  4. 简单有效的kmp算法

    以前看过kmp算法,当时接触后总感觉好深奥啊,抱着数据结构的数啃了一中午,最终才大致看懂,后来提起kmp也只剩下“奥,它是做模式匹配的”这点干货.最近有空,翻出来算法导论看看,原来就是这么简单(先不说 ...

  5. 【SSM框架】Spring + Springmvc + Mybatis 基本框架搭建集成教程

    本文将讲解SSM框架的基本搭建集成,并有一个简单demo案例 说明:1.本文暂未使用maven集成,jar包需要手动导入. 2.本文为基础教程,大神切勿见笑. 3.如果对您学习有帮助,欢迎各种转载,注 ...

  6. HTML文档声明

    前面的话   HTML文档通常以类型声明开始,该声明将帮助浏览器确定其尝试解析和显示的HTML文档类型.本文将详细介绍文档声明DOCTYPE 特点   文档声明必须是HTML文档的第一行.且顶格显示, ...

  7. C++中的命名空间

    一,命名空间(namespace)的基本概念以及由来 1.什么是标识符: 在C++中,标识符可以是基本的变量,类,对象,结构体,函数,枚举,宏等. 2.什么是命名空间: 所谓的命名空间是指标识符的可见 ...

  8. pandas基础-Python3

    未完 for examples: example 1: # Code based on Python 3.x # _*_ coding: utf-8 _*_ # __Author: "LEM ...

  9. jquery-treegrid树状表格的使用(.Net平台)

    上一篇介绍了DataTable,这一篇在DT的基础之上再使用jquery的一款插件:treegrid,官网地址:http://maxazan.github.io/jquery-treegrid/ 一. ...

  10. Linux命令【第二篇】

    1.如何过滤出已知当前目录下oldboy中的所有一级目录(提示:不包含oldboy目录下面目录的子目录及隐藏目录,即只能是一级目录). ^:以什么开头,例如^olboy表示以oldboy开头. ls: ...