背景
实现方案有好多。在这里给出一个完整的解决机制。当然了,这只是其中的一种,还有不完善的地方,有待改进。
基本思路::使用pdf.js实现在线预览pdf功能。将office(doc,execel),txt,png,jpeg等常见的格式在web端进行转换。
起初使用apose这个包,在Linux下中文字体显示为空格。这个网上有好多解决方案。但是由于内网环境,无法下载fc-list命令,放弃使用这个包。改成使用XDocService.jar这个包,简单看一下源码克制这个转换是放在xdoc服务器上进行的解析。如果条件允许,建议自己搭建一套解析系统,最好操作系统使用Windows。由于资源紧张,所以目前的方案使用的xdoc服务器进行的解析。能够将office(doc,execel),txt,png,jpeg等常见的格式转化为pdf,这个转化的功能还是很强大的。(帮xdoc做了一波广告)。不过话说回来,xdoc解析txt文件是会自带广告,这个怎么去掉,通过分析源码,修改pipe函数,过滤掉相关的广告字段就ok了。
常用的解决办法
主要内容来自于这个链接:https://www.jianshu.com/p/2f39de746900
pdf在线预览的方式还是比较多的,比如iframe,a标签,jquery.media.js插件,pdfjs,pfdObject等。对于每个方式的使用在文章中都有涉及,不在赘述。
word在线预览:如果文件所在的服务器能通过公网进行访问,最好使用下面这种方式
<iframe src='https://view.officeapps.live.com/op/view.aspx?src=http://storage.xuetangx.com/public_assets/xuetangx/PDF/1.xls' width='100%' height='100%' frameborder='1'>
</iframe>
xdoc这个在线预览word没有实现,有兴趣的可以自己探索一下。Google也提供了word解析的接口,在中国,强大的墙的存在,只能放弃。
完整解决方案
将通用格式转化为pdf,然后实现pdf的在线预览。pdf在线预览通过提供服务的方式实现。
如下所示:
<iframe id = "myframe" src="http://10.24.19.86:8080/integrain-web/pdfjs/web/viewer.html" frameborder="0" width="100%" height="100%" >
<p>您的浏览器不支持 iframe 标签。</p>
</iframe>
var srcPdf = "http://10.24.19.86:8080/integrain-web/pdfjs/web/viewer.html?file="+ret;
cmApi.router.loadContent('mobile/html/cyxshls/zlaq/zlaq_fj.html');
$$("#myframe").attr('src',srcPdf);
将pdfJs放在服务器上,解析工作通过服务器来进行。
文件要和pdfJs在同一个服务器上。如果不在服务器上所造的目录,目前没有探索出可行的访问pdf文件的方案。
常用格式(word,execel)转化为pdf,使用的xdoc包,核心代码如下:(就一行核心的代码,真心简单)
package com.test.pdf;
import java.io.File;
import java.io.IOException;
import com.hg.xdoc.XDocService;
/**
* XDocService调用示例
* @author xdoc
*/
public class Test {
/**
* main
* @param args
*/
public static void main(String[] args) {
XDocService service = new XDocService();
try {
service.to("F:\\coderTest\\drag.doc", new File("f:/coderTest/drag.pdf"));
} catch (IOException e) {
e.printStackTrace();
}
}
}
至于XDocService和整个解决方案过段时间会把源码上传上去。
如果急用的话,qq邮箱联系我2250911301@qq.com
资料已经上传:https://download.csdn.net/download/helloworlddm/11565898