亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種表格重排方法和系統(tǒng)的制作方法

文檔序號(hào):6514473閱讀:333來源:國(guó)知局
一種表格重排方法和系統(tǒng)的制作方法
【專利摘要】本發(fā)明所述的一種表格重排方法和系統(tǒng),構(gòu)建表格邏輯結(jié)構(gòu)信息;獲取所述表格的總行數(shù)和總列數(shù),計(jì)算表格線寬并計(jì)算每個(gè)單元格的起始列號(hào)和列寬;遍歷每個(gè)單元格,獲取單元格的內(nèi)容后,將單元格作為排版對(duì)象單獨(dú)進(jìn)行排版;加入線寬和單元格間距后,將單元格組合成邏輯行,邏輯行組合成邏輯表格,排列在目標(biāo)顯示區(qū)域繪制表格。提供一種完善的表格重排方法和系統(tǒng),使得表格結(jié)構(gòu)保持版式描述不變的情況下,又能夠在顯示受限的情況下進(jìn)行保持表格邏輯結(jié)構(gòu)的重排,解決的技術(shù)問題是現(xiàn)有技術(shù)中的表格重排方法在版式文檔在屏幕尺寸受限的顯示設(shè)備上被顯示時(shí),無法合理處理其中的表格數(shù)據(jù)。
【專利說明】一種表格重排方法和系統(tǒng)

【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及一種表格重排方法和系統(tǒng),屬于計(jì)算機(jī)信息處理領(lǐng)域。

【背景技術(shù)】
[0002] 版式文件在自定義的坐標(biāo)系中,明確記錄了每個(gè)文檔源數(shù)據(jù)顯示的位置和尺寸 等,從而使文檔打印出的結(jié)果和在計(jì)算機(jī)上瀏覽的結(jié)果一致,而且在任何計(jì)算機(jī)環(huán)境下都 具有顯示一致性,保證文檔的原版原式。由于版式文件的"穩(wěn)定"性,非常適合作為電子文 檔的最終發(fā)布和傳播的形式,廣泛用于電子公文、電子書、電子期刊、電子報(bào)紙等領(lǐng)域。但是 由于版式文檔對(duì)布局信息的絕對(duì)描述方式,使得它缺乏一些數(shù)據(jù)的邏輯結(jié)構(gòu),其中比較重 要的一項(xiàng)就是表格。
[0003] 在版式文檔中,表格的存儲(chǔ)方式與一些線條和文字的簡(jiǎn)單圖元排列無異,并沒有 明確的邏輯結(jié)構(gòu)。這種表示方式在遇到顯示設(shè)備屏幕尺寸受限的情況時(shí)會(huì)出現(xiàn)問題,顯示 設(shè)備沒有足夠的信息對(duì)表示表格的圖元組進(jìn)行處理以生成滿足尺寸的顯示結(jié)果。多數(shù)顯示 設(shè)備采取簡(jiǎn)單的處理方式,包括:
[0004] 1)采用滾動(dòng)條方式瀏覽原文檔。
[0005] 由于可見區(qū)域有限,此方法有可能造成用戶滾動(dòng)數(shù)屏才能看到完整的表格行,而 表格的重要用處之一就是用來說明和對(duì)比有規(guī)律的數(shù)據(jù)和資料,基本表格行的閱讀不完整 有可能給用戶帶來不便,而且有些設(shè)備并不支持滾動(dòng)條。
[0006] 2 )對(duì)表格進(jìn)行等比例放縮。
[0007] 此方法的弱點(diǎn)在于,縮放后嚴(yán)重降低了顯示質(zhì)量。
[0008] 3)-些更落后的系統(tǒng)。不顯示此類表格或簡(jiǎn)單裁減,只顯示屏幕區(qū)域所見部分。 由于處理方式簡(jiǎn)單,此類方法破壞了表格結(jié)構(gòu)內(nèi)容,不做采納。
[0009] 4)將版式文檔中的表格按照排版需要進(jìn)行格式化,在流式排版的過程中根據(jù)版式 中表格的拓?fù)浣Y(jié)構(gòu)進(jìn)行流式重排。該方法在版式和流式中都需要保存表格的對(duì)應(yīng)結(jié)構(gòu)和邏 輯信息,雖然在一定程度上解決了表格流式重排問題,但是文檔會(huì)由于需要保存的信息過 多導(dǎo)致處理流程比較復(fù)雜,并且在版式中出現(xiàn)用于流式重排的部分信息這本身在邏輯上便 容易造成混亂。
[0010] 綜上,在現(xiàn)有技術(shù)中,存在版式文檔中缺乏表格結(jié)構(gòu)或邏輯結(jié)構(gòu)不完整的問題或 者表達(dá)方式不科學(xué)。這些問題導(dǎo)致版式文檔在屏幕尺寸受限的顯示設(shè)備上被顯示時(shí),無法 合理處理其中的表格數(shù)據(jù)。


【發(fā)明內(nèi)容】

[0011] 本發(fā)明所要解決的技術(shù)問題是現(xiàn)有技術(shù)中的表格重排方法在版式文檔在屏幕尺 寸受限的顯示設(shè)備上被顯示時(shí),無法合理處理其中的表格數(shù)據(jù),本發(fā)明提供一種完善的表 格重排方法和系統(tǒng),使得表格結(jié)構(gòu)保持版式描述不變的情況下,又能夠在顯示受限的情況 下進(jìn)行保持表格邏輯結(jié)構(gòu)的重排。
[0012] 為解決上述技術(shù)問題,本發(fā)明是通過以下技術(shù)方案實(shí)現(xiàn)的:
[0013] 一種表格重排方法,包括以下步驟:
[0014] 構(gòu)建表格邏輯結(jié)構(gòu)信息;
[0015] 獲取所述表格的總行數(shù)和總列數(shù),計(jì)算表格線寬并計(jì)算每個(gè)單元格的起始列號(hào)和 列寬;
[0016] 遍歷每個(gè)單元格,獲取單元格的內(nèi)容后,將單元格作為排版對(duì)象單獨(dú)進(jìn)行排版;
[0017] 加入線寬和單元格間距后,將單元格組合成邏輯行,邏輯行組合成邏輯表格,排列 在目標(biāo)顯示區(qū)域繪制表格。
[0018] 所述的表格重排方法,在所述構(gòu)建表格邏輯結(jié)構(gòu)信息的過程中,包括:
[0019] 通過版面解析方法從表格源文件中直接獲取表格邏輯結(jié)構(gòu)信息和對(duì)應(yīng)的版式描 述信息;
[0020] 通過轉(zhuǎn)化之后的版式表格文件獲取表格邏輯結(jié)構(gòu)信息和對(duì)應(yīng)的版式描述信息;
[0021] 通過接受外界輸入來獲得表格邏輯結(jié)構(gòu)信息和對(duì)應(yīng)的版式描述信息。
[0022] 所述的表格重排方法,將表格的邏輯結(jié)構(gòu)與對(duì)應(yīng)的版式描述信息通過唯一的圖元 編號(hào)進(jìn)行關(guān)聯(lián)。
[0023] 所述的表格重排方法,還包括線寬設(shè)置的過程,設(shè)置默認(rèn)的線寬參數(shù)。
[0024] 所述的表格重排方法,所述計(jì)算表格線寬的過程,包括:
[0025] 遍歷行,通過行索引獲取行信息,其中行的樣式包含線寬以及顏色信息,只對(duì)當(dāng)前 行的第一條列線和最后一條列線以及上下兩條行線起作用;
[0026] 刷新行線和列線的線寬,當(dāng)前行不存在線寬信息則按照默認(rèn)的所述默認(rèn)的線寬參 數(shù)計(jì)算,若存在則保留當(dāng)前值,通過代表橫向和縱向的兩個(gè)數(shù)組保存所有的線寬信息;
[0027] 遍歷當(dāng)前行的所有的單元格,進(jìn)一步刷新行線和列線的線寬。
[0028] 所述的表格重排方法,所述計(jì)算每個(gè)單元格的起始列號(hào)的過程,包括:設(shè)置一個(gè)二 維的數(shù)組,其大小為此表格的行列數(shù)相乘,數(shù)組中每個(gè)元素定位表格的唯一位置,表示此位 置是否可以作為單元格的開始點(diǎn),根據(jù)單元格的屬性按行遍歷所有單元格,獲得單元格的 起始列號(hào),由列比例以及線寬信息計(jì)算每列列寬。
[0029] 所述的表格重排方法,如果在表格引用的樣式中設(shè)定了最大列寬和最小列寬,則 需要根據(jù)這些信息重新調(diào)整每列的列寬。
[0030] 所述的表格重排方法,所述遍歷每個(gè)單元格,獲取單元格的內(nèi)容后,將單元格作為 排版對(duì)象單獨(dú)進(jìn)行排版的過程中,不限排版高度,排版結(jié)束后獲取到每個(gè)單元格的實(shí)際排 版高度。
[0031] 所述的表格重排方法,所述加入線寬和單元格間距后,將單元格組合成邏輯行,邏 輯行組合成邏輯表格,排列在目標(biāo)顯示區(qū)域繪制表格的過程中,包括:如果當(dāng)前頁(yè)面未能顯 示完整表格,則記錄未顯示的邏輯行信息,在翻頁(yè)后只計(jì)算未顯示部分并排版。
[0032] 所述的表格重排方法,所述繪制表格的過程,如果表格屬性為表頭信息,則優(yōu)先重 新排版繪制此行組。
[0033] -種表格重排系統(tǒng),包括:
[0034] 構(gòu)建模塊:構(gòu)建表格邏輯結(jié)構(gòu)信息;
[0035] 行列獲取模塊:獲取所述表格的總行數(shù)和總列數(shù),計(jì)算表格線寬并計(jì)算每個(gè)單元 格的起始列號(hào)和列寬;
[0036] 排版模塊:遍歷每個(gè)單元格,獲取單元格的內(nèi)容后,將單元格作為排版對(duì)象單獨(dú)進(jìn) 行排版;
[0037] 繪制模塊:加入線寬和單元格間距后,將單元格組合成邏輯行,邏輯行組合成邏輯 表格,排列在目標(biāo)顯示區(qū)域繪制表格。
[0038] 所述的表格重排系統(tǒng),在所述構(gòu)建模塊中,包括:
[0039] 版面分析子模塊:通過版面解析方法從表格源文件中直接獲取表格邏輯結(jié)構(gòu)信息 和對(duì)應(yīng)的版式描述信息;
[0040] 轉(zhuǎn)化子模塊:通過轉(zhuǎn)化之后的版式表格文件獲取表格邏輯結(jié)構(gòu)信息和對(duì)應(yīng)的版式 描述信息;
[0041] 對(duì)應(yīng)子單元:通過接受外界輸入來獲得表格邏輯結(jié)構(gòu)信息和對(duì)應(yīng)的版式描述信 肩、。
[0042] 所述的表格重排系統(tǒng),將表格的邏輯結(jié)構(gòu)與對(duì)應(yīng)的版式描述信息通過唯一的圖元 編號(hào)進(jìn)行關(guān)聯(lián)。
[0043] 所述的表格重排系統(tǒng),還包括線寬設(shè)置單元,設(shè)置默認(rèn)的線寬參數(shù)。
[0044] 所述的表格重排系統(tǒng),所述計(jì)算表格線寬的過程,包括:
[0045] 遍歷行,通過行索引獲取行信息,其中行的樣式包含線寬以及顏色信息,只對(duì)當(dāng)前 行的第一條列線和最后一條列線以及上下兩條行線起作用;
[0046] 刷新行線和列線的線寬,當(dāng)前行不存在線寬信息則按照默認(rèn)的所述默認(rèn)的線寬 參數(shù)計(jì)算,若存在則保留當(dāng)前值,通過代表橫向和縱向的兩個(gè)數(shù)組保存所有的線寬信息;
[0047] 遍歷當(dāng)前行的所有的單元格,進(jìn)一步刷新行線和列線的線寬。
[0048] 所述的表格重排系統(tǒng),所述計(jì)算每個(gè)單元格的起始列號(hào)的過程,包括:設(shè)置一個(gè)二 維的數(shù)組,其大小為此表格的行列數(shù)相乘,數(shù)組中每個(gè)元素定位表格的唯一位置,表示此位 置是否可以作為單元格的開始點(diǎn),根據(jù)單元格的屬性按行遍歷所有單元格,獲得單元格的 起始列號(hào),由列比例以及線寬信息計(jì)算每列列寬。
[0049] 所述的表格重排系統(tǒng),如果在表格引用的樣式中設(shè)定了最大列寬和最小列寬,則 需要根據(jù)這些信息重新調(diào)整每列的列寬。
[0050] 所述的表格重排系統(tǒng),所述排版模塊中,不限排版高度,排版結(jié)束后獲取到每個(gè)單 元格的實(shí)際排版高度。
[0051] 所述的表格重排系統(tǒng),所述繪制模塊中,包括部分繪制子模塊:如果當(dāng)前頁(yè)面未能 顯示完整表格,則記錄未顯示的邏輯行信息,在翻頁(yè)后只計(jì)算未顯示部分并排版。
[0052] 所述的表格重排系統(tǒng),所述繪制模塊中,繪制表格的過程,如果表格屬性為表頭信 息,則優(yōu)先重新排版繪制此行組。
[0053] 本發(fā)明的上述技術(shù)方案相比現(xiàn)有技術(shù)具有以下優(yōu)點(diǎn):
[0054] ( 1)本發(fā)明所述的一種表格重排方法和系統(tǒng),構(gòu)建表格邏輯結(jié)構(gòu)信息;獲取所述 表格的總行數(shù)和總列數(shù),計(jì)算表格線寬并計(jì)算每個(gè)單元格的起始列號(hào)和列寬;遍歷每個(gè)單 元格,獲取單元格的內(nèi)容后,將單元格作為排版對(duì)象單獨(dú)進(jìn)行排版;加入線寬和單元格間距 后,將單元格組合成邏輯行,邏輯行組合成邏輯表格,排列在目標(biāo)顯示區(qū)域繪制表格。提供 一種完善的表格重排方法和系統(tǒng),使得表格結(jié)構(gòu)保持版式描述不變的情況下,又能夠在顯 示受限的情況下進(jìn)行保持表格邏輯結(jié)構(gòu)的重排,解決的技術(shù)問題是現(xiàn)有技術(shù)中的表格重排 方法在版式文檔在屏幕尺寸受限的顯示設(shè)備上被顯示時(shí),無法合理處理其中的表格數(shù)據(jù)。
[0055] (2)所述的表格重排方法,先將源文檔解析并轉(zhuǎn)化為本發(fā)明中的版式描述方法,再 利用版面理解方法確認(rèn)表格數(shù)目以及對(duì)應(yīng)區(qū)域,最后通過接收外界輸入的方法完成表格邏 輯結(jié)構(gòu)信息的構(gòu)建,通過這種方式,通過源文檔解析提高了處理效率,為了保證準(zhǔn)確性,又 進(jìn)行了后續(xù)的外界調(diào)整,從而高效、準(zhǔn)確的建立了表格邏輯結(jié)構(gòu)信息。
[0056] (3)所述的表格重排方法,還包括線寬設(shè)置的過程,設(shè)置默認(rèn)的線寬參數(shù),這樣對(duì) 于存在線寬信息的行列線寬按照存在的值,不存在的通過默認(rèn)值來補(bǔ)充,保持了信息的完 整性,以及樣式的可調(diào)、可設(shè)置性。
[0057] (4)所述的表格重排方法,如果在表格引用的樣式中設(shè)定了最大列寬和最小列寬, 則需要根據(jù)這些信息重新調(diào)整每列的列寬。這樣,實(shí)現(xiàn)了在一定范圍內(nèi)列寬的可調(diào)節(jié)性,更 具有人性化,方便與根據(jù)需要進(jìn)行調(diào)整和設(shè)置,又保持了表格的完整性。
[0058] (5)所述的表格重排方法,獲取單元格的內(nèi)容后,將單元格作為排版對(duì)象單獨(dú)進(jìn)行 排版的過程中,不限排版高度,排版結(jié)束后獲取到每個(gè)單元格的實(shí)際排版高度,高度可以根 據(jù)需要調(diào)節(jié)或者用戶自定義顯示類型,全部顯示還是部分顯示,更加人性化和多樣化。
[0059] (6)所述的表格重排方法,如果當(dāng)前頁(yè)面未能顯示完整表格,則記錄未顯示的邏輯 行信息,在翻頁(yè)后只計(jì)算未顯示部分并排版,通過分頁(yè)顯示的形式保持了表格的完整性。
[0060] (7)所述的表格重排方法,所述繪制表格的過程,如果表格屬性為表頭信息,則優(yōu) 先重新排版繪制此行組,優(yōu)先繪制表頭將表格更完整的還原出,使得表格的可讀性進(jìn)一步 提1?。

【專利附圖】

【附圖說明】
[0061] 為了使本發(fā)明的內(nèi)容更容易被清楚的理解,下面結(jié)合附圖,對(duì)本發(fā)明作進(jìn)一步詳 細(xì)的說明,其中,
[0062] 圖1是本發(fā)明所述一種表格重排方法的流程框圖;
[0063] 圖2是本發(fā)明所述表格的整體結(jié)構(gòu)圖;
[0064] 圖3是本發(fā)明所述表格的行組合結(jié)構(gòu)圖;
[0065] 圖4給出了表格數(shù)據(jù)描述生成系統(tǒng)示意圖;
[0066] 圖5是本實(shí)施例中表格數(shù)據(jù)描述解析顯示系統(tǒng)示意圖。

【具體實(shí)施方式】
[0067] 下面給出本發(fā)明所述的一種表格重排方法和系統(tǒng)的【具體實(shí)施方式】。
[0068] 實(shí)施例1
[0069] 本實(shí)施例提供一種表格重排方法,如圖1所示,包括以下步驟:
[0070] (1)構(gòu)建表格邏輯結(jié)構(gòu)信息,過程如下:
[0071] I. 1通過版面解析方法從表格源文件中直接獲取表格邏輯結(jié)構(gòu)信息和對(duì)應(yīng)的版 式描述信息。將表格的邏輯結(jié)構(gòu)與對(duì)應(yīng)的版式描述信息通過唯一的圖元編號(hào)進(jìn)行關(guān)聯(lián)。
[0072] 1. 2通過轉(zhuǎn)化之后的版式表格文件獲取表格邏輯結(jié)構(gòu)信息和對(duì)應(yīng)的版式描述信 息;
[0073] I. 3通過接受外界輸入來獲得表格邏輯結(jié)構(gòu)信息和對(duì)應(yīng)的版式描述信息。
[0074] 本實(shí)施例中,先將源文檔解析并轉(zhuǎn)化為本發(fā)明中的版式描述方法,再利用版面理 解方法確認(rèn)表格數(shù)目以及對(duì)應(yīng)區(qū)域,最后通過接收外界輸入的方法完成表格邏輯結(jié)構(gòu)信息 的構(gòu)建,通過這種方式,通過源文檔解析提高了處理效率,為了保證準(zhǔn)確性,又進(jìn)行了后續(xù) 的外界調(diào)整,從而高效、準(zhǔn)確的建立了表格邏輯結(jié)構(gòu)信息。
[0075] (2)獲取所述表格的總行數(shù)和總列數(shù),計(jì)算表格線寬并計(jì)算每個(gè)單元格的起始列 號(hào)和列寬。
[0076] 2. 1所述計(jì)算表格線寬的過程,包括:
[0077] 遍歷行,通過行索引獲取行信息,其中行的樣式包含線寬以及顏色信息,只對(duì)當(dāng) 前行的第一條列線和最后一條列線以及上下兩條行線起作用;
[0078] 刷新行線和列線的線寬,當(dāng)前行不存在線寬信息則按照默認(rèn)的所述默認(rèn)的線寬參 數(shù)計(jì)算,若存在則保留當(dāng)前值,通過代表橫向和縱向的兩個(gè)數(shù)組保存所有的線寬信息;
[0079] 遍歷當(dāng)前行的所有的單元格,進(jìn)一步刷新行線和列線的線寬。
[0080] 2. 2所述計(jì)算每個(gè)單元格的起始列號(hào)的過程,包括:設(shè)置一個(gè)二維的數(shù)組,其大小 為此表格的行列數(shù)相乘,數(shù)組中每個(gè)元素定位表格的唯一位置,表示此位置是否可以作為 單元格的開始點(diǎn),根據(jù)單元格的屬性按行遍歷所有單元格,獲得單元格的起始列號(hào),由列比 例以及線寬信息計(jì)算每列列寬。如果在表格引用的樣式中設(shè)定了最大列寬和最小列寬,則 需要根據(jù)這些信息重新調(diào)整每列的列寬。
[0081] (3)遍歷每個(gè)單元格,獲取單元格的內(nèi)容后,將單元格作為排版對(duì)象單獨(dú)進(jìn)行排 版。不限排版高度,排版結(jié)束后獲取到每個(gè)單元格的實(shí)際排版高度。
[0082] (4)加入線寬和單元格間距后,將單元格組合成邏輯行,邏輯行組合成邏輯表格, 排列在目標(biāo)顯示區(qū)域繪制表格。如果當(dāng)前頁(yè)面未能顯示完整表格,則記錄未顯示的邏輯行 信息,在翻頁(yè)后只計(jì)算未顯示部分并排版。所述繪制表格的過程,如果表格屬性為表頭信 息,則優(yōu)先重新排版繪制此行組。
[0083] 作為進(jìn)一步的實(shí)施方式,所述的表格重排方法,還包括線寬設(shè)置的過程,設(shè)置默認(rèn) 的線寬參數(shù)。這樣對(duì)于存在線寬信息的行列線寬按照存在的值,不存在的通過默認(rèn)值來補(bǔ) 充,保持了信息的完整性,以及樣式的可調(diào)、可設(shè)置性。
[0084] 本實(shí)施例中的表格重排方法,提供一種完善的表格重排方法,使得表格結(jié)構(gòu)保持 版式描述不變的情況下,又能夠在顯示受限的情況下進(jìn)行保持表格邏輯結(jié)構(gòu)的重排,解決 的技術(shù)問題是現(xiàn)有技術(shù)中的表格重排方法在版式文檔在屏幕尺寸受限的顯示設(shè)備上被顯 示時(shí),無法合理處理其中的表格數(shù)據(jù)。所述的表格重排方法中,先將源文檔解析并轉(zhuǎn)化為本 發(fā)明中的版式描述方法,再利用版面理解方法確認(rèn)表格數(shù)目以及對(duì)應(yīng)區(qū)域,最后通過接收 外界輸入的方法完成表格邏輯結(jié)構(gòu)信息的構(gòu)建,通過這種方式,通過源文檔解析提高了處 理效率,為了保證準(zhǔn)確性,又進(jìn)行了后續(xù)的外界調(diào)整,從而高效、準(zhǔn)確的建立了表格邏輯結(jié) 構(gòu)信息。所述的表格重排方法中還包括線寬設(shè)置的過程,設(shè)置默認(rèn)的線寬參數(shù),這樣對(duì)于存 在線寬信息的行列線寬按照存在的值,不存在的通過默認(rèn)值來補(bǔ)充,保持了信息的完整性, 以及樣式的可調(diào)、可設(shè)置性。
[0085] 此外,本實(shí)施例所述的表格重排方法,如果在表格引用的樣式中設(shè)定了最大列寬 和最小列寬,則需要根據(jù)這些信息重新調(diào)整每列的列寬。這樣,實(shí)現(xiàn)了在一定范圍內(nèi)列寬的 可調(diào)節(jié)性,更具有人性化,方便與根據(jù)需要進(jìn)行調(diào)整和設(shè)置,又保持了表格的完整性。所述 的表格重排方法,獲取單元格的內(nèi)容后,將單元格作為排版對(duì)象單獨(dú)進(jìn)行排版的過程中,不 限排版高度,排版結(jié)束后獲取到每個(gè)單元格的實(shí)際排版高度,高度可以根據(jù)需要調(diào)節(jié)或者 用戶自定義顯示類型,全部顯示還是部分顯示,更加人性化和多樣化。如果當(dāng)前頁(yè)面未能顯 示完整表格,則記錄未顯示的邏輯行信息,在翻頁(yè)后只計(jì)算未顯示部分并排版,通過分頁(yè)顯 示的形式保持了表格的完整性。所述繪制表格的過程,如果表格屬性為表頭信息,則優(yōu)先重 新排版繪制此行組,優(yōu)先繪制表頭將表格更完整的還原出,使得表格的可讀性進(jìn)一步提高。
[0086] 實(shí)施例2 :
[0087] -種表格重排系統(tǒng),包括:
[0088] 構(gòu)建模塊:構(gòu)建表格邏輯結(jié)構(gòu)信息。
[0089] 版面分析子模塊:通過版面解析方法從表格源文件中直接獲取表格邏輯結(jié)構(gòu)信息 和對(duì)應(yīng)的版式描述信息。將表格的邏輯結(jié)構(gòu)與對(duì)應(yīng)的版式描述信息通過唯一的圖元編號(hào)進(jìn) 行關(guān)聯(lián)。
[0090] 轉(zhuǎn)化子模塊:通過轉(zhuǎn)化之后的版式表格文件獲取表格邏輯結(jié)構(gòu)信息和對(duì)應(yīng)的版式 描述信息。
[0091] 對(duì)應(yīng)子單元:通過接受外界輸入來獲得表格邏輯結(jié)構(gòu)信息和對(duì)應(yīng)的版式描述信 肩、。
[0092] 行列獲取模塊:獲取所述表格的總行數(shù)和總列數(shù),計(jì)算表格線寬并計(jì)算每個(gè)單元 格的起始列號(hào)和列寬。
[0093] 排版模塊:遍歷每個(gè)單元格,獲取單元格的內(nèi)容后,將單元格作為排版對(duì)象單獨(dú)進(jìn) 行排版;所述排版模塊中,不限排版高度,排版結(jié)束后獲取到每個(gè)單元格的實(shí)際排版高度。 高度可以根據(jù)需要調(diào)節(jié)或者用戶自定義顯示類型,全部顯示還是部分顯示,更加人性化和 多樣化。
[0094] 繪制模塊:加入線寬和單元格間距后,將單元格組合成邏輯行,邏輯行組合成邏輯 表格,排列在目標(biāo)顯示區(qū)域繪制表格。所述繪制模塊中,包括部分繪制子模塊:如果當(dāng)前頁(yè) 面未能顯示完整表格,則記錄未顯示的邏輯行信息,在翻頁(yè)后只計(jì)算未顯示部分并排版。通 過分頁(yè)顯示的形式保持了表格的完整性。所述繪制模塊中,繪制表格的過程,如果表格屬性 為表頭信息,則優(yōu)先重新排版繪制此行組。
[0095] 進(jìn)一步的,所述的表格重排系統(tǒng),還包括線寬設(shè)置單元,設(shè)置默認(rèn)的線寬參數(shù)。 [0096] 在本實(shí)施例所述的表格重排系統(tǒng),所述計(jì)算表格線寬的過程,包括:遍歷行,通過 行索引獲取行信息,其中行的樣式包含線寬以及顏色信息,只對(duì)當(dāng)前行的第一條列線和最 后一條列線以及上下兩條行線起作用;刷新行線和列線的線寬,當(dāng)前行不存在線寬信息則 按照默認(rèn)的所述默認(rèn)的線寬參數(shù)計(jì)算,若存在則保留當(dāng)前值,通過代表橫向和縱向的兩個(gè) 數(shù)組保存所有的線寬信息;遍歷當(dāng)前行的所有的單元格,進(jìn)一步刷新行線和列線的線寬。 [0097] 優(yōu)選的,所述的表格重排系統(tǒng),所述計(jì)算每個(gè)單元格的起始列號(hào)的過程,包括:設(shè) 置一個(gè)二維的數(shù)組,其大小為此表格的行列數(shù)相乘,數(shù)組中每個(gè)元素定位表格的唯一位置, 表示此位置是否可以作為單元格的開始點(diǎn),根據(jù)單元格的屬性按行遍歷所有單元格,獲得 單元格的起始列號(hào),由列比例以及線寬信息計(jì)算每列列寬。
[0098] 在其他實(shí)施方式中,如果在表格引用的樣式中設(shè)定了最大列寬和最小列寬,則需 要根據(jù)這些信息重新調(diào)整每列的列寬。如果在表格引用的樣式中設(shè)定了最大列寬和最小 列寬,則需要根據(jù)這些信息重新調(diào)整每列的列寬。這樣,實(shí)現(xiàn)了在一定范圍內(nèi)列寬的可調(diào)節(jié) 性,更具有人性化,方便與根據(jù)需要進(jìn)行調(diào)整和設(shè)置,又保持了表格的完整性。
[0099] 本實(shí)施例中的表格重排系統(tǒng),提供一種完善的表格重排方法,使得表格結(jié)構(gòu)保持 版式描述不變的情況下,又能夠在顯示受限的情況下進(jìn)行保持表格邏輯結(jié)構(gòu)的重排,解決 的技術(shù)問題是現(xiàn)有技術(shù)中的表格重排方法在版式文檔在屏幕尺寸受限的顯示設(shè)備上被顯 示時(shí),無法合理處理其中的表格數(shù)據(jù)。所述構(gòu)建模塊中,先將源文檔解析并轉(zhuǎn)化為本發(fā)明中 的版式描述方法,再利用版面理解方法確認(rèn)表格數(shù)目以及對(duì)應(yīng)區(qū)域,最后通過接收外界輸 入的方法完成表格邏輯結(jié)構(gòu)信息的構(gòu)建,通過這種方式,通過源文檔解析提高了處理效率, 為了保證準(zhǔn)確性,又進(jìn)行了后續(xù)的外界調(diào)整,從而高效、準(zhǔn)確的建立了表格邏輯結(jié)構(gòu)信息。 所述的表格重排方法中還包括線寬設(shè)置單元,設(shè)置默認(rèn)的線寬參數(shù),這樣對(duì)于存在線寬信 息的行列線寬按照存在的值,不存在的通過默認(rèn)值來補(bǔ)充,保持了信息的完整性,以及樣式 的可調(diào)、可設(shè)置性。
[0100] 此外,本實(shí)施例所述的表格重排系統(tǒng),如果在表格引用的樣式中設(shè)定了最大列寬 和最小列寬,則需要根據(jù)這些信息重新調(diào)整每列的列寬。這樣,實(shí)現(xiàn)了在一定范圍內(nèi)列寬的 可調(diào)節(jié)性,更具有人性化,方便與根據(jù)需要進(jìn)行調(diào)整和設(shè)置,又保持了表格的完整性。此外, 獲取單元格的內(nèi)容后,將單元格作為排版對(duì)象單獨(dú)進(jìn)行排版的過程中,不限排版高度,排版 結(jié)束后獲取到每個(gè)單元格的實(shí)際排版高度,高度可以根據(jù)需要調(diào)節(jié)或者用戶自定義顯示類 型,全部顯示還是部分顯示,更加人性化和多樣化。如果當(dāng)前頁(yè)面未能顯示完整表格,則記 錄未顯示的邏輯行信息,在翻頁(yè)后只計(jì)算未顯示部分并排版,通過分頁(yè)顯示的形式保持了 表格的完整性。所述繪制表格的過程,如果表格屬性為表頭信息,則優(yōu)先重新排版繪制此行 組,優(yōu)先繪制表頭將表格更完整的還原出,使得表格的可讀性進(jìn)一步提高。
[0101] 實(shí)施例3 :
[0102] 本實(shí)施例提供一種基于版式的表格重排方法的【具體實(shí)施方式】,過程如下:
[0103] 1.在生成流式信息的過程中,需要加入表格定義,識(shí)別出表格的位置信息后進(jìn)行 人工調(diào)整,完成構(gòu)建表格邏輯結(jié)構(gòu)信息。在現(xiàn)有的排版算法中,只有文字塊和非文字塊,本 實(shí)施例在此基礎(chǔ)上加入了表格塊。在排版過程中如果遇到表格塊,則保留現(xiàn)場(chǎng)并進(jìn)入表格 的排版邏輯中。
[0104] 2.在完成了上述表格邏輯結(jié)構(gòu)的構(gòu)建后,開始進(jìn)行表格重排的準(zhǔn)備工作。如果所 有線寬未設(shè)置,則統(tǒng)一調(diào)整為1像素寬度,線寬屬性在表格引用的樣式中設(shè)置,行線和列線 線寬分別設(shè)為一維數(shù)組pHLineWidth,pVLineWidth。
[0105] 3.獲取總行數(shù)和總列數(shù):統(tǒng)計(jì)每個(gè)RowGroup中的行數(shù)并累加得總行數(shù),設(shè)為 nRowCount,總列數(shù)為表格屬性,設(shè)為nColCount。
[0106] 4.計(jì)算表格線寬:
[0107] 1)遍歷行,通過行索引獲取行信息,其中行的樣式包含線寬以及顏色信息,只對(duì)當(dāng) 前行的第一條列線和最后一條列線以及上下兩條行線起作用;
[0108] 2)刷新行線和列線的線寬,當(dāng)前行不存在線寬信息則按照pHLineWidth和 PVLineWidth計(jì)算,存在則保留當(dāng)前值,通過代表橫向和縱向的兩個(gè)數(shù)組保存所有的線寬信 息;
[0109] 3)遍歷當(dāng)前行的所有的單元格,進(jìn)一步刷新行線和列線的線寬,達(dá)到精確。
[0110] 5.根據(jù)每個(gè)單元格的Span屬性計(jì)算每個(gè)單元格的起始列號(hào):
[0111] 1)維護(hù)一個(gè)二維的數(shù)組,設(shè)為cellStartColVec,大小為此表格的行列數(shù)相乘,數(shù) 組中每個(gè)元素可以定位表格的唯一位置,表示此位置是否可以作為單元格的開始點(diǎn),所有 值初始化為true ;
[0112] 2)按行遍歷所有單元格過程中,設(shè)當(dāng)前迭代中的行數(shù)和列數(shù)分別為i和k,當(dāng)前單 兀格的 ColSpan和 RowSpan 屬性值分別為 m和 n,如果 k+m'〈nColCount 且 i+n'〈nRowCount, 其中111'的取值范圍為{0?111},11'的取值范圍為{0?11},則〇6115七 &竹(:〇1¥6(3[1+11'] [k+m,] =ture,反之如果 k+m' >nColCount 或 i+n' >nRowCount,強(qiáng)制 ColSpan 屬性或 RowSpan 屬性值為〇(實(shí)際文檔值不變,只應(yīng)用于顯示),另外,在遍歷過程中cellStartColVec[i] [k] 的值如果為false,則當(dāng)前列k即為當(dāng)前單元格的起始列號(hào)。
[0113] 6.表格每行的寬度可以維護(hù)一個(gè)一維數(shù)組,設(shè)為pColWidth,數(shù)組有nColCount個(gè) 元素,由列比例以及線寬信息計(jì)算每列列寬:
[0114] 1)列比例數(shù)組設(shè)為pColWidthRatio,比例總和設(shè)為dWidthRatio如果不存在列比 例屬性,則每列均默認(rèn)為1 ;
[0115] 2)表格整體寬度為用戶定義值,可以是屏幕寬度,設(shè)為dTableWidth,設(shè)行單元格 總寬度之和為dCellWidthSum (不包括線寬pVLineWidth和單元格間距dCellSpace),則遍 歷列的過程中(當(dāng)前列數(shù)為 i),dWidthRatio+=pColWidthRatio[i],dCellWidthSum_=(pVL ineWidth [i] +dCellSpace),遍歷結(jié)束后,調(diào)整值 dCellWidthSum+=dCellSpace,再重新遍歷 一次,pColWidth[i]=dCellWidthSum*pColWidthRatio[i]/dWidthRatio。
[0116] 7.如果在表格引用的樣式中設(shè)定了最大列寬和最小列寬,則需要根據(jù)這些信息重 新調(diào)整每列的列寬。
[0117] 8.遍歷每個(gè)表格行,在表格行中遍歷每個(gè)單元格,獲取單元格的內(nèi)容后,將單元格 作為排版對(duì)象單獨(dú)進(jìn)行排版,排版方式與前文所述的算法一致,其中單元格使用前面計(jì)算 得到的排版寬度,但是不限排版
[0118] 高度,排版結(jié)束后獲取到每個(gè)單元格的實(shí)際排版高度。
[0119] 9.加入線寬和單元格間距后,將單元格組合成邏輯行,并適當(dāng)調(diào)整大小。
[0120] 10.邏輯行組合成邏輯表格,適當(dāng)調(diào)整后(主要是跨行跨列以及不同高度單元格表 格線對(duì)齊)排列在目標(biāo)顯示區(qū)域上,如果當(dāng)前頁(yè)面未能顯示完整表格,則記錄未顯示的邏輯 行信息,在翻頁(yè)后只計(jì)算未顯示部分并排版,如果表格存在行組信息R印eat屬性為true而 且Type不為Body,則優(yōu)先重新排版繪制此行組(一般為表格的表頭)。
[0121] 11.對(duì)于表格標(biāo)題,用戶可以根據(jù)表格信息自行繪制到相應(yīng)位置上。
[0122] 通過以上方式,完成了表格的重排過程。
[0123] 實(shí)施例4
[0124] 下面面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明作進(jìn)一步地描述。
[0125] 現(xiàn)有的版式文件又叫版面固定文檔,特點(diǎn)在于在不同設(shè)備和閱讀軟件上具有顯示 結(jié)果的一致性。它在自定義的坐標(biāo)系中,明確地指定了每個(gè)文檔內(nèi)容顯示的位置,尺寸等, 保證真實(shí)的重現(xiàn)文檔的原貌。這是一系列文檔頁(yè)面對(duì)象描述方式的統(tǒng)稱。而流式重排指的 是根據(jù)顯示設(shè)備屏幕的大小對(duì)版式文件的內(nèi)容重新進(jìn)行排版。當(dāng)系統(tǒng)實(shí)現(xiàn)了較為完善的流 式排版核心算法之后,可以使用本實(shí)施例中的表格重排算法進(jìn)行表格重排。流式排版核心 算法的功能是,給出指定形狀的顯示區(qū)域,向區(qū)域內(nèi)繪制由各種圖元對(duì)象(文字,圖片為主) 混排的數(shù)據(jù)流,使得:數(shù)據(jù)流在繪制過程中遇到限制區(qū)域邊緣時(shí),如果下一個(gè)圖元繪制將越 界,則自動(dòng)切換到下一行繼續(xù)輸出。排版算法的基本思路是,算法每次繪制圖元的一個(gè)最小 粒度單位,即一幅圖片或文字對(duì)象中的一個(gè)文字,在繪制前取出該對(duì)象的尺寸并判斷與當(dāng) 前行剩余空白寬度的大小關(guān)系,如果寬度不夠則換行,否則輸出,輸出結(jié)束后繼續(xù)判斷下一 個(gè)圖元。
[0126] 表格在版式文件上的表現(xiàn)形式就是一些線條和文字等簡(jiǎn)單圖元的排列,并沒有明 確的邏輯結(jié)構(gòu)。于是需要定義一套適合流式重排的表格樹形結(jié)構(gòu),在不影響版式閱讀效果 的情況下實(shí)現(xiàn)流式重排。
[0127] 關(guān)于流式表格的結(jié)構(gòu):
[0128] 流式表格主要描述了包含在一頁(yè)或者多頁(yè)中的表格,用以支持表格內(nèi)容重排。
[0129] 圖2給出了本設(shè)計(jì)中流式表格的整體結(jié)構(gòu)圖,在圖2中的標(biāo)簽所表示的數(shù)據(jù)信息 如下表1 :
[0130] 表1、圖2中的標(biāo)簽所表示的數(shù)據(jù)信息
[0131]

【權(quán)利要求】
1. 一種表格重排方法,其特征在于,包括以下步驟: 構(gòu)建表格邏輯結(jié)構(gòu)信息; 獲取所述表格的總行數(shù)和總列數(shù),計(jì)算表格線寬并計(jì)算每個(gè)單元格的起始列號(hào)和列 寬; 遍歷每個(gè)單元格,獲取單元格的內(nèi)容后,將單元格作為排版對(duì)象單獨(dú)進(jìn)行排版; 加入線寬和單元格間距后,將單元格組合成邏輯行,邏輯行組合成邏輯表格,排列在目 標(biāo)顯示區(qū)域繪制表格。
2. 根據(jù)權(quán)利要求1所述的表格重排方法,其特征在于,在所述構(gòu)建表格邏輯結(jié)構(gòu)信息 的過程中,包括: 通過版面解析方法從表格源文件中直接獲取表格邏輯結(jié)構(gòu)信息和對(duì)應(yīng)的版式描述信 息; 通過轉(zhuǎn)化之后的版式表格文件獲取表格邏輯結(jié)構(gòu)信息和對(duì)應(yīng)的版式描述信息; 通過接受外界輸入來獲得表格邏輯結(jié)構(gòu)信息和對(duì)應(yīng)的版式描述信息。
3. 根據(jù)權(quán)利要求2所述的表格重排方法,其特征在于,將表格的邏輯結(jié)構(gòu)與對(duì)應(yīng)的版 式描述信息通過唯一的圖元編號(hào)進(jìn)行關(guān)聯(lián)。
4. 根據(jù)權(quán)利要求1或2或3所述的表格重排方法,其特征在于,還包括線寬設(shè)置的過 程,設(shè)置默認(rèn)的線寬參數(shù)。
5. 根據(jù)權(quán)利要求4所述的表格重排方法,其特征在于,所述計(jì)算表格線寬的過程,包 括: 遍歷行,通過行索引獲取行信息,其中行的樣式包含線寬以及顏色信息,只對(duì)當(dāng)前行的 第一條列線和最后一條列線以及上下兩條行線起作用; 刷新行線和列線的線寬,當(dāng)前行不存在線寬信息則按照默認(rèn)的所述默認(rèn)的線寬參數(shù)計(jì) 算,若存在則保留當(dāng)前值,通過代表橫向和縱向的兩個(gè)數(shù)組保存所有的線寬信息; 遍歷當(dāng)前行的所有的單元格,進(jìn)一步刷新行線和列線的線寬。
6. 根據(jù)權(quán)利要求1-5任一所述的表格重排方法,其特征在于,所述計(jì)算每個(gè)單元格的 起始列號(hào)的過程,包括:設(shè)置一個(gè)二維的數(shù)組,其大小為此表格的行列數(shù)相乘,數(shù)組中每個(gè) 元素定位表格的唯一位置,表示此位置是否可以作為單元格的開始點(diǎn),根據(jù)單元格的屬性 按行遍歷所有單元格,獲得單元格的起始列號(hào),由列比例以及線寬信息計(jì)算每列列寬。
7. 根據(jù)權(quán)利要求6所述的表格重排方法,其特征在于,如果在表格引用的樣式中設(shè)定 了最大列寬和最小列寬,則需要根據(jù)這些信息重新調(diào)整每列的列寬。
8. 根據(jù)權(quán)利要求7所述的表格重排方法,其特征在于,所述遍歷每個(gè)單元格,獲取單元 格的內(nèi)容后,將單元格作為排版對(duì)象單獨(dú)進(jìn)行排版的過程中,不限排版高度,排版結(jié)束后獲 取到每個(gè)單元格的實(shí)際排版高度。
9. 根據(jù)權(quán)利要求7或8所述的表格重排方法,其特征在于,所述加入線寬和單元格間距 后,將單元格組合成邏輯行,邏輯行組合成邏輯表格,排列在目標(biāo)顯示區(qū)域繪制表格的過程 中,包括:如果當(dāng)前頁(yè)面未能顯示完整表格,則記錄未顯示的邏輯行信息,在翻頁(yè)后只計(jì)算 未顯不部分并排版。
10. 根據(jù)權(quán)利要求9所述的表格重排方法,其特征在于,所述繪制表格的過程,如果表 格屬性為表頭信息,則優(yōu)先重新排版繪制此行組。
11. 一種表格重排系統(tǒng),其特征在于,包括: 構(gòu)建模塊:構(gòu)建表格邏輯結(jié)構(gòu)信息; 行列獲取模塊:獲取所述表格的總行數(shù)和總列數(shù),計(jì)算表格線寬并計(jì)算每個(gè)單元格的 起始列號(hào)和列寬; 排版模塊:遍歷每個(gè)單元格,獲取單元格的內(nèi)容后,將單元格作為排版對(duì)象單獨(dú)進(jìn)行排 版; 繪制模塊:加入線寬和單元格間距后,將單元格組合成邏輯行,邏輯行組合成邏輯表 格,排列在目標(biāo)顯示區(qū)域繪制表格。
12. 根據(jù)權(quán)利要求1所述的表格重排系統(tǒng),其特征在于,在所述構(gòu)建模塊中,包括: 版面分析子模塊:通過版面解析方法從表格源文件中直接獲取表格邏輯結(jié)構(gòu)信息和對(duì) 應(yīng)的版式描述信息; 轉(zhuǎn)化子模塊:通過轉(zhuǎn)化之后的版式表格文件獲取表格邏輯結(jié)構(gòu)信息和對(duì)應(yīng)的版式描述 信息; 對(duì)應(yīng)子單元:通過接受外界輸入來獲得表格邏輯結(jié)構(gòu)信息和對(duì)應(yīng)的版式描述信息。
13. 根據(jù)權(quán)利要求12所述的表格重排系統(tǒng),其特征在于,將表格的邏輯結(jié)構(gòu)與對(duì)應(yīng)的 版式描述信息通過唯一的圖元編號(hào)進(jìn)行關(guān)聯(lián)。
14. 根據(jù)權(quán)利要求11或12或13所述的表格重排系統(tǒng),其特征在于,還包括線寬設(shè)置單 元,設(shè)置默認(rèn)的線寬參數(shù)。
15. 根據(jù)權(quán)利要求14所述的表格重排系統(tǒng),其特征在于,所述計(jì)算表格線寬的過程,包 括: 遍歷行,通過行索引獲取行信息,其中行的樣式包含線寬以及顏色信息,只對(duì)當(dāng)前行的 第一條列線和最后一條列線以及上下兩條行線起作用; 刷新行線和列線的線寬,當(dāng)前行不存在線寬信息則按照默認(rèn)的所述默認(rèn)的線寬參數(shù)計(jì) 算,若存在則保留當(dāng)前值,通過代表橫向和縱向的兩個(gè)數(shù)組保存所有的線寬信息; 遍歷當(dāng)前行的所有的單元格,進(jìn)一步刷新行線和列線的線寬。
16. 根據(jù)權(quán)利要求11-15任一所述的表格重排系統(tǒng),其特征在于,所述計(jì)算每個(gè)單元格 的起始列號(hào)的過程,包括:設(shè)置一個(gè)二維的數(shù)組,其大小為此表格的行列數(shù)相乘,數(shù)組中每 個(gè)元素定位表格的唯一位置,表示此位置是否可以作為單元格的開始點(diǎn),根據(jù)單元格的屬 性按行遍歷所有單元格,獲得單元格的起始列號(hào),由列比例以及線寬信息計(jì)算每列列寬。
17. 根據(jù)權(quán)利要求16所述的表格重排系統(tǒng),其特征在于,如果在表格引用的樣式中設(shè) 定了最大列寬和最小列寬,則需要根據(jù)這些信息重新調(diào)整每列的列寬。
18. 根據(jù)權(quán)利要求17所述的表格重排系統(tǒng),其特征在于,所述排版模塊中,不限排版高 度,排版結(jié)束后獲取到每個(gè)單元格的實(shí)際排版高度。
19. 根據(jù)權(quán)利要求17或18所述的表格重排系統(tǒng),其特征在于,所述繪制模塊中,包括部 分繪制子模塊:如果當(dāng)前頁(yè)面未能顯示完整表格,則記錄未顯示的邏輯行信息,在翻頁(yè)后只 計(jì)算未顯示部分并排版。
20. 根據(jù)權(quán)利要求19所述的表格重排系統(tǒng),其特征在于,所述繪制模塊中,繪制表格的 過程,如果表格屬性為表頭信息,則優(yōu)先重新排版繪制此行組。
【文檔編號(hào)】G06F17/24GK104516867SQ201310462279
【公開日】2015年4月15日 申請(qǐng)日期:2013年9月30日 優(yōu)先權(quán)日:2013年9月30日
【發(fā)明者】馮浩然, 丁力 申請(qǐng)人:北大方正集團(tuán)有限公司, 北京方正阿帕比技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1