• 四川郎酒股份有限公司获第十二届人民企业社会责任奖年度环保奖 2019-05-13
  • 银保监会新规剑指大企业多头融资和过度融资 2019-05-12
  • 韩国再提4国联合申办世界杯 中国网友无视:我们自己来 2019-05-11
  • 中国人为什么一定要买房? 2019-05-11
  • 十九大精神进校园:风正扬帆当有为 勇做时代弄潮儿 2019-05-10
  • 粽叶飘香幸福邻里——廊坊市举办“我们的节日·端午”主题活动 2019-05-09
  • 太原设禁鸣路段 设备在测试中 2019-05-09
  • 拜耳医药保健有限公司获第十二届人民企业社会责任奖年度企业奖 2019-05-08
  • “港独”没出路!“梁天琦们”该醒醒了 2019-05-07
  • 陈卫平:中国文化内涵包含三方面 文化复兴表现在其中 2019-05-06
  • 人民日报客户端辟谣:“合成军装照”产品请放心使用 2019-05-05
  • 【十九大·理论新视野】为什么要“建设现代化经济体系”?   2019-05-04
  • 聚焦2017年乌鲁木齐市老城区改造提升工程 2019-05-04
  • 【专家谈】上合组织——构建区域命运共同体的有力实践者 2019-05-03
  • 【华商侃车NO.192】 亲!楼市火爆,别忘了买车位啊! 2019-05-03
    • / 6
    • 下载费用:30 金币  

    重庆时时彩在哪可以买: 一种电子文档在线预览优化的方法.pdf

    摘要
    申请专利号:

    重庆时时彩单双窍门 www.4mum.com.cn CN201410175058.X

    申请日:

    2014.04.29

    公开号:

    CN103955401A

    公开日:

    2014.07.30

    当前法律状态:

    撤回

    有效性:

    无权

    法律详情: 发明专利申请公布后的视为撤回IPC(主分类):G06F 9/46申请公布日:20140730|||实质审查的生效IPC(主分类):G06F 9/46申请日:20140429|||公开
    IPC分类号: G06F9/46 主分类号: G06F9/46
    申请人: 南京新模式软件集成有限公司
    发明人: 张晓东; 毕永政; 陈万江; 王玉
    地址: 210061 江苏省南京市高新开发区软件中心510室
    优先权:
    专利代理机构: 江苏圣典律师事务所 32237 代理人: 郭先彬
    PDF完整版下载: PDF下载
    法律状态
    申请(专利)号:

    CN201410175058.X

    授权公告号:

    ||||||

    法律状态公告日:

    2018.03.02|||2014.08.27|||2014.07.30

    法律状态类型:

    发明专利申请公布后的视为撤回|||实质审查的生效|||公开

    摘要

    本发明涉及电子文档在线预览,尤其涉及一种电子文档在线预览优化的方法。所述方法使用JodConverter调用OpenOffice.org服务将所要预览的电子文件转换成PDF文件,然后使用SwfTools中的pdf2swf将PDF文件转换成Flash文件,根据服务器CPU内核数量设定端口数量,根据端口号开启soffice.bin进程;根据服务器实际可用内存大小设置每个soffice.bin进程可执行的最大任务数。该方法还包括根据服务器的CPU实际内核数设置线程池内可运行的最大线程数;根据最大线程数创建一个可重用固定线程数的线程池;循环执行线程池中的线程;存储处于等待的线程。本发明方法可以有效防止多个转换任务同时进行的情况下服务器CPU资源耗尽和内存溢出。

    权利要求书

    权利要求书
    1.  一种电子文档在线预览优化的方法,所述方法使用JodConverter调用OpenOffice服务将所要预览的电子文件转换成PDF文件,使用SwfTools中的pdf2swf将PDF文件转换成Flash文件,其特征在于包括以下步骤:
    (1)根据服务器CPU内核数量设定端口数量,所设定的端口数量不大于服务器CPU内核数量;
    (2)JodConverter在启动OpenOffice服务时根据端口号开启soffice.bin进程,每个soffice.bin进程使用不同的端口号。

    2.  根据权利要求1所述的电子文档在线预览优化的方法,其特征在于还包括以下步骤: 
    (1)根据服务器实际可使用内存大小设置每个soffice.bin进程可执行的最大任务数;
    (2)当soffice.bin进程所执行的任务数超过JodConverter设置的最大任务数时,JodConverter将该进程关闭并重新创建新的进程。

    3.  根据权利要求1所述的电子文档在线预览优化的方法,其特征在于还包括:使用SwfTools中的pdf2swf将PDF文件转换成Flash文件的方法包括以下步骤:
    (1)根据服务器的CPU实际内核数设置线程池内可运行的最大线程数;
    (2)根据最大线程数创建一个可重用固定线程数的线程池;
    (3)以共享的无界队列方式运行线程池中的线程;
    (4)存储处于等待的线程,以保证所有转换任务都能够得到执行。

    4.  根据权利要求3所述的电子文档在线预览优化的方法,其特在于还包括:创建一个线程,该线程用于输出转换过程中可能产生的错误信息。

    5.  根据权利要求1、2、3或4所述的电子文档在线预览优化的方法,其特征在于还包括:
    (1)设置文档转换失败次数的最大值;
    (2)设置状态变量标识转换状态,在任务开始时,将变量设置为正在转换状态;在任务结束后,将变量设置为转换完成;在文档转换过程中,系统根据状态变量给予用户反??;
    (3)在文档转换过程中累计转换失败次数,当失败次数未超过设置的最大值时,在文档转换失败时,系统主动再次进行转换;当失败次数超过设置的最大值时,提示用户联系管理员。

    说明书

    说明书一种电子文档在线预览优化的方法
    技术领域
    本发明涉及电子文档在线预览,尤其涉及一种电子文档在线预览优化的方法,属于计算机信息管理技术领域。
    背景技术
    文档在线预览可为用户提供方便快捷的阅读体验,用户无需下载原文件、无需安装阅读文档所需要的软件环境,只需要使用网页浏览器即可实现在线快速预览。另外,对于文档信息提供方来说,文档在线预览在一定程度上可以防止原文件被篡改和盗取,提高了信息共享的安全性。
    目前文档在线预览主要采取的解决方案为,首先将Office文件或文本文件转换成PDF格式文件,然后将PDF文件转换成SWF文件后,使用Flash播放器在浏览器端展现给用户。
    将原文件转为PDF文件的解决方案目前有三种。第一种是调用虚拟打印机,将原文件打印成PDF文件。这种方案需要在服务器端安装Office软件和虚拟打印机,转换过程不易控制,使用起来不方便。第二种是使用Jacob或JCom调用MS Office或者WPS Office API来实现PDF文件转换,这种方案需要服务器端安装需要付费使用的MicroSoft Office软件,且只能部署在Windows平台,跨平台性不好。第三种方案是使用JodConverter调用OpenOffice.org服务来进行PDF文件转换,是目前使用的比较多的一种方法。OpenOffice.org是一款免费的Office软件,其可在Windows和Linux平台下安装,具有很好的跨平台性。
    将PDF文件转换成Flash文件,目前主要使用SwfTools中的pdf2swf工具来实现,采用Java执行命令行的方式进行文件格式转换。这种方案的缺点是每开启一个转换任务,系统就会开启一个进程,当转换任务量增多时可能会使得服务器性能急剧下降。这也成为实现文档在线预览功能时所遇到的性能瓶颈。
    并且,之前的解决方案在文档转换过程中出错时,即放弃再次进行文档转换,用户或服务提供方只能重新上传文档再次进行文档转换,降低了用户体验。
    因此,如何为用户提供方便快捷的电子文档在线预览服务,同时解决在生成预览文件时所产生的性能瓶颈,以及文档转换出错后的处理,成为一个亟待解决的问题。
    发明内容
    本发明公开了一种电子文档在线预览优化的方法,解决了在生成预览文件的文件转换过程中多任务情况下服务器性能下降的问题。
    为实现上述发明目的,本发明采取的技术方案是:一种电子文档在线预览优化的方法,所述方法使用JodConverter调用OpenOffice服务将所要预览的电子文件转换成PDF文件,然后使用SwfTools中的pdf2swf将PDF文件转换成Flash文件,其特征在于包括以下步骤: 
    第一步:根据服务器CPU内核数量设定端口数量,所设定的端口数量不大于服务器CPU内核数量;
    第二步:JodConverter在启动OpenOffice服务时根据端口号开启soffice.bin进程,每个soffice.bin进程使用不同的端口号。
    为了进一步优化服务器性能,上述方法还包括:
    第一步:根据服务器实际可使用内存大小设置每个soffice.bin进程可执行的最大任务数;
    第二步:当soffice.bin进程所执行的任务数超过JodConverter设置的最大任务数时,JodConverter将该进程关闭并重新创建新的进程。
    为了进一步解决文件转换过程中多任务情况下服务器性能下降的问题,上述方法还可以包括:使用SwfTools中的pdf2swf将PDF文件转换成Flash文件的方法包括以下步骤:
    第一步:根据服务器的CPU实际内核数设置线程池内可运行的最大线程数;
    第二步:根据最大线程数创建一个可重用固定线程数的线程池;
    第三步:以共享的无界队列方式运行线程池中的线程;
    第四步:存储处于等待的线程,以保证所有转换任务都能够得到执行。
    为了解决在转换出错时因为不及时输出进程产生的错误信息导致进程阻塞,从而导致后续排队等待的转换任务无法正常执行的问题,上述方式还可包括:创建一个线程,该线程用于输出转换过程中可能产生的错误信息,防止因转换出错导致的线程阻塞问题。
    为了解决文档转换出错时需要用户或者服务器重新上传文档再次转换的问题,上述方法还可包括以下步骤:
    第一步:设置文档转换失败次数的最大值。
    第一步:设置状态变量标识转换状态,在任务开始时,将变量设置为正在转换状态;在任务结束后,将变量设置为转换完成;在文档转换过程中,系统根据状态变量给予用户反馈。
    第三步:在文档转换过程中累计转换失败次数,当失败次数未超过设置的最大值时,在文档转换失败时,系统主动再次进行转换;当失败次数超过设置的最大值时,提示用户联系管理员。
    在服务器采用多核CPU的情况下,每个soffice.bin进程在执行转换任务时都会贪婪地用尽一个CPU内核的资源,本发明方法根据服务器CPU的内核数量控制所开启的soffice.bin进程数量以防止soffice.bin进程数量超过CPU内核数量,从而防止因为服务器资源耗尽而造成瘫痪。由于soffice.bin进程所占用的内存会随着执行任务数量的增加而增加,当已经执行的任务数超过JodConverter设置的最大任务数时,JodConverter将该进程关闭并重新创建新的进程可以释放之前进程累积的内存,从而避免内存溢出的发生。使用SwfTools中的pdf2swf作为PDF文件转SWF文件的工具,以运行命令行的方式启动转换任务时,每执行一次转换任务,都会创建一个pdf2swf.exe进程,该进程也会贪婪地使用CPU的一个内核,本发明方法根据服务器的CPU的实际内核数来对线程池内可运行的最大线程数量进行配置,能够在保证充分利用服务器资源的前提下,对pdf2swf进程数量进行控制,防止因为服务器资源耗尽导致瘫痪。设置文档转换失败次数的最大值并记录文档转换失败次数,当失败次数未达到最大值时系统主动进行再次转换,而无需用户或服务器再次上传文档,提高了用户体验。
    具体实施方式
    本方法在使用JodConverter调用OpenOffice.org服务进行PDF文件转换和使用SwfTools中的pdf2swf工具将PDF文件转换成Flash文件的电子文档在线预览方法的基础上,提出了对其文档转换性能进行优化的方法。下面根据具体实施方式,对本发明作进一步详细说明。
    服务器CPU内核数量为4核,内存为8G时,配置OpenOffice服务可使用的端口号为8100和8101,配置JodConverter可执行的最大任务数为50。最大任务数的设定根据服务器可使用内存大小、待转换的文件大小及文件内容的复杂度做判断。由于soffice.bin使用的内存大小会随着执行任务数的增加而增加,其在执行转换任务时的瞬时最大内存使用量也显著增加,如果将最大任务数设置的过大,可能会造成soffice.bin占用太多内存。在实际使用时,应根据系统的实际使用情况,对soffice.bin的内存使用情况进行监控和统计,再更改最大任务数的设置。
    在服务器启动加载系统时,JodConverter读取端口号配置,针对每个端口号开启对应的soffice.bin进程,这一过程由JodConverter自动完成。soffice.bin进程在初始空闲状态下占用内存约12M。使用不同大小的文件同时进行多个转换任务,则两个soffice.bin进程同时进行转换任务,每个进程占满一个CPU的内核,即CPU占用率为25%,内存使用率跟文档内容及文档大小有关。随着执行任务数量的增加,soffice.bin进程空闲状态下的内存使用量也在小幅度增加。
    当soffice.bin进程执行的任务数超过50,在执行第51个任务时,JodConverter结束当前soffice.bin进程,创建新的进程并继续执行转换任务,新创建进程空闲状态下内存使用率又恢复到12M左右。这一过程由JodConverter自动完成。
    服务器CPU内核数量为4核,内存为8G时,设置线程池内可运行的最大线程数为2。将最大线程数设置为2,是因为已经给soffice.bin分配了两个端口号,在soffice.bin和pdf2swf同时运行时,CPU已经接近100%。如果将最大线程数设置为4或者以上,当有超过4个转换任务同时运行时,CPU使用率会达到100%,这样就会使得CPU资源耗尽,严重影响系统内其他功能的正常使用。
    在系统运行时,创建最大线程数为2的线程池。将完成pdf转swf任务的线程作为参数传递给线程池,由线程池启动该线程。使用Java JDK提供的线程池管理类java.util.concurrent.Executors,该类可创建不同功能特性的线程池;使用Executors.newFixedThreadPool(int nThreads)来创建一个可重用固定线程数的线程池,以共享的无界队列方式来运行这些线程,nThreads参数用来控制线程池内运行状态线程的数量。其内部采用LinkedBlockingQueue<Runnable>来存放等待的线程,这样可以尽可能地保证所有转换任务都可以得到执行。
    在Pdf2SwfThread线程中执行转换任务,DealWithOutputThread负责输出转换过程中的正常输出内容,DealWithErrorThread负责输出转换过程中产生的错误信息。
    针对文档转换出错时需要用户或者服务器重新上传文档再次转换的问题,具体实施方式如下:
    (1)    针对待转换文档A,设置最大失败次数为3次;
    (2)    将A的文档信息封装在一个对象中,设置装换状态变量isConverting,设置转换失败次数变量failureTimes(默认为0),对象信息应是可以存放在缓存,或可持久化的存储器中,以保证状态变量的值不丢失;
    (3)    在文档开始转换时,将isConverting设置为true,表示正在进行转换,如果此时用户请求预览A文档,则给用户提示“正在准备可预览资源,请稍候”;
    (4)    如果在转换过程中发生错误,变量failureTimes累加1,并将isConverting变量设置为false,如果此时用户请求预览A文档,系统判断存放A文档信息的对象中isConverting为false,且failureTimes大于0,且提示用户“正在尝试重新获取预览资源,请稍等”,此时,系统再次开启文档转换任务,重新对A文档进行格式转换,如果failureTimes大于等于3,则放弃重新转换,提示用户“获取可预览资源失败,请联系管理员”;
    (5)    当用户请求预览A文档时,系统判断存放A文档信息的对象中isConverting为false,failureTimes小于3,则将可预览资源提供给用户查看。

    关 键 词:
    一种 电子 文档 在线 预览 优化 方法
      专利查询网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:一种电子文档在线预览优化的方法.pdf
    链接地址://www.4mum.com.cn/p-6142994.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服客服 - 联系我们

    [email protected] 2017-2018 www.4mum.com.cn网站版权所有
    经营许可证编号:粤ICP备17046363号-1 
     


    收起
    展开
  • 四川郎酒股份有限公司获第十二届人民企业社会责任奖年度环保奖 2019-05-13
  • 银保监会新规剑指大企业多头融资和过度融资 2019-05-12
  • 韩国再提4国联合申办世界杯 中国网友无视:我们自己来 2019-05-11
  • 中国人为什么一定要买房? 2019-05-11
  • 十九大精神进校园:风正扬帆当有为 勇做时代弄潮儿 2019-05-10
  • 粽叶飘香幸福邻里——廊坊市举办“我们的节日·端午”主题活动 2019-05-09
  • 太原设禁鸣路段 设备在测试中 2019-05-09
  • 拜耳医药保健有限公司获第十二届人民企业社会责任奖年度企业奖 2019-05-08
  • “港独”没出路!“梁天琦们”该醒醒了 2019-05-07
  • 陈卫平:中国文化内涵包含三方面 文化复兴表现在其中 2019-05-06
  • 人民日报客户端辟谣:“合成军装照”产品请放心使用 2019-05-05
  • 【十九大·理论新视野】为什么要“建设现代化经济体系”?   2019-05-04
  • 聚焦2017年乌鲁木齐市老城区改造提升工程 2019-05-04
  • 【专家谈】上合组织——构建区域命运共同体的有力实践者 2019-05-03
  • 【华商侃车NO.192】 亲!楼市火爆,别忘了买车位啊! 2019-05-03