范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

javaopenOffice实现局域网内在线预览(docx转pdf)

  前言
  当前的主浏览器都支持直接打开pdf文件,从而实现文件预览。如果是其他格式文件则得下载,因此用openOffice实现文件转pdf格式。  一、 openOffice的安装下载地址:http://www.openoffice.org/
  安装教程可参考:openOffice下载和安装  进入安装目录,输入cmd  命令窗口输入以下命令启动:
  soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" –nofirststartwizard  二、测试导包                            com.artofsolving             jodconverter             2.2.1          文件工具类  import com.artofsolving.jodconverter.DefaultDocumentFormatRegistry; import com.artofsolving.jodconverter.DocumentConverter; import com.artofsolving.jodconverter.DocumentFormat; import com.artofsolving.jodconverter.openoffice.connection.OpenOfficeConnection; import com.artofsolving.jodconverter.openoffice.connection.SocketOpenOfficeConnection; import com.artofsolving.jodconverter.openoffice.converter.StreamOpenOfficeDocumentConverter;  import java.io.*; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLConnection;  /**  * 文件格式转换工具类  *  * @author Simon  * @version 1.0  * @since JDK1.8  */ public class FileConvertUtil {     /** 默认转换后文件后缀 */     private static final String DEFAULT_SUFFIX = "pdf";     /** openoffice_port */     public static final String DEFAULT_HOST = "127.0.0.1";     private static final Integer OPENOFFICE_PORT = 8100;       /**      * office文档转换为PDF(处理本地文件)      */     public static InputStream convertLocaleFile(String sourcePath, String suffix) throws Exception {         File inputFile = new File(sourcePath);         InputStream inputStream = new FileInputStream(inputFile);         return covertCommonByStream(inputStream, suffix);     }        /**      * office文档转换为PDF(处理网络文件)      */     public static InputStream convertNetFile(String netFileUrl, String suffix) throws Exception {         // 创建URL         URL url = new URL(netFileUrl);         // 试图连接并取得返回状态码         URLConnection urlconn = url.openConnection();         urlconn.connect();         HttpURLConnection httpconn = (HttpURLConnection) urlconn;         int httpResult = httpconn.getResponseCode();         if (httpResult == HttpURLConnection.HTTP_OK) {             InputStream inputStream = urlconn.getInputStream();             return covertCommonByStream(inputStream, suffix);         }         return null;     }       /**      *  将文件以流的形式转换      */     public static InputStream covertCommonByStream(InputStream inputStream, String suffix) throws Exception {         ByteArrayOutputStream out = new ByteArrayOutputStream();         OpenOfficeConnection connection = new SocketOpenOfficeConnection(OPENOFFICE_PORT);         connection.connect();         DocumentConverter converter = new StreamOpenOfficeDocumentConverter(connection);         DefaultDocumentFormatRegistry formatReg = new DefaultDocumentFormatRegistry();         DocumentFormat targetFormat = formatReg.getFormatByFileExtension(DEFAULT_SUFFIX);         DocumentFormat sourceFormat = formatReg.getFormatByFileExtension(suffix);         converter.convert(inputStream, sourceFormat, out, targetFormat);         connection.disconnect();         return outputStreamConvertInputStream(out);     }       /**      *  outputStream转inputStream      */     public static ByteArrayInputStream outputStreamConvertInputStream(final OutputStream out) throws Exception {         ByteArrayOutputStream baos=(ByteArrayOutputStream) out;         return new ByteArrayInputStream(baos.toByteArray());     } } controler层代码   @PostMapping("/onlinePreview")     public void onlinePreview(@RequestParam("url") String url, HttpServletResponse response) throws Exception {         //获取文件类型   根据实际的url截断         String suffix = url.substring(url.lastIndexOf(".") + 1);         if (!suffix.equals("txt") && !suffix.equals("doc") && !suffix.equals("docx") && !suffix.equals("xls")                 && !suffix.equals("xlsx") && !suffix.equals("ppt") && !suffix.equals("pptx") && !suffix.equals("sheet") && !suffix.equals("pdf")) {             throw new Exception("文件格式不支持预览");         }         //我的文件是存在本地上的,该url是为了别的电脑能访问到,再传到这的时候就是解析本地文件了,所以找到我的本地文件路径         //根据具体情况来,否则会报错         url=url.replace("192.168.1.125:8765/knowledge/","G:/creo/knowledge/");        //处理本地文件         InputStream in = FileConvertUtil.convertLocaleFile(url, suffix);         OutputStream outputStream = response.getOutputStream();         //创建存放文件内容的数组         byte[] buff = new byte[1024];         //所读取的内容使用n来接收         int n;         //当没有读取完时,继续读取,循环         while ((n = in.read(buff)) != -1) {             //将字节数组的数据全部写入到输出流中             outputStream.write(buff, 0, n);         }         //强制将缓存区的数据进行输出         outputStream.flush();         //关流         outputStream.close();         in.close();     } 常见异常
  java.lang.IllegalArgumentException: inputFormat is null at com.artofsolving.jodconverter.openoffice.converter.AbstractOpenOfficeDocumentConverter.ensureNotNull(AbstractOpenOfficeDocumentConverter.java:113)
  这是因为转换07版本及高版本(.docx/.xlsx/.pptx)时,这三种格式不在所支持的文件格式中。
  ** 解决办法: **
  重写BasicDocumentFormatRegistry (一定得在com.artofsolving.jodconverter包下)  package com.artofsolving.jodconverter;  import java.util.ArrayList; import java.util.Iterator; import java.util.List;  public class BasicDocumentFormatRegistry implements DocumentFormatRegistry {     private List documentFormats = new ArrayList();     public BasicDocumentFormatRegistry() {     }     public void addDocumentFormat(DocumentFormat documentFormat) {         this.documentFormats.add(documentFormat);     }     protected List getDocumentFormats() {         return this.documentFormats;     }     public DocumentFormat getFormatByFileExtension(String extension) {         if (extension == null) {             return null;         } else {             if (extension.indexOf("doc") >= 0) {                 extension = "doc";             }             if (extension.indexOf("ppt") >= 0) {                 extension = "ppt";             }             if (extension.indexOf("xls") >= 0) {                 extension = "xls";             }             String lowerExtension = extension.toLowerCase();             Iterator it = this.documentFormats.iterator();             DocumentFormat format;             do {                 if (!it.hasNext()) {                     return null;                 }                 format = (DocumentFormat)it.next();             } while(!format.getFileExtension().equals(lowerExtension));             return format;         }     }     public DocumentFormat getFormatByMimeType(String mimeType) {         Iterator it = this.documentFormats.iterator();         DocumentFormat format;         do {             if (!it.hasNext()) {                 return null;             }             format = (DocumentFormat)it.next();         } while(!format.getMimeType().equals(mimeType));         return format;     } }
  参考:解决jodconverter 2.2.1 版本不支持docx、xlsx、pptx 转换成PDF格式异常
  原文 https://www.cnblogs.com/jasmine-e/p/16254454.html

我爱你域名,众多告白神器中的yyds他是中国跑得最快的人,却娶了跑得最慢的女孩。从校服到婚纱,16年爱情长跑,每周交换日记表达心意七夕又将至,风花雪月悉数为恋人们赶来,好好地看个奥运会,都被塞一把狗粮,这个七夕岂不甜从韩国公司赎回,端午节域名来之不易众所周知,农历五月初五是端午节(DragonBoatFestival),又称端阳节午日节五月节龙舟节等,叫法有二十多个。端午节为中国国家法定节假日之一,已并被列入世界非物质文化遗产建站疑问我们的公司很小,有必要做网站吗?新网建站资讯数字化信息技术不断发展的现在,看着各个大企业美观大气的企业官网,中小企业说没想法是假的,毕竟企业官网是一个企业的门面,自然越好看功能越多越好。但有很多小企业觉得,我就是异种肾移植(移植动物的肾脏)方面又有好消息,好事频出啊刚接到新的植入人工肾方面的喜讯可植入人工肾脏,又有什么研究进展?没想到在异种肾移植方面的曙光又出现了!好事频出啊!其实,机器代替肾脏始终没有完整的肾脏好,因为真实的肾脏其实太精妙太红旗H9销量出炉,9月卖出2270台,这样的表现你猜到了吗?要问中国汽车市场中最大赢家是谁,我想一定是德系车,为何?大众品牌在华深耕多年,如今减配虽然已是众所周知,然而追捧者仍是数不胜数。而德系三大马车BBA,在中国豪华汽车市场更堪称是只手厚道的吉利SUV,跌至7万多仍配1。8T,9个月销量近16万厚道二字对于国产车而言,几乎都是共同优点,且很多车企都凭借着厚道的优点,在家用车市场中拥有一席之地。其中被消费者誉为国产一哥的吉利,旗下便有很多高性价比的车型出现在销量排行榜前列。AdGuardMac广告拦截软件,除广告外,还会保护什么?AdguardMac破解版是一款独立的广告拦截软件,全新的UI设计,新的助手,虽然简约但功能齐全,更加的实用,新增的CoreLibs过滤器,更加安全绿色的过滤掉您的广告内容,那除广六月六晒家谱,还挺有讲究的六月六,晒家谱农历六月六,虽然不算一个很大的节日,但是这一天在很多不同的民族中间,也都有着不同的意义。民间有很多和六月六相关的话,例如六月六,人晒衣裳龙晒袍。六月六,晒家谱,等。六中元节是传统,并非迷信每年农历七月十五日为中元节,中元节是道教的名称,佛教称这一天为盂兰盆节。在民间,很多百姓纷纷在这一个节日的前后选择用放河灯焚纸钱等方式来祭祖,缅怀祖先。随着时代的发展,有很多人却认家族人太多,修谱还能管用吗?家谱家中有家谱传承的人都知道,家谱除了记录一个家族的历史发展,其中众多的族人信息也是家谱中很重要的一部分信息。随着时代的发展,有的家族人丁兴旺,族人也越来越多,甚至因为发展的需要,六月六,晒家谱,你家有晒家谱吗?农历六月六,晒家谱,是很多宗亲家族的大事。古人有言家之兴替,在于礼义,不在于富贵贫贱。家谱记录一个家族的发展,在中华几千年的历史文化长河中,不管家族是否富贵或贫穷,一本本家谱都在讲
小米有品对男人下手!18天续航,100玩法,米粉省下半年房租不知道大家在夜跑时有没有路过那种特别黑,人还少得地方,总担心会有什么坏事发生。这不,前几天夜跑时也不知道是哪个缺德鬼,那么黑得地方还把井盖给撬了,结果害我腿被卡在中间,手里又没有手小米王牌黑科技!103项技术专利,刷新海外众筹记录,美国人牛提起国产,一部分人总有点不屑一顾,认为国外大牌才是好的,其实,这都什么年代了,国货早已经自立自强!其中有一个国产王牌黑科技早就悄悄冲出国门,甚至获得了国外一致好评。我要提的这款黑科小米有品上架399元垃圾桶!还得花69元买垃圾袋,网友真的值大家好,又来到了鸡哥淘好物的整活环节了。由于2月份在老家,公司的工作基本上都堆到了3月份,工作量特别高。每天加班到9点多回到家10点了,还得去整理家里的垃圾,说实话,累!面对垃圾,雷军有福了!收获一员猛将!上任后第一款手机就帮小米赚了27亿说起小米,我们总能想起雷军,在无数网友心目中的那位厚道人,被称为最接地气的企业大佬!仅在微博就拥有2300万粉丝的雷军无疑是网友心目中的科技网红。但今天我们要聊的是另外一位小米高管任正非很欣慰!雷军终于认清事实,网友国产不被卡脖子指日可待任正非一直在倡导的科学是什么样的?我们用4件事来看看。事件一2018年7月26日,包括任正非在内的华为最高管理层,在深圳华为坂田基地的大门口等了十几分钟,他们等的是一个叫ErdalRedmi推2k性能怪兽,比友商7k手机还强,网友打鸡血了最近,小米公司推出了旗下Redmi品牌的今年旗舰手机RedmiK30S。小米公司给Redmi定下的宗旨就是贯彻极致的性价比。这样一款Redmi旗舰手机自然也是性价比满满,受到无数网射程直射宇宙?小米有品众筹强光手电,网友神火来了都不管用在众多电商平台中,小米有品是一个独特的存在。它是一个平台,同时背后有着强烈的小米品牌属性,小米有品上的产品都有深深的小米烙印。有人说,小米是制造业里最懂互联网的公司,是互联网公司里北方严寒暴雪,想要一个随身的暖手宝?最烫手机考虑一下今天微博有一个热门话题,18号的天气,北方多地暴雪,南方多地气温超31摄氏度。这也太让人难以相信了吧,身在北方的小编今天可是踏着积雪上班的,打开手机一搜南方的天气,以广州为例,广州华为公开学习苹果!挖空安卓并非说说而已,网友用5年还流畅三星S20Ultra努比亚红魔5G联想拯救者电竞手机Pro,这三款手机都有一个特点,那就是内存达到了16GB,16G512G版本!这个时候,就必须搬出来一个苹果粉丝最喜欢的观点安卓小米新机魔鬼评测5000毫安电池,满电怒跑4小时安兔兔RedmiNote9发布会上,你肯定被卢伟冰式脱口秀给逗笑了,但我接下来要跟大家讲的一件事,多半会瞬间没收你那嘴角上扬的灿烂笑容。是的,正如你说想,我要准备秀凡尔赛满分作文了。打开华为生态链玩大了!18N战略引发热议,荣耀亲选成主力华为生态链玩大了!18N战略引发热议,荣耀亲选成主力随着5G的到来,移动互联网迎来了升级,我们的手机承载着更多的功能,2020年几乎所有的智能手机厂商,在发布会宣讲的时候都会提到智