2013-07-17 79 views
0

我使用docx4j,他們已經建立了零件列表非常有用的Web應用程序中使用的字體大小:http://webapp.docx4java.org/OnlineDemo/PartsList.html如何閱讀所有的DOCX

我有五個字的樣本文件。前四個字體大小爲12,最後一個字體大小爲8.

我想讀取文檔中使用的所有不同字體大小。因此,在這種情況下:12和8

我上傳的web應用程序的樣本文件,我認爲這些信息將被存儲在document.xml,但我不能肯定,因爲我只看到16但不24在XML。另外,我不確定如何提取這些信息。

問題

  • 我怎樣才能提取docx4j字內容的字體大小?

  • 如何提取整個word文檔的每個單詞和背景顏色的字體顏色?

回答

2

如果未在運行中設置字體大小,並且樣式正在使用中,則需要檢查樣式層次結構。如果沒有設置,它會回到默認值。

如ECMA 4ED第1部分所說的那樣在17.7.2(風格層次):

這個過程可以被描述如下:

  • 首先,文檔的默認值被施加到所有運行和文件中的段落。
  • 接着,表格樣式屬性應用於每個表中的文件中,以下條件格式夾雜物和每個表指定 排除。
  • 接下來,編號的項目和段落屬性應用於用編號樣式格式化的每個段落。
  • 接下來,按段落樣式定義的段落和運行屬性應用於每個段落。
  • 接下來,運行屬性應用於每個應用了特定字符樣式的運行。
  • 最後,我們應用直接格式(段落或運行屬性不是來自樣式)。如果此直接格式包含編號,則會應用 編號+關聯的段落屬性。

如果rFonts元件(§17.3.2.26)的值引用的字體 其是不可用的,確定應用程序通過一個稱爲字體替換過程,其在 §17.8定義的合適的替代 字體。 2。

docx4j做這樣的事情 - 例如參見線430和FF在https://github.com/plutext/docx4j/blob/master/src/main/java/org/docx4j/model/PropertyResolver.java

類似的原則也適用於字體顏色。

這裏我就不討論瞭如何通過文件一字一句重複(或者更確切地說,通過運行運行),比其他說谷歌traversalutil設置字體大小的

例明確在運行

   <w:r> 
        <w:rPr> 
         <w:sz w:val="36"/> 
        </w:rPr> 
        <w:t>this is 18 points</w:t> 
       </w:r> 

您可以在Microsoft Word中或使用docx4j進行設置。要了解如何在docx4j中執行此操作,可以使用webapp從示例docx生成代碼,但其實質是:

org.docx4j.wml.R yourRun; 
    yourRun.getRPr().setSz(an HpsMeasure); 
+0

答覆已更新。如果它的「未在運行中設置」,則該w:sz元素將不存在。 – JasonPlutext

+0

yourRun.getRPr()。getSz() – JasonPlutext