добавить номер страницы в нижнем колонтитуле, начиная с n страницы в текстовом документе - PullRequest
0 голосов
/ 01 ноября 2018

Мне нужно добавить номер страницы (Страница 1 из X), начиная с 5-й страницы в текстовом документе. Как это сделать. У меня есть код, который добавляется ко всему документу, и я не могу его контролировать. Я использую Word Interop в C #. Пожалуйста, помогите.

 oDoc.ActiveWindow.ActivePane.View.SeekView = Microsoft.Office.Interop.Word.WdSeekView.wdSeekCurrentPageFooter;
                        //Object oMissing = System.Reflection.Missing.Value;
                        oDoc.ActiveWindow.Selection.TypeText("\t Page ");
                        Object TotalPages = Microsoft.Office.Interop.Word.WdFieldType.wdFieldNumPages;
                        Object CurrentPage = Microsoft.Office.Interop.Word.WdFieldType.wdFieldPage;
                        oDoc.ActiveWindow.Selection.HeaderFooter.LinkToPrevious = false;
                        oDoc.ActiveWindow.Selection.Fields.Add(oDoc.ActiveWindow.Selection.Range, ref CurrentPage, ref oMissing, ref oMissing);
                        oDoc.ActiveWindow.Selection.TypeText(" of ");
                        oDoc.ActiveWindow.Selection.Fields.Add(oDoc.ActiveWindow.Selection.Range, ref TotalPages, ref oMissing, ref oMissing);
                       

1 Ответ

0 голосов
/ 01 ноября 2018

Чтобы (заново) начать нумерацию в документе, необходим разрыв раздела. В следующем примере показано, как вставить разрыв раздела «Следующая страница» непосредственно перед целевой страницей, а затем отформатировать нижний колонтитул нового раздела, чтобы нумерация страниц начиналась в разделе с номера 1. 1. 1001 *

Примечание. Я также изменил назначение на TotalPages в предположении, что общее количество страниц должно соответствовать количеству новых разделов, а не всего документа.

        //Go to page where page numbering should start
        string pageNum = "3";
        wdApp.Selection.GoTo(Word.WdGoToItem.wdGoToPage, Word.WdGoToDirection.wdGoToNext, ref missing, pageNum);
        Word.Range rngPageNum = wdApp.Selection.Range;
        //Insert Next Page section break so that numbering can start at 1
        rngPageNum.InsertBreak(Word.WdBreakType.wdSectionBreakNextPage);

        Word.Section currSec = doc.Sections[rngPageNum.Sections[1].Index];
        Word.HeaderFooter ftr = currSec.Footers[Word.WdHeaderFooterIndex.wdHeaderFooterPrimary];

        //So that the footer content doesn't propagate to the previous section    
        ftr.LinkToPrevious = false;
        ftr.PageNumbers.RestartNumberingAtSection = true;
        ftr.PageNumbers.StartingNumber = 1;

        //If the total pages should not be the total in the document, just the section
        //use the field SectionPages instead of NumPages
        object TotalPages = Microsoft.Office.Interop.Word.WdFieldType.wdFieldSectionPages;
        object CurrentPage = Microsoft.Office.Interop.Word.WdFieldType.wdFieldPage;
        Word.Range rngCurrSecFooter = ftr.Range;
        rngCurrSecFooter.Fields.Add(rngCurrSecFooter, ref CurrentPage, ref missing, false);
        rngCurrSecFooter.InsertAfter(" of ");
        rngCurrSecFooter.Collapse(Word.WdCollapseDirection.wdCollapseEnd);
        rngCurrSecFooter.Fields.Add(rngCurrSecFooter, ref TotalPages, ref missing, false);
...