本技术涉及数据处理,具体而言,涉及一种pdf文档生成方法及装置。
背景技术:
::1、目前,随着web技术的发展,web开发已进入前后端开发彻底分离的时代,在前端领域发展出了众多开发框架,用于提升前端开发的效率和可维护性,在很多应用中具有根据用户数据动态生成pdf(portable document format,可携带文件格式)文档的需求,现有的pdf文档处理方法,通常由前端开发人员负责编写出符合设计的html(hyper text markuplanguage,超文本标记语言)模板,再交由后端开发人员注入数据并生成pdf文档。2、然而,在实践中发现,当pdf文档的内容和样式设计过于庞大和复杂时,那么由前端开发人员维护的html模板代码也可能达到几百甚至上千行的地步,并且无法通过模块划分代码,从而降低了开发和维护效率。技术实现思路1、本技术实施例的目的在于提供一种pdf文档生成方法及装置,能够提高前端开发人员开发和维护pdf文档相关需求的效率。2、本技术第一方面提供了一种pdf文档生成方法,包括:3、读取react组件代码文件;4、对所述react组件代码文件进行转译处理,得到目标js代码;5、根据所述目标js代码生成目标html文档;6、根据预设的pdf转化工具和所述目标html文档,生成pdf文档。7、在上述实现过程中,该方法可以先读取react组件代码文件,并对react组件代码文件进行转译处理,得到目标js代码;其中,由于react是一个开发高效、性能优异的开发框架,因此该方法能够基于其提供的高效简洁的声明式语法,实现组件化、模块化的html页面开发,从而以此来提高开发效率。然后,该方法可以根据目标js代码生成目标html文档;可见,该方法相比于直接编写html模板代码,由于react组件代码文件更容易编写,这样通过读取react组件代码文件,并对react组件代码文件进行转译处理,得到目标js代码以生成目标html文档,不但能够快速编写出符合设计的html模板,而且在得到目标html文档后,根据预设的pdf转化工具和html文档,生成pdf文档,能够实现高效开发pdf文档。8、进一步地,所述react组件代码文件是基于jsx语法和es6+语法编写的,且以模块方式组织的组件代码。9、在上述实现过程中,react组件是使用类似于html标签的jsx语法结合更高效的es6+语法编写的,该react组件是以模块方式组织的组件代码,并且该种组件代码更方便通过babel或swc等编译工具将jsx语法转译可供nodejs执行的代码。10、进一步地,所述对所述react组件代码文件进行转译处理,得到目标js代码,包括:11、通过预先配置的编译工具将所述react组件代码文件转译成能够供nodejs执行的目标js代码。12、进一步地,所述react组件代码文件包括title.js代码文件和index.js代码文件;13、其中,所述title.js代码文件定义并导出了一个title组件;所述index.js代码文件引用并使用了所述title组件。14、进一步地,所述根据所述目标js代码生成目标html文档,包括:15、执行所述目标js代码,得到导出对象;16、根据所述导出对象获取根react元素;17、基于react框架和所述根react元素生成包含html标签的字符串;18、将所述字符串嵌入至用于生成html文档的目标标签中,得到目标html文档。19、进一步地,所述方法还包括:20、预先构建web服务程序;21、基于所述web服务程序获取所述pdf文档;22、通过预设的浏览器访问所述web服务程序,以使所述浏览器对所述pdf文档进行展示。23、进一步地,所述对所述react组件代码文件进行转译处理,得到目标js代码包括:24、基于模块处理器对所述react组件代码文件进行解析得到多个模块对象,并缓存各个所述模块对象;其中,所述模块对象包括目标js代码;25、所述根据所述目标js代码生成目标html文档,包括:26、基于html处理器读取所述模块处理器缓存的所述目标js代码;27、基于所述html处理器执行所述目标js代码得到目标html文档,并缓存所述目标html文档;28、所述根据预设的pdf转化工具和所述目标html文档,生成pdf文档,包括:29、基于pdf处理器读取所述html处理器缓存的目标html文档;30、基于所述pdf处理器将所述目标html文档转化为pdf文档,并缓存所述pdf文档。31、本技术第二方面提供了一种pdf文档生成装置,所述pdf文档生成装置包括:32、读取单元,用于读取react组件代码文件;33、转译单元,用于对所述react组件代码文件进行转译处理,得到目标js代码;34、生成单元,用于根据所述目标js代码生成目标html文档;35、所述生成单元,还用于根据预设的pdf转化工具和所述目标html文档,生成pdf文档。36、进一步地,所述react组件代码文件是基于jsx语法和es6+语法编写的,且以模块方式组织的组件代码。37、进一步地,所述转译单元,具体用于通过预先配置的编译工具将所述react组件代码文件转译成能够供nodejs执行的目标js代码。38、进一步地,所述react组件代码文件包括title.js代码文件和index.js代码文件;39、其中,所述title.js代码文件用于定义至少一个组件;40、所述title.js代码文件还用于导出所述至少一个组件中的目标组件,以供所述index.js代码文件使用。41、进一步地,所述生成单元包括:42、执行子单元,用于执行所述目标js代码,得到导出对象;43、获取子单元,用于根据所述导出对象获取根react元素;44、生成子单元,用于基于react框架和所述根react元素生成包含html标签的字符串;45、嵌入子单元,用于将所述字符串嵌入至用于生成html文档的目标标签中,得到目标html文档。46、进一步地,所述pdf文档生成装置还包括:47、构建单元,用于预先构建web服务程序;48、获取单元,用于基于所述web服务程序获取所述pdf文档;49、展示单元,用于通过预设的浏览器访问所述web服务程序,以使所述浏览器对所述pdf文档进行展示。50、进一步地,所述转译单元,用于基于模块处理器获取react组件代码文件,对所述react组件代码文件进行解析得到模块对象,并缓存所述模块对象;51、所述第一生成单元,用于基于html处理器读取所述模块处理器缓存的所述模块对象,对所述模块对象进行处理得到html文档流,并缓存所述html文档流;52、所述第二生成单元,用于基于pdf处理器读取所述html处理器缓存的所述html文档流,对所述html文档流进行处理得到所述pdf文档的pdf文档流,并缓存所述pdf文档流。53、本技术第三方面提供了一种电子设备,包括存储器以及处理器,所述存储器用于存储计算机程序,所述处理器运行所述计算机程序以使所述电子设备执行本技术第一方面中任一项所述的pdf文档生成方法。54、本技术第四方面提供了一种计算机可读存储介质,其存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行本技术第一方面中任一项所述的pdf文档生成方法。当前第1页12当前第1页12
技术特征:1.一种pdf文档生成方法,其特征在于,包括:
2.根据权利要求1所述的pdf文档生成方法,其特征在于,所述react组件代码文件是基于jsx语法和es6+语法编写的,且以模块方式组织的组件代码。
3.根据权利要求1所述的pdf文档生成方法,其特征在于,所述对所述react组件代码文件进行转译处理,得到目标js代码,包括:
4.根据权利要求3所述的pdf文档生成方法,其特征在于,所述react组件代码文件包括title.js代码文件和index.js代码文件;
5.根据权利要求1所述的pdf文档生成方法,其特征在于,所述根据所述目标js代码生成目标html文档,包括:
6.根据权利要求1所述的pdf文档生成方法,其特征在于,所述方法还包括:
7.根据权利要求1至6任一项所述的pdf文档生成方法,其特征在于,所述对所述react组件代码文件进行转译处理,得到目标js代码包括:
8.一种pdf文档生成装置,其特征在于,所述pdf文档生成装置包括:
9.一种电子设备,其特征在于,所述电子设备包括存储器以及处理器,所述存储器用于存储计算机程序,所述处理器运行所述计算机程序以使所述电子设备执行权利要求1至7中任一项所述的pdf文档生成方法。
10.一种可读存储介质,其特征在于,所述可读存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行权利要求1至7任一项所述的pdf文档生成方法。
技术总结本申请提供一种PDF文档生成方法及装置,该方法包括:读取React组件代码文件;对React组件代码文件进行转译处理,得到目标JS代码;根据目标JS代码生成目标HTML文档;根据预设的PDF转化工具和目标HTML文档,生成PDF文档。可见,该方法及装置能够便于前端开发人员高效地开发和维护PDF文档,从而简化开发动态PDF文档类需求的开发流程,提高此类需求的开发效率。
技术研发人员:袁宇,杨倩,于功川,范逸玮,金秋
受保护的技术使用者:山石网科通信技术股份有限公司
技术研发日:技术公布日:2024/4/29