5

OpenXML SDK 2.0 を使用して、セクションの特定のポイントでページ番号付けを開始する方法がわかりません。OpenXML Productivity Tool を使用してドキュメントのヘッダーを検討すると、次のようになります。

<w:hdr xmlns:wpc="http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:wp14="http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing" xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:w14="http://schemas.microsoft.com/office/word/2010/wordml" xmlns:wpg="http://schemas.microsoft.com/office/word/2010/wordprocessingGroup" xmlns:wpi="http://schemas.microsoft.com/office/word/2010/wordprocessingInk" xmlns:wne="http://schemas.microsoft.com/office/word/2006/wordml" xmlns:wps="http://schemas.microsoft.com/office/word/2010/wordprocessingShape" mc:Ignorable="w14 wp14">
  <w:p w:rsidR="00FC0BC9" w:rsidP="00FC0BC9" w:rsidRDefault="005F46AD">
    <w:pPr>
      <w:pStyle w:val="Header" />
      <w:ind w:right="360" />
      <w:jc w:val="right" />
    </w:pPr>
    <w:r>
      <w:t xml:space="preserve">I-1 Page </w:t>
    </w:r>
    <w:r>
      <w:fldChar w:fldCharType="begin" />
    </w:r>
    <w:r>
      <w:instrText xml:space="preserve"> PAGE  \* Arabic  \* MERGEFORMAT </w:instrText>
    </w:r>
    <w:r>
      <w:fldChar w:fldCharType="separate" />
    </w:r>
    <w:r w:rsidR="00C62387">
      <w:rPr>
        <w:noProof />
      </w:rPr>
      <w:t>1</w:t>
    </w:r>
    <w:r>
      <w:fldChar w:fldCharType="end" />
    </w:r>
  </w:p>

Run のセットを使用してフィールドを構築し、テキスト値が "1" の Run を含めて、このヘッダーのページ番号を 1 に設定しているようです。 4ページ。

ただし、自分のドキュメントに次のコードを使用して同等のものを生成した場合でも、Word は現在のページからページ番号を開始することを主張します。たとえば、ページ 4 はページ 4 で番号付けを開始しますが、ページ 4 はページ 1 で番号付けを開始することが望ましい動作です。

var headerPart = mainDocument.AddNewPart<HeaderPart>(GetHeaderIDFor(actWithScenes.Act, scene));

var header = new Header();
headerPart.Header = header;

header.Append(new Paragraph(
  new ParagraphProperties(new Justification { Val = JustificationValues.Right }),
  new Run(new Text(staticText) { Space = SpaceProcessingModeValues.Preserve }),
  new Run(new FieldChar { FieldCharType = FieldCharValues.Begin }),
  new Run(new FieldCode { Space = SpaceProcessingModeValues.Preserve, Text = " PAGE  \\* Arabic  \\* MERGEFORMAT " }),
  new Run(new FieldChar { FieldCharType = FieldCharValues.Separate }),
  new Run(new RunProperties(new NoProof()), new Text("1")),
  new Run(new FieldChar { FieldCharType = FieldCharValues.End })
));

そして、ここにセクション区切りを追加しているコードがありますが、それでもページ番号付けは再開されません:

public static Paragraph AppendSectionBreak(Body body, string headerID = null, string footerID = null) {
   var sectionProperties = new SectionProperties();

   if (null != headerID) {
      sectionProperties.Append(new HeaderReference { Id = headerID });
   }

   if (null != footerID) {
      sectionProperties.Append(new FooterReference { Id = footerID });
   }

   var paragraph = new Paragraph(new ParagraphProperties(sectionProperties));

   body.Append(paragraph);

   return paragraph;
}

では、セクション ヘッダーのページ番号付けを任意の値から開始するにはどうすればよいでしょうか。何か不足していますか?

4

2 に答える 2

7

私は最終的にこれを理解しました。トリックは、次のコードを使用することです。

string headerID = "YOUR_HEADER_ID";
int pageNumberStart = 1

var paragraph = new Paragraph(
   new ParagraphProperties(
      new SectionProperties(
         new HeaderReference { Id = headerID },
         new PageNumberType { Start = pageNumberStart }
      )
   )
);
于 2012-08-16T17:48:49.097 に答える
4

SectionBreak を挿入する必要があります。

これは、特定のページからページ番号を開始する方法を説明する短いビデオです。

http://www.youtube.com/watch?v=NGzz2ZmLrFw

于 2012-08-16T05:11:10.943 に答える