0

I have a generated word document (docx) and want to change the page number afterwards, in a way that it starts at number X. The page number is included in the footer of the word document. Where in the XML files do I need to apply this change?

I have changed a document to start at number 4 and looked at the XML code. The element <w:pgNumType w:start="4"/> was added. But if I only add this part manually to the XML, the document is broken.

document.xml content before adding "start with number 4":

        <w:sectPr w:rsidR="00C17A11" w:rsidRPr="00CD0C83" w:rsidSect="00A86D42">
            <w:headerReference r:id="rId8" w:type="even"/>
            <w:headerReference r:id="rId9" w:type="default"/>
            <w:footerReference r:id="rId10" w:type="even"/>
            <w:footerReference r:id="rId11" w:type="default"/>
            <w:headerReference r:id="rId12" w:type="first"/>
            <w:footerReference r:id="rId13" w:type="first"/>
            <w:pgSz w:h="16838" w:w="11906"/>
            <w:pgMar w:bottom="851" w:footer="567" w:gutter="0" w:header="851" w:left="1304" w:right="567" w:top="828"/>
            <w:cols w:space="708"/>
            <w:docGrid w:linePitch="360"/>
        </w:sectPr>

And after adding "start with number 4":

<w:sectPr w:rsidR="00C17A11" w:rsidRPr="00CD0C83" w:rsidSect="00CA253E">
  <w:headerReference w:type="default" r:id="rId8"/>
  <w:footerReference w:type="default" r:id="rId9"/>
  <w:pgSz w:w="11906" w:h="16838"/>
  <w:pgMar w:top="828" w:right="567" w:bottom="851" w:left="1304" w:header="851" w:footer="567" w:gutter="0"/>
  <w:pgNumType w:start="4"/>
  <w:cols w:space="708"/>
  <w:docGrid w:linePitch="360"/>
</w:sectPr>
Jagger
  • 10,350
  • 9
  • 51
  • 93
Josch
  • 121
  • 1
  • 3
  • 9
  • 1
    What does it have to do with abap? Have you tried extracting the .docx contents and then do the same change with whatever XML editor there is? – Jagger May 09 '19 at 10:27
  • Yes. Changing the XML manually leads to a corrupt .docx file. It seems like it's not enough to add the line as described. – Josch May 09 '19 at 10:45
  • I've added the info, that I code with ABAP, since there are many OpenXML libraries in other languages that support page-number changes. – Josch May 09 '19 at 10:45
  • Then show some of your ABAP code, please. – Jagger May 09 '19 at 10:46
  • 2
    Adding what you've added where you've added it should work. When you say "the document is broken" could you be more specific? Do you get a content warning but then the file still opens or does the file not open at all? – petelids May 09 '19 at 10:53
  • 2
    Are you sure you zipped it back correctly? Is the zip directory structure `_rels`, `docProps` `word` and `[Content_Types].xml`? I unpacked the .wordx file, changed the element you mentioned from `4` to `5` zipped it back and it works for me. – Jagger May 09 '19 at 11:16
  • Exactly where I was headed @Jagger, I think that's the issue. – petelids May 09 '19 at 11:26
  • Okay, that works for me, too. If the generated docx is already set to start at 4, I can simply change the value to 5 and it works. It does NOT work if I add the corresponding line afterwards. Then the file does not open at all, it says "Invalid file". Currently no ABAP coding is involved, I'm only editing manually in the ZIP. Thank you, I know how to change it programmatically now :-). – Josch May 09 '19 at 11:42
  • Also: If I unzip the file, edit the value and re-zip it, the word document is corrupt. So probably the re-zipping is the problem. Are there any special requirements on the re-zip? Like a specific compression type or something? – Josch May 09 '19 at 11:47
  • 1
    I don't think so, are you sure that you're not rezipping it with some kind of directory over the already mentioned ones? – Jagger May 09 '19 at 11:49
  • Oh, you were absolutely right. Layer 8 all over again! :-D I ziped one folder too high. So that's working now, too. Feel free to answer below, I'll mark it as correct. Thanks for the help! – Josch May 09 '19 at 12:42

1 Answers1

1

As Josch mentioned you are doing everything right. There is nothing more to be added to the document.

I have created an empty document with 4 pages in Word and then unpacked the contents of my .wordx file.

Here is my document.xml file.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<w:document xmlns:wpc="http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas" xmlns:cx="http://schemas.microsoft.com/office/drawing/2014/chartex" xmlns:cx1="http://schemas.microsoft.com/office/drawing/2015/9/8/chartex" 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:w15="http://schemas.microsoft.com/office/word/2012/wordml" xmlns:w16se="http://schemas.microsoft.com/office/word/2015/wordml/symex" 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 w15 w16se wp14">
    <w:body>
        <w:p w:rsidR="00ED7F18" w:rsidRDefault="00ED7F18">
            <w:r>
                <w:br w:type="page"/>
            </w:r>
        </w:p>
        <w:p w:rsidR="00ED7F18" w:rsidRDefault="00ED7F18">
            <w:r>
                <w:lastRenderedPageBreak/>
                <w:br w:type="page"/>
            </w:r>
        </w:p>
        <w:p w:rsidR="00ED7F18" w:rsidRDefault="00ED7F18">
            <w:r>
                <w:lastRenderedPageBreak/>
                <w:br w:type="page"/>
            </w:r>
        </w:p>
        <w:p w:rsidR="0070592A" w:rsidRDefault="00ED7F18"/>
        <w:sectPr w:rsidR="0070592A" w:rsidSect="00ED7F18">
            <w:headerReference w:type="even" r:id="rId6"/>
            <w:headerReference w:type="default" r:id="rId7"/>
            <w:footerReference w:type="even" r:id="rId8"/>
            <w:footerReference w:type="default" r:id="rId9"/>
            <w:headerReference w:type="first" r:id="rId10"/>
            <w:footerReference w:type="first" r:id="rId11"/>
            <w:pgSz w:w="11906" w:h="16838"/>
            <w:pgMar w:top="1417" w:right="1417" w:bottom="1134" w:left="1417" w:header="708" w:footer="708" w:gutter="0"/>
            <w:pgNumType w:start="4"/>
            <w:cols w:space="708"/>
            <w:docGrid w:linePitch="360"/>
        </w:sectPr>
    </w:body>
</w:document>

Changing the following line

<w:pgNumType w:start="4"/>

to

<w:pgNumType w:start="5"/>

and then zipping back all the contents does the thing.

You are probably zipping back the contents together with the folder they are in.

Please make sure that the zip file has exactly the following folders/files.

_rels
docProps
word
[Content_Types].xml
Jagger
  • 10,350
  • 9
  • 51
  • 93