在线预览office和pdf(Android,web端都可用)

背景

实现方案有好多。在这里给出一个完整的解决机制。当然了,这只是其中的一种,还有不完善的地方,有待改进。
基本思路::使用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在线预览:如果文件所在的服务器能通过公网进行访问,最好使用下面这种方式


xdoc这个在线预览word没有实现,有兴趣的可以自己探索一下。Google也提供了word解析的接口,在中国,强大的墙的存在,只能放弃。

完整解决方案

将通用格式转化为pdf,然后实现pdf的在线预览。pdf在线预览通过提供服务的方式实现。
如下所示:


   
              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邮箱联系我[email protected]

资料已经上传:https://download.csdn.net/download/helloworlddm/11565898

你可能感兴趣的:(Web开发,java基础)