本申請(qǐng)涉及文檔處理,尤其涉及一種word文檔生成方法、裝置、設(shè)備、存儲(chǔ)介質(zhì)及產(chǎn)品。
背景技術(shù):
1、現(xiàn)有生成的docx格式的word文件通常使用poi組件庫(kù)。poi組件庫(kù)在生成word文件時(shí),需要在內(nèi)存中構(gòu)建出所有的文檔對(duì)象,然后再將文檔對(duì)象輸出至文件。在需要生成類似報(bào)告等大體積文件的場(chǎng)景下,存在線性增長(zhǎng)的內(nèi)存占用問(wèn)題。因?yàn)檫@個(gè)問(wèn)題的存在,只要生成大體積的word文檔,十分容易導(dǎo)致內(nèi)存溢出,從而使得程序異常甚至操作系統(tǒng)異常。并且使用poi組件庫(kù)讀取word文件時(shí),也需要將整個(gè)文件轉(zhuǎn)換成文檔對(duì)象存儲(chǔ)在內(nèi)存中,容易導(dǎo)致內(nèi)存溢出的問(wèn)題。
技術(shù)實(shí)現(xiàn)思路
1、本申請(qǐng)的主要目的在于提供一種word文檔生成方法、裝置、設(shè)備、存儲(chǔ)介質(zhì)及產(chǎn)品,旨在解決生成大體積的word文檔時(shí),存在線性增長(zhǎng)的內(nèi)存占用的技術(shù)問(wèn)題。
2、為實(shí)現(xiàn)上述目的,本申請(qǐng)?zhí)岢鲆环Nword文檔生成方法,所述的方法包括:
3、生成docx格式的word文件對(duì)應(yīng)的多個(gè)單文件;
4、按照每個(gè)批次數(shù)據(jù)的數(shù)據(jù)量上限值將內(nèi)存中的word文檔數(shù)據(jù)保存至每個(gè)所述單文件中;
5、將多個(gè)所述單文件進(jìn)行合并壓縮,生成最終docx格式的word文檔。
6、在一實(shí)施例中,所述按照每個(gè)批次數(shù)據(jù)的數(shù)據(jù)量上限值將內(nèi)存中的word文檔數(shù)據(jù)保存至每個(gè)所述單文件中的步驟之前,還包括:
7、獲取當(dāng)前可用內(nèi)存;
8、依次獲取每個(gè)批次數(shù)據(jù)中每片數(shù)據(jù)的大??;
9、根據(jù)所述當(dāng)前可用內(nèi)存和所述每片數(shù)據(jù)的大小確定每個(gè)批次數(shù)據(jù)的數(shù)據(jù)量上限值。
10、在一實(shí)施例中,所述多個(gè)單文件包括頁(yè)眉文件、尾注文件、頁(yè)腳文件和文檔文件;
11、所述將多個(gè)所述單文件進(jìn)行合并壓縮,生成最終docx格式的word文檔的步驟,包括:
12、將生成的所述尾注文件、所述頁(yè)腳文件和所述頁(yè)眉文件合并至所述文檔文件中;
13、在所述文檔文件的頭部和尾部添加xml格式的閉合標(biāo)簽,獲得完整的文檔文件;
14、對(duì)所述完整的文檔文件進(jìn)行壓縮,獲得最終docx格式的word文檔。
15、在一實(shí)施例中,所述按照每個(gè)批次數(shù)據(jù)的數(shù)據(jù)量上限值將內(nèi)存中的word文檔數(shù)據(jù)保存至每個(gè)所述單文件中的步驟,包括:
16、在所述單文件為所述頁(yè)眉文件時(shí),判斷內(nèi)存中的word文檔數(shù)據(jù)中的頁(yè)眉內(nèi)容是否是文字;
17、若頁(yè)眉內(nèi)容是文字,則按照每個(gè)批次數(shù)據(jù)的數(shù)據(jù)量上限值根據(jù)所述頁(yè)眉內(nèi)容和屬性修飾標(biāo)簽生成頁(yè)眉的文字樣式;
18、根據(jù)所述頁(yè)眉內(nèi)容和文本內(nèi)容標(biāo)簽設(shè)置生成的頁(yè)眉的文字內(nèi)容,并將生成的頁(yè)眉的文字樣式和文字內(nèi)容添加至頁(yè)眉文件中。
19、在一實(shí)施例中,所述在所述單文件為所述頁(yè)眉文件時(shí),判斷內(nèi)存中的word文檔數(shù)據(jù)中的頁(yè)眉內(nèi)容是否是文字的步驟之后,還包括:
20、若頁(yè)眉內(nèi)容是圖片,則按照每個(gè)批次數(shù)據(jù)的數(shù)據(jù)量上限值根據(jù)所述頁(yè)眉內(nèi)容和繪圖對(duì)象標(biāo)簽生成頁(yè)眉的圖片信息,并將生成的頁(yè)眉的圖片信息添加至頁(yè)眉文件中。
21、在一實(shí)施例中,所述按照每個(gè)批次數(shù)據(jù)的數(shù)據(jù)量上限值將內(nèi)存中的word文檔數(shù)據(jù)保存至每個(gè)所述單文件中的步驟,包括:
22、在所述單文件為所述頁(yè)腳文件時(shí),按照每個(gè)批次數(shù)據(jù)的數(shù)據(jù)量上限值根據(jù)內(nèi)存中的word文檔數(shù)據(jù)中的頁(yè)腳內(nèi)容和頁(yè)腳標(biāo)簽生成頁(yè)腳信息,并將生成的頁(yè)腳信息添加至頁(yè)腳文件中;
23、在所述單文件為所述尾注文件時(shí),按照每個(gè)批次數(shù)據(jù)的數(shù)據(jù)量上限值根據(jù)內(nèi)存中的word文檔數(shù)據(jù)中的尾注內(nèi)容和尾注標(biāo)簽生成尾注信息,并將生成的尾注信息添加至尾注文件中。
24、此外,為實(shí)現(xiàn)上述目的,本申請(qǐng)還提出一種word文檔生成裝置,所述word文檔生成裝置包括:
25、單文件生成模塊,用于生成docx格式的word文件對(duì)應(yīng)的多個(gè)單文件;
26、文檔數(shù)據(jù)保存模塊,用于按照每個(gè)批次數(shù)據(jù)的數(shù)據(jù)量上限值將內(nèi)存中的word文檔數(shù)據(jù)保存至每個(gè)所述單文件中;
27、word文檔生成模塊,用于將多個(gè)所述單文件進(jìn)行合并壓縮,生成最終docx格式的word文檔。
28、此外,為實(shí)現(xiàn)上述目的,本申請(qǐng)還提出一種word文檔生成設(shè)備,所述設(shè)備包括:存儲(chǔ)器、處理器及存儲(chǔ)在所述存儲(chǔ)器上并可在所述處理器上運(yùn)行的計(jì)算機(jī)程序,所述計(jì)算機(jī)程序配置為實(shí)現(xiàn)如上文所述的word文檔生成方法的步驟。
29、此外,為實(shí)現(xiàn)上述目的,本申請(qǐng)還提出一種存儲(chǔ)介質(zhì),所述存儲(chǔ)介質(zhì)為計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述存儲(chǔ)介質(zhì)上存儲(chǔ)有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)如上文所述的word文檔生成方法的步驟。
30、此外,為實(shí)現(xiàn)上述目的,本申請(qǐng)還提供一種計(jì)算機(jī)程序產(chǎn)品,所述計(jì)算機(jī)程序產(chǎn)品包括計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)如上文所述的word文檔生成方法的步驟。
31、本申請(qǐng)?zhí)峁┝艘环Nword文檔生成方法,通過(guò)生成docx格式的word文件對(duì)應(yīng)的多個(gè)單文件;按照每個(gè)批次數(shù)據(jù)的數(shù)據(jù)量上限值將內(nèi)存中的word文檔數(shù)據(jù)保存至每個(gè)所述單文件中;將多個(gè)所述單文件進(jìn)行合并壓縮,生成最終docx格式的word文檔。本申請(qǐng)通過(guò)將docx格式的word文件拆分式的生成多個(gè)單獨(dú)的文件,然后根據(jù)每個(gè)批次數(shù)據(jù)的數(shù)據(jù)量上限值將內(nèi)存中的word文檔數(shù)據(jù)分批次保存至每個(gè)所述單文件中,從而能夠使得每次生成文檔時(shí)占用的內(nèi)存不超出已有的內(nèi)存范圍,數(shù)據(jù)生成者只需要控制每個(gè)批次數(shù)據(jù)的大小就能控制內(nèi)存占用量和生成時(shí)間的平衡。然后將所有單文件合并壓縮,流式生成最終的大體積的docx格式的word文檔。
1.一種word文檔生成方法,其特征在于,所述的方法包括:
2.如權(quán)利要求1所述的方法,其特征在于,所述按照每個(gè)批次數(shù)據(jù)的數(shù)據(jù)量上限值將內(nèi)存中的word文檔數(shù)據(jù)保存至每個(gè)所述單文件中的步驟之前,還包括:
3.如權(quán)利要求1所述的方法,其特征在于,所述多個(gè)單文件包括頁(yè)眉文件、尾注文件、頁(yè)腳文件和文檔文件;
4.如權(quán)利要求3所述的方法,其特征在于,所述按照每個(gè)批次數(shù)據(jù)的數(shù)據(jù)量上限值將內(nèi)存中的word文檔數(shù)據(jù)保存至每個(gè)所述單文件中的步驟,包括:
5.如權(quán)利要求4所述的方法,其特征在于,所述在所述單文件為所述頁(yè)眉文件時(shí),判斷內(nèi)存中的word文檔數(shù)據(jù)中的頁(yè)眉內(nèi)容是否是文字的步驟之后,還包括:
6.如權(quán)利要求3所述的方法,其特征在于,所述按照每個(gè)批次數(shù)據(jù)的數(shù)據(jù)量上限值將內(nèi)存中的word文檔數(shù)據(jù)保存至每個(gè)所述單文件中的步驟,包括:
7.一種word文檔生成裝置,其特征在于,所述word文檔生成裝置包括:
8.一種word文檔生成設(shè)備,其特征在于,所述設(shè)備包括:存儲(chǔ)器、處理器及存儲(chǔ)在所述存儲(chǔ)器上并可在所述處理器上運(yùn)行的計(jì)算機(jī)程序,所述計(jì)算機(jī)程序配置為實(shí)現(xiàn)如權(quán)利要求1至6中任一項(xiàng)所述的word文檔生成方法的步驟。
9.一種存儲(chǔ)介質(zhì),其特征在于,所述存儲(chǔ)介質(zhì)為計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述存儲(chǔ)介質(zhì)上存儲(chǔ)有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)如權(quán)利要求1至6任一項(xiàng)所述的word文檔生成方法的步驟。
10.一種計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述計(jì)算機(jī)程序產(chǎn)品包括計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)如權(quán)利要求1至6中任一項(xiàng)所述的word文檔生成方法的步驟。