2

私はすべてのdocxのドキュメントコンテンツと各実行/段落に関する情報を取得しようとしています。これまでのところ、実行/段落のプロパティからスタイル情報を取得することができました。

using (WordprocessingDocument doc = WordprocessingDocument.Open(filePath, false))
        {
            MainDocumentPart mainPart = doc.MainDocumentPart;
            IEnumerable<Paragraph> paragraphs = mainPart.Document.Body.OfType<Paragraph>();
            foreach (Paragraph paragraph in paragraphs)
            {
                string text = paragraph.InnerText;

                IEnumerable<Run> runs = paragraph.Descendants<Run>();
                foreach (Run run in runs)
                {
                    string runText = run.InnerText;
                    RunProperties properties = run.RunProperties;
                    string fontsize = properties.FontSize.Val;
                    string fontsize2 = properties.FontSizeComplexScript.Val;
                    string fontaname = properties.RunFonts.HighAnsi;
                }
            }
        }

ただし、これは、テキストの形式(スタイル)がデフォルトでない場合にのみ機能します。言い換えれば、properties != null内部のメンバーはではありませんnull。これまでのところ、style.xmlフォーメーションコンテンツを取得する方法は1つしかありません。インターネットでの検索では、手がかりは得られませんでした。では、どうすればstyle.xmlにアクセスしたり、デフォルトのフォント名やフォントサイズなどを取得したりできますか?

4

3 に答える 3

3

OpenXML を使用してデフォルト スタイルを取得するには、次のスニペットを使用できます。

using (WordprocessingDocument doc = WordprocessingDocument.Open(filePath, true))
{

   DocDefaults defaults = doc.MainDocumentPart.StyleDefinitionsPart.Styles.Descendants<DocDefaults>().FirstOrDefault();
   //get the font size
   string fontSize = defaults.RunPropertiesDefault.RunPropertiesBaseStyle.FontSize.Val;
   //get the font prob. (Ascii, HAnsi, ComplexScript,...etc)
   RunFonts runFont = defaults.RunPropertiesDefault.RunPropertiesBaseStyle.RunFonts;

}

テーマに関しては、以下を使用してメジャー フォントとマイナー フォントを取得できます。

var latineMajorFont = doc.MainDocumentPart.ThemePart.Theme.ThemeElements.FontScheme.MajorFont.LatinFont;
var latinMinorFont = doc.MainDocumentPart.ThemePart.Theme.ThemeElements.FontScheme.MinorFont.LatinFont;
var complexMajorFont = doc.MainDocumentPart.ThemePart.Theme.ThemeElements.FontScheme.MajorFont.ComplexScriptFont;
var complextMinorFont = doc.MainDocumentPart.ThemePart.Theme.ThemeElements.FontScheme.MinorFont.ComplexScriptFont;
于 2013-05-22T10:45:46.370 に答える
2

デフォルトの段落スタイルは、スタイル パーツで @w:type="paragraph" および@w:default="1"を指定したスタイルです。

スタイル部分には通常、次のようなものも含まれていることに注意してください。

  <w:docDefaults>
    <w:rPrDefault>
      <w:rPr>
        <w:rFonts w:asciiTheme="minorHAnsi" w:eastAsiaTheme="minorEastAsia" w:hAnsiTheme="minorHAnsi" w:cstheme="minorBidi"/>
        <w:sz w:val="22"/>
        <w:szCs w:val="22"/>
        <w:lang w:val="en-AU" w:eastAsia="ko-KR" w:bidi="ar-SA"/>
      </w:rPr>
    </w:rPrDefault>
    <w:pPrDefault>
      <w:pPr>
        <w:spacing w:after="200" w:line="276" w:lineRule="auto"/>
      </w:pPr>
    </w:pPrDefault>
  </w:docDefaults> 

詳細については、Open XML 仕様を参照してください。

于 2012-10-17T18:57:45.100 に答える
2
<<So, how to find out when to use typeFace from minorFont and when from majorFont?>>

majorFont は見出し (見出し 1 など) で使用し、minorFont は「通常のテキスト」で使用することを意図しています。

于 2013-01-08T14:01:11.653 に答える