掌桥专利:专业的专利平台
掌桥专利
首页

一种生成PDF文件的优化方法、装置、设备和存储介质

文献发布时间:2023-06-19 18:30:43


一种生成PDF文件的优化方法、装置、设备和存储介质

技术领域

本申请涉及计算机领域,尤其涉及一种生成PDF文件的优化方法、装置、设备和存储介质。

背景技术

现代商业发展日新月异,商务和服务活动日趋频繁、复杂,消费者对于服务的方式、体验要求也越来越高,更好的服务方式、展示形式在商业服务中更是占据越来越重要的位置。对于投资服务类商业活动来说,投资品类极大丰富数据量极大增长,使用一种更可视化、商务化、高端化的方式展示投资者资产详细信息显得尤为必要。目前业内大多使用h5网页形式展示用户投资资产概览,各种资产的详细信息及收益明细往往是分布在不同的二级甚至三级功能页面。用户想要全面、直观地看到自己各类资产投资的信息详情比较困难,往往需要花费大量的时间,也许自己还得对这些信息进行分类整理统计才能得到自己想要的。

发明内容

鉴于上述问题,本申请提出一种生成PDF文件的优化方法、装置、设备和存储介质。

本申请实施例提出一种生成PDF文件的优化方法,包括:

将目标页面内容进行分页处理,并存储所有分页后得到的第一内容;

基于所述终端设备的功能兼容性,判断能否将所述第一内容直接生成PDF文件;

若不能,则创建打印网页页面,并将存储的所述第一内容渲染至所述打印网页页面,得到渲染后的内容,作为第二内容;

利用服务加载插件访问所述打印网页页面以加载所述第二内容,然后将所述第二内容生成PDF文件。

进一步地,在上述生成PDF文件的优化方法中,所述将目标页面内容进行分页处理包括:

根据目标页面内容的尺寸和预设PDF文件尺寸,将所述目标页面内容进行分页处理。

进一步地,在上述生成PDF文件的优化方法中,所述根据目标页面内容的尺寸和PDF文件尺寸,将所述目标页面内容进行分页处理包括:

根据所述目标页面内容确定内容的高度和宽度;

根据所述预设PDF文件尺寸、所述目标页面内容的高度和宽度,按照预设放缩比例范围将所述目标页面内容进行放缩处理,得到放缩后的内容以作为第三内容;

若所述第三内容不能在同一页打印纸内完整打印,则将所述第三内容进行分页处理。

进一步地,在上述生成PDF文件的优化方法中,所述预设PDF文件尺寸包括待生成的PDF文件高度和宽度,所述预设放缩比例范围包括预设放缩比例最小值和最大值;所述根据所述预设PDF文件尺寸、所述目标页面内容的高度和宽度,按照预设放缩比例范围将所述目标页面内容进行放缩处理包括:

计算最佳比例值,所述最佳比例值为待生成的PDF文件宽度与所述目标页面内容的宽度的比值;

若所述最佳比例值在所述预设放缩比例范围之内,则将所述目标页面内容按照最佳比例值进行放缩;

若所述最佳比例值在所述预设放缩比例范围之外,则判断所述目标页面内容的宽度是否小于待生成的PDF文件宽度;

若所述目标页面内容的宽度等于待生成的PDF文件宽度,则将1作为最佳比例值,并将所述目标页面内容按照所述最佳比例值进行放缩;

若所述目标页面内容的宽度小于待生成的PDF文件宽度,则将所述放缩比例最大值作为最佳比例值,并将所述目标页面内容按照所述最佳比例值进行放缩;

若所述目标页面内容的宽度大于待生成的PDF文件宽度,则将所述放缩比例最小值作为最佳比例值,并将所述目标页面内容按照所述最佳比例值进行放缩。

进一步地,在上述生成PDF文件的优化方法中,所述将所述第三内容进行分页处理还包括:

将所述第三内容中的所有内容高度累加在一起,计算累加后的总高度;

基于所述总高度和待生成的PDF文件的高度,确定分页符号;

根据所述分页符号进行分页。

进一步地,在上述生成PDF文件的优化方法中,所述第一内容包括图表内容和非图表内容,所述存储所有分页后的第一内容,包括:

将所述图表内容和所述非图表内容分别进行存储;

所述将所述第一内容渲染至所述打印网页页面包括:

将所述非图表内容渲染至所述打印网页页面;

通过图表插件将所述图表内容渲染至所述打印网页页面。

进一步地,在上述生成PDF文件的优化方法中,还包括:

若能直接生成PDF文件,则调用所述终端设备的打印功能加载所述第一内容并生成PDF文件。

本申请又一实施例提出一种生成PDF文件的优化方法的装置,该装置包括:

分页模块,用于将目标页面内容进行分页处理,并存储所有分页后得到的第一内容;

判断模块,用于基于所述生成PDF文件的功能所在的设备和设备安全性,判断能否直接生成PDF文件;

渲染模块,用于若不能直接生成PDF文件,则创建打印网页页面,并将存储的所述第一内容渲染至所述打印网页页面,得到渲染后的内容,作为第二内容;

生成模块,用于利用服务加载插件访问所述打印网页页面以加载所述第二内容,然后将所述第二内容生成PDF文件。

本申请又一实施例提出一种终端设备,包括存储单元和处理单元,所述存储单元中存储有计算机程序,所述处理单元通过调用所述存储单元中存储的所述计算机程序,执行如上述的生成PDF文件的优化方法的步骤。

本申请又一实施例提出一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序适于处理器进行加载,以执行如上述的生成PDF文件的优化方法的步骤。

本申请的实施例具有以下的有益效果:

本申请实施例提出一种生成PDF文件的优化方法,通过该方法能够使用前端智能分页技术预先对网页内容整体进行分页,然后利用浏览器的打印功能将网页生成PDF文档,从而以极高的还原度生成图文混合的复杂PDF文档。并且生成文档过程快速、简单、适应范围广,没有大文件传输带来的体验等待感。同时一份优秀、详细、全面、漂亮的投资报告PDF文档客户带来极高的投资体验,也有助于给客户带来资产的安全感和信任感。对于公司来说不仅带来了客户的粘性、忠诚度也有助于公司专业人士更好的为客户解读投资信息,帮助客户及时调整投资结构并且有助于新流量的引入,对业务发展形成正循环。

附图说明

为了更清楚地说明本申请的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对本申请保护范围的限定。在各个附图中,类似的构成部分采用类似的编号。

图1示出了本申请一些实施方式的生成PDF文件的优化方法的第一流程示意图;

图2示出了本申请一些实施方式的生成PDF文件的优化方法的第二流程示意图;

图3示出了本申请一些实施方式的生成PDF文件的优化方法的第三流程示意图;

图4示出了本申请一些实施方式的生成PDF文件的优化方法的第四流程示意图;

图5示出了本申请一些实施方式的生成PDF文件的优化方法的装置结构示意图。

具体实施方式

下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。

通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。

在下文中,可在本申请的各种实施例中使用的术语“包括”、“具有”及其同源词仅意在表示特定特征、数字、步骤、操作、元件、组件或前述项的组合,并且不应被理解为首先排除一个或更多个其它特征、数字、步骤、操作、元件、组件或前述项的组合的存在或增加一个或更多个特征、数字、步骤、操作、元件、组件或前述项的组合的可能性。

此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

除非另有限定,否则在这里使用的所有术语(包括技术术语和科学术语)具有与本申请的各种实施例所属领域普通技术人员通常理解的含义相同的含义。术语(诸如在一般使用的词典中限定的术语)将被解释为具有与在相关技术领域中的语境含义相同的含义并且将不被解释为具有理想化的含义或过于正式的含义,除非在本申请的各种实施例中被清楚地限定。

下面结合附图,对本申请的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互结合。

通常地,一些针对大客户生成的一些投资报表,但是这类报表往往不太直观、全面,视角效果也比较差。目前主流生成PDF有两种方案,第一种方案是纯后端生成,第二种方案是前端将分页排版好的html网页通过canvas技术转成图片,然后导出成PDF文档。而canvas将html网页转换成图片过程在现有canvas技术下有一些不足。比如一些css样式特别是css3样式支持有限、转换的html内容太大就转换不成功、html内容中含有大图片也可能导致转换失败,而且就算成功也可能导致转换出来后图片清晰度下降比较大、转换的内容在不同设备有大小限制而且限制不一样、转换过程比较耗时等等问题出现。

方案一纯后端生成比较适合纯文本、表格类的文档,不适合生成复杂的图文混合文档;方案二纯前端生成虽然可以生成图文混合文档但是在各种设备上有限制,比如生成的图片内容不能太大否则无法生成,一些前端样式效果等有兼容性问题导致生成出来的效果失真等。这些都或多或少对效果的完美实现打了一定的折扣。所以,需要基于大数据能力输出千人千面的全面的详细投资报告并以良好的图文效果生成PDF发送给客户则让用户投资体验极大提升。

因此,本申请提出一种生成PDF文件的优化方法、装置、设备和存储介质。

请参照图1,为本申请实施例提出的生成PDF文件的优化方法的一种流程图。

在一些实施方式中,生成PDF文件的优化方法可以包括:

S101,将目标页面内容进行分页处理,并存储所有分页后得到的第一内容。

具体地,获取目标页面内容,将目标页面内容进行分页处理,将每页内容进行存储,将存储后的所有页的内容称作第一内容。其中,目标页面内容为客户所需要转成PDF文件的html页面上的资料。

在一些实施方式中,将目标页面内容进行分页处理包括:

根据目标页面内容的尺寸和预设PDF文件尺寸,将目标页面内容进行分页处理。

具体地,由于所要转成PDF文件的目标页面内容包括成多个内容,例如,目标页面内容包括了一个页面中的多种内容或多个页面内容且每个页面中的内容不同。其中不同内容的尺寸不一样,而且在不同场景中所需要的PDF文件尺寸也会不同,所以需要针对目标页面内容的尺寸和预设PDF文件尺寸对目标页面内容进行分页处理。其中,目标页面内容的尺寸和PDF的尺寸包括高度和宽度等,预设PDF文件尺寸可以任意设置,这里不做限定。可选择地,可以在每次需要将目标页面内容转成PDF文件之前进行设置。优选择地,可以选择一种预设尺寸作为每次转换的PDF文件默认尺寸,如果需要修改则可以在转换PDF文件之前修改即可。当然默认尺寸也是可以任意设置,这里不做限定。

在一些实施方式中,如图2所示,根据目标页面内容的尺寸和PDF文件尺寸,将目标页面内容进行分页处理包括:

S102,根据目标页面内容确定内容的高度和宽度。

S103,根据预设PDF文件尺寸、目标页面内容的高度和宽度,按照预设放缩比例范围将目标页面内容进行放缩处理,得到放缩后的内容以作为第三内容。

具体地,目标页面内容包括至少一个页面内容。当然,当目标页面内容包括多个页面内容时,每种页面的高度和宽度可能都不一样。所以需要根据目标页面内容的高度和宽度,以及预设的PDF文件尺寸和预设放缩比例范围将目标页面内容进行排版。其中,目标页面内容的高度和宽度包括目标页面内容中至少一个页面的页面内容的高度和宽度。其中,预设放缩比例范围可以任意设置,例如80%至120%、70%至140%等,这里不做限定。

进一步地,如图3所示,预设PDF文件尺寸包括待生成的PDF文件高度和宽度,预设放缩比例范围包括预设放缩比例最小值和最大值;根据预设PDF文件尺寸、目标页面内容的高度和宽度,按照预设放缩比例范围将目标页面内容进行放缩处理包括:

S1031,计算最佳比例值,最佳比例值为待生成的PDF文件宽度与目标页面内容的宽度的比值。

S1032,若最佳比例值在预设放缩比例范围之内,则将目标页面内容按照最佳比例值进行放缩。

S1033,若最佳比例值在预设放缩比例范围之外,则判断目标页面内容的宽度是否小于待生成的PDF文件宽度。

S1034,若目标页面内容的宽度等于待生成的PDF文件宽度,则将1作为最佳比例值,并将目标页面内容按照最佳比例值进行放缩。

S1035,若目标页面内容的宽度小于待生成的PDF文件宽度,则将放缩比例最大值作为最佳比例值,并将目标页面内容按照最佳比例值进行放缩。

S1036,若目标页面内容的宽度大于待生成的PDF文件宽度,则将放缩比例最小值作为最佳比例值,并将目标页面内容按照最佳比例值进行放缩。

具体地,先计算最佳比例值,最佳比例值为待生成的PDF文件宽度与目标页面内容的宽度的比值,再判断最佳比例值是否在放缩比例范围之内。其中,放缩比例范围包含放缩比例最大值和放缩比例最小值,目标页面内容包括至少一个页面内容。

若最佳比例值不在放缩比例范围内,则判断目标页面内容的宽度是否小于待生成的PDF文件宽度。若目标页面内容的宽度小于待生成的PDF文件宽度,则选取放缩比例最大值作为最佳比例值,将目标页面内容的高度和宽度按照最佳比例值进行放大处理;若目标页面内容的宽度大于待生成的PDF文件宽度,则选取放缩比例最小值作为最佳比例值,将目标页面内容的高度和宽度按照最佳比例值进行缩小处理;若目标页面内容的宽度等于待生成的PDF文件宽度,则选取1作为最佳比例值,对目标页面内容的高度和宽度不做处理。

若最佳比例值在放缩比例范围内,则直接利用计算出的最佳比例值对目标页面内容进行放缩处理。其中,放大和缩小处理为将目标页面内容的宽度和高度乘上对应的最佳比例值。

示范性地,若预设的放缩比例范围为0.75至1.25,目标页面内容的宽度为10cm,高度为15cm,预设的PDF文件宽度为20cm,则最佳比例值为20/10=2,而最佳比例值2不在放缩比例范围0.75至1.25内,则判断目标页面内容的宽度10cm是否小于预设PDF文件宽度20cm,判断出目标页面内容的宽度小于预设PDF文件宽度,则选择1.25作为最佳比例值,再对目标页面内容进行放大处理,即将目标页面内容的宽度和高度分别与最佳比例值1.25相乘,得到放大后的第三内容,则第三内容的宽度为12.5cm,高度为18.75cm。

S104,若第三内容不能在同一页打印纸内完整打印,则将第三内容进行分页处理。

具体地,判断第三内容是否可以在一页打印纸内打印,其中一页打印纸的尺寸为预设PDF文件尺寸,若不能则需要将第三内容进行分页处理,分成多页。

在一些实施方式中,如图4所示,则将放缩后的目标页面内容进行分页处理还包括:

S1041,将第三内容中的所有内容高度累加在一起,计算累加后的总高度。

具体地,第三内容包括很多不同的页面内容,将所有页面内容的高度全都累加在一起,就像将无数张纸宽与宽黏在一起形成一张非常长的大纸。最后计算出累加后的总高度。

S1042,基于总高度和待生成的PDF文件的高度,确定分页符号。

S1043,根据分页符号进行分页。

具体地,分页符号为上一页和下一页分开的标记,从一个分页符号分开则可以将一张纸分成2页纸,若分页标记为n个,则可以将一张纸分成(n+1)页纸。

S201,基于终端设备的功能兼容性,判断能否将第一内容直接生成PDF文件。

具体地,由于不同设备对网页内容分页功能不同,则会使得不同设备将html页面上的目标页面内容生成PDF文件的方式不同。例如,IOS移动设备因为一些涉及业务数据安全性等限制的安全性原因无法直接在浏览器上生成文件并下载到本地。

S301,若第一内容不能直接生成PDF文件,则创建打印网页页面,并将存储的第一内容渲染至打印网页页面,得到渲染后的内容,作为第二内容。

具体地,若第一内容不能直接生成PDF文件,则获取存储的第一内容,将第一内容渲染至所创建的打印网页页面。

进一步地,由于渲染图表时需要注意图表的渲染清晰度问题,因为主流画图插件画图时默认使用当前设备上浏览器的DPR(即物理像素与逻辑像素的比)来渲染图表,不同设备DPR可能不一样,所以在不同的设备上图表清晰度会不一样。所以可以设置相同的渲染精度参数可以使清晰度一致。其中渲染精度参数可以根据情况任意设置,这里不做限定。

在一些实施方式中,第一内容包括图表内容和非图表内容,存储所有分页后的第一内容,包括:

将图表内容和非图表内容分别进行存储。

具体地,为了使得图片和表格能更清晰的展示出来,需要将第一内容中的图表内容和非图表内容进行拆分,其中非图表内容指不是图片和表格的内容,包括文字符号字母等。将图表内容和非图表内容分别进行存储,为了之后更方便操作。

将第一内容渲染至打印网页页面包括:

将非图表内容渲染至打印网页页面。

通过图表插件将图表内容渲染至打印网页页面。

具体地,将非图表内容直接渲染至打印网页页面,而图表内容则需要借助相应的图表插件来渲染。

S401,利用服务加载插件访问打印网页页面以加载第二内容,然后将第二内容生成PDF文件。

具体地,则可以通过服务端技术在服务端创建服务加载插件,来加载分页排版后的网页,然后调用打印功能生成PDF文件,此过程不需要额外的开发成本。可选择地,可以利用chrome加载插件来加载分页排版后的网页,然后调用chrome打印功能生成对应的PDF文件。

在一些实施方式中,生成PDF文件的优化方法还包括:

若第一内容能直接生成PDF文件,则调用设备的打印功能生成PDF文件。

本申请实施例提出一种生成PDF文件的优化方法,通过该方法能够使用前端智能分页技术预先对网页内容整体进行分页,然后利用浏览器的打印功能将网页生成PDF文档,从而以极高的还原度生成图文混合的复杂PDF文档。因为浏览器的打印功能相当于对网页内容进行复印所以不会有样式效果的兼容性问题,能够很好的还原真实效果。对于IOS移动设备因为一些涉及业务数据安全性等限制的安全性原因无法直接在浏览器上生成文件并下载到本地。可以通过服务端技术在服务端创建服务加载chrome插件来加载分页排版后的网页,然后调用chrome打印功能生成PDF,过程也是不需要额外的开发成本。

在通过服务端技术辅助生成PDF时,需要将分页后的数据(如html内容、图表数据)等存储下来,然后创建一个打印网页,在打印网页中加载存储的数据,对于图表需要将图表数据获取后重新调用图表插件重新渲染图表内容。除了避免主流纯前端生成方案的样式效果兼容性问题,本方案并没有使用上述方案二中使用canvas技术将网页内容转换成图片的技术,该技术在使用时会占用设备比较多的内存,特别是要转换的内容包含图形比较多的时候,所以当内容复杂度超过一定的限制是无法成功转换的。

而且上述方案二在将网页内容转换成图片后还需要借助前端插件将图片插入PDF文档,在网页内容比较长时是需要拆分成多份文档后传输给后端合并成一份完整的PDF文档,在传输拆分文档的过程中会比较耗时,并且需要处理文档并行传输带来的文档顺序问题,导致实现复杂度大大提升,性能也不太好。本方案则不需要这么复杂的处理流程,只需要直接借用浏览器打印生成PDF能力将当前分好页的网页直接生成PDF即可简单可靠适用范围广泛。不论网页内容怎样,不管是一级还是二级三级页面,只要使用智能分页技术将当前网页内容分页排版后就可以使用同样的方案将网页转成PDF文档。

请参考图5,本申请又一实施例提出一种生成PDF文件的优化方法的装置500,该装置500包括:

分页模块501,用于将目标页面内容进行分页处理,并存储所有分页后得到的第一内容。

判断模块502,用于基于生成PDF文件的功能所在的设备和设备安全性,判断能否直接生成PDF文件。

渲染模块503,用于若不能直接生成PDF文件,则创建打印网页页面,并将存储的第一内容渲染至打印网页页面,得到渲染后的内容,作为第二内容。

生成模块504,用于利用服务加载插件访问打印网页页面以加载第二内容,然后将第二内容生成PDF文件。

可以理解,本实施例的方法步骤对应于上述实施例中的生成PDF文件的优化方法,其中,上述生成PDF文件的优化方法的可选项同样适用于本实施例,这里不再重复描述。

本申请又一实施例提出一种终端,包括存储单元和处理单元,存储单元中存储有计算机程序,处理单元通过调用存储单元中存储的计算机程序,执行如上述的生成PDF文件的优化方法的步骤。

本申请又一实施例提出一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序适于处理器进行加载,以执行如上述的生成PDF文件的优化方法的步骤。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和结构图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,结构图和/或流程图中的每个方框、以及结构图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

另外,在本申请各个实施例中的各功能模块或单元可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或更多个模块集成形成一个独立的部分。

所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是智能手机、个人计算机、服务器、或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。

相关技术
  • 代码文件生成方法、装置、计算机设备和存储介质
  • 类文件生成方法、装置、电子设备及存储介质
  • 交互设计工具文件生成方法、装置、电子设备及存储介质
  • 一种文件同步方法、装置、设备及计算机可读存储介质
  • 一种压缩文件管理方法、装置、计算机设备及存储介质
  • 一种PDF文件的生成方法、装置、设备及可读存储介质
  • PDF文件的生成方法、装置、电子设备及计算机存储介质
技术分类

06120115594186