基于国产环境的WEB系统中PDF展示方法及系统技术方案

技术编号:37463544 阅读:23 留言:0更新日期:2023-05-06 09:36
本发明专利技术公开了基于国产环境的WEB系统中PDF展示方法及系统,属于WEB系统应用技术领域,要解决的技术问题为如何实现国产环境下WEB系统中超大PDF的展示。包括如下步骤:在WEB系统前端集成pdf.js开源插件,通过pdf.js开源插件加载展现PDF文件;在WEB系统后端加入基于Python语言开发的PDF处理服务,PDF处理服务提供多个进程和多个队列;基于PDF处理服务提供的多个线程以及多个队列,通过将PDF文件拆分成多个图片、并对拆分后的图片进行压缩、转换及合成的方式来生成一个新的PDF文件;将PDF文件存储至硬盘或数据库;通过WEB系统后台的java接口调用读取新的PDF文件进行展示。java接口调用读取新的PDF文件进行展示。java接口调用读取新的PDF文件进行展示。

【技术实现步骤摘要】
基于国产环境的WEB系统中PDF展示方法及系统


[0001]本专利技术涉及WEB系统应用
,具体地说是基于国产环境的WEB系统中PDF展示方法及系统。

技术介绍

[0002]具有自主知识产权的全国产软硬件有了较快的发展,尤其是近年来我国涌现了众多具有自主知识产权的基础软硬件产品。龙芯、飞腾、北大众志等具有自主知识产权的高端通用芯片蓬勃发展,技术水平达到了同类产品的世界先进水平。
[0003]基于全国产环境微服务架构的软件系统已经在很多地区投入使用。在项目上,很多WEB系统都有PDF展示功能,而且客户上传的PDF文件有时候会很大达上百兆,使得前端页面加载起来十分的慢甚至浏览器卡顿加载不出来。
[0004]如何实现国产环境下WEB系统中超大PDF的展示,是需要解决的技术问题。

技术实现思路

[0005]本专利技术的技术任务是针对以上不足,提供基于国产环境的WEB系统中PDF展示方法及系统,来解决如何实现国产环境下WEB系统中超大PDF的展示的技术问题。
[0006]第一方面,本专利技术基于国产环境的WEB系统中PDF展示方法,包括如下步骤:
[0007]在WEB系统前端集成pdf.js开源插件,通过pdf.js开源插件加载展现PDF文件;
[0008]在WEB系统后端加入基于Python语言开发的PDF处理服务,所述PDF处理服务提供多个进程和多个队列,每个进程由多个线程组成,所述多个进程由Python的进程池提供,进程之间相互独立且每个进程中开启有多个线程,所述多个进程基于Go语言的协程实现;
[0009]基于所述PDF处理服务提供的多个线程以及多个队列,通过将PDF文件拆分成多个图片、并对拆分后的图片进行压缩、转换及合成的方式来生成一个新的PDF文件;
[0010]将所述PDF文件存储至硬盘或数据库;
[0011]通过WEB系统后台的java接口调用读取所述新的PDF文件进行展示。
[0012]作为优选,所述PDF处理服务提供的多个进程包括:
[0013]PDF文件拆分进程,所述PDF拆分进程用于将PDF文件拆分为多个图片;
[0014]图片压缩进程,所述图片压缩进程用于对拆分得到的每个图片进行压缩;
[0015]图片转换进程,所述图片转换进程用于将压缩后的图片转换为PDF文件;
[0016]图片合成进程,所述图片合成进程用于将转换得到的PDF文件合并为一个压缩后的PDF文件作为新的PDF文件;
[0017]对应的,所述多个队列包括:
[0018]待压缩队列,所述带压缩队列用于存储拆分得到的图片;
[0019]待转换队列,所述待转换队列用于存储压缩后的图片;
[0020]待合成队列,所述待合成队列用于存储通过图片转换进程得到的PDF文件。
[0021]作为优选,基于所述PDF处理服务提供的多个线程以及多个队列,通过将PDF文件
拆分成多个图片、并对拆分后的图片进行压缩、转换、合成的方式来生成一个新的PDF文件,包括如下步骤:
[0022]基于PDF文件拆分进程,根据PDF文件的页数、通过Python提供的fitz库将PDF文件拆分为多个图片,将得到的图片存储至待压缩队列;
[0023]从带压缩队列中读取图片,基于图片压缩进程对图片进行图片压缩,得到压缩后的图片,并将得到的压缩后的图片存储至待转换队列;
[0024]从待转换队列中读取压缩后的图片,基于图片转换进程、通过Python提供的fitz库中的convert_to_pdf()将每个压缩后的图片转换为PDF文件,并将转换得到的PDF文件存储至待合成队列;
[0025]从待合成队列中读取PDF文件,并基于图片合成进程、通过insert_pdf()插入文档的方法将所述PDF文件合并为一个新的PDF文件。
[0026]作为优选,所述PDF处理服务还提供添加水印进程和待加水印队列,所述添加水印进程用于为合成的新的PDF文件添加水印,所述待加水印队列用于存储合成的PDF文件;
[0027]基于图片合成进程将所述PDF文件合并为一个新的PDF文件后,从待加水印队列读取新的PDF文件,并基于添加水印进程为所述新的PDF文件添加水印。
[0028]作为优选,通过pdf.js开源插件加载展现PDF文件,包括如下步骤:
[0029]修改pdf.js采用分片加载的方式,优先展示当前页,同时需要修改服务端PDF文件文件展示的java接口,在java接口添加HTTP

Range响应头来实现分片加载;
[0030]关闭pdf.js的预读取功能,禁止把整个pdf文件提前下载以减少流量消耗。
[0031]第二方面,本专利技术基于国产环境的WEB系统中PDF展示系统,用于通过如第一方面任一项所述的基于国产环境的WEB系统中PDF展示方法,实现国产环境下WEB系统中PDF文件的展示,所述系统包括:
[0032]前端加载模块,所述前端加载模块用于在WEB系统前端集成pdf.js开源插件,通过pdf.js开源插件加载展现PDF文件;
[0033]PDF处理服务添加模块,所述PDF处理服务添加模块用于在WEB系统后端加入基于Python语言开发的PDF处理服务,所述PDF处理服务提供多个进程和多个队列,每个进程由多个线程组成,所述多个进程由Python的进程池提供,进程之间相互独立且每个进程中开启有多个线程,所述多个进程基于Go语言的协程实现;
[0034]PDF文件压缩处理模块,所述PDF文件压缩处理模块用于基于所述PDF处理服务提供的多个线程以及多个队列,通过将PDF文件拆分成多个图片、并对拆分后的图片进行压缩、转换及合成的方式来生成一个新的PDF文件;
[0035]PDF文件存储模块,所述PDF文件存储模块用于将所述PDF文件存储至硬盘或数据库;
[0036]PDF文件展示模块,所述PDF文件展示模块用于通过WEB系统后台的java接口调用读取所述新的PDF文件进行展示。
[0037]作为优选,所述PDF处理服务提供的多个进程包括:
[0038]PDF文件拆分进程,所述PDF拆分进程用于将PDF文件拆分为多个图片;
[0039]图片压缩进程,所述图片压缩进程用于对拆分得到的每个图片进行压缩;
[0040]图片转换进程,所述图片转换进程用于将压缩后的图片转换为PDF文件;
[0041]图片合成进程,所述图片合成进程用于将转换得到的PDF文件合并为一个压缩后的PDF文件作为新的PDF文件;
[0042]对应的,所述多个队列包括:
[0043]待压缩队列,所述带压缩队列用于存储拆分得到的图片;
[0044]待转换队列,所述待转换队列用于存储压缩后的图片;
[0045]待合成队列,所述待合成队列用于存储通过图片转换进程得到的PDF文件。
[0046]作为优选,所述PD本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.基于国产环境的WEB系统中PDF展示方法,其特征在于,包括如下步骤:在WEB系统前端集成pdf.js开源插件,通过pdf.js开源插件加载展现PDF文件;在WEB系统后端加入基于Python语言开发的PDF处理服务,所述PDF处理服务提供多个进程和多个队列,每个进程由多个线程组成,所述多个进程由Python的进程池提供,进程之间相互独立且每个进程中开启有多个线程,所述多个进程基于Go语言的协程实现;基于所述PDF处理服务提供的多个线程以及多个队列,通过将PDF文件拆分成多个图片、并对拆分后的图片进行压缩、转换及合成的方式来生成一个新的PDF文件;将所述PDF文件存储至硬盘或数据库;通过WEB系统后台的java接口调用读取所述新的PDF文件进行展示。2.根据权利要求1所述的基于国产环境的WEB系统中PDF插件展示方法,其特征在于,所述PDF处理服务提供的多个进程包括:PDF文件拆分进程,所述PDF拆分进程用于将PDF文件拆分为多个图片;图片压缩进程,所述图片压缩进程用于对拆分得到的每个图片进行压缩;图片转换进程,所述图片转换进程用于将压缩后的图片转换为PDF文件;图片合成进程,所述图片合成进程用于将转换得到的PDF文件合并为一个压缩后的PDF文件作为新的PDF文件;对应的,所述多个队列包括:待压缩队列,所述带压缩队列用于存储拆分得到的图片;待转换队列,所述待转换队列用于存储压缩后的图片;待合成队列,所述待合成队列用于存储通过图片转换进程得到的PDF文件。3.根据权利要求2所述的基于国产环境的WEB系统中PDF插件展示方法,其特征在于,基于所述PDF处理服务提供的多个线程以及多个队列,通过将PDF文件拆分成多个图片、并对拆分后的图片进行压缩、转换、合成的方式来生成一个新的PDF文件,包括如下步骤:基于PDF文件拆分进程,根据PDF文件的页数、通过Python提供的fitz库将PDF文件拆分为多个图片,将得到的图片存储至待压缩队列;从带压缩队列中读取图片,基于图片压缩进程对图片进行图片压缩,得到压缩后的图片,并将得到的压缩后的图片存储至待转换队列;从待转换队列中读取压缩后的图片,基于图片转换进程、通过Python提供的fitz库中的convert_to_pdf()将每个压缩后的图片转换为PDF文件,并将转换得到的PDF文件存储至待合成队列;从待合成队列中读取PDF文件,并基于图片合成进程、通过insert_pdf()插入文档的方法将所述PDF文件合并为一个新的PDF文件。4.根据权利要求3所述的基于国产环境的WEB系统中PDF插件展示方法,其特征在于,所述PDF处理服务还提供添加水印进程和待加水印队列,所述添加水印进程用于为合成的新的PDF文件添加水印,所述待加水印队列用于存储合成的PDF文件;基于图片合成进程将所述PDF文件合并为一个新的PDF文件后,从待加水印队列读取新的PDF文件,并基于添加水印进程为所述新的PDF文件添加水印。5.根据权利要求1

4任一项所述的基于国产环境的WEB系统中PDF插件展示方法,其特征在于,通过pdf.js开源插件加载展现PDF文件,包括如下步骤:
修改pdf.js采用分片加载的方式,优先展示当前页,同时需要修改服务端PDF文件文件展示的java接口,在java接口添加HTTP

Range响应头来实现分片加载;关闭pdf.js的预读取功能,禁止把整个pdf文件提前下载以减少流量消耗。6.基于国产环境的WEB系统中PDF展示系统,其特征在于,用于通过如权利要求1

5任一项所述的基于国产环境的W...

【专利技术属性】
技术研发人员:王威焦方忠
申请(专利权)人:浪潮软件集团有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1