Forum


Replies: 3   Views: 1133
Footnotes number restart in each sections and problem with different headers when merging docx
Topic closed:
Please note this is an old forum thread. Information in this post may be out-to-date and/or erroneous.
Every phpdocx version includes new features and improvements. Previously unsupported features may have been added to newer releases, or past issues may have been corrected.
We encourage you to download the current phpdocx version and check the Documentation available.

Posted by giampo  · 12-03-2021 - 13:33

Is it possible to set up the document so that the footnote numbering restarts each section?

when we merge the docx files even if we set "mergeType = 0", the final document only reports the "firstHeader" and the "defaultHeader" while the "evenHeader" is lost.

How can we solve?

 

this is my test code

$A = new CreateDocx();
$A->addText('FIRST');
$A->createDocx($folder.'/A.docx');


$B = new CreateDocx();
$B->addText('Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam aliquet feugiat ligula in aliquam. Vestibulum ultricies tortor id mattis imperdiet. Mauris bibendum cursus commodo. Quisque luctus feugiat facilisis. Proin fringilla nulla quis nisi maximus faucibus. Suspendisse malesuada lacus vitae orci sollicitudin ullamcorper. Morbi non ligula vel metus imperdiet tristique. Cras malesuada consequat porta. Suspendisse id mi vitae massa accumsan ultricies. Nam volutpat ipsum eros. Sed id lectus volutpat, imperdiet mauris nec, porta eros. Nunc augue orci, semper vitae hendrerit eget, dapibus eget nisi. Nulla ut dui orci.');
$B->addText('Ut sagittis turpis quis nisi facilisis, a vulputate nulla mollis. Ut non ullamcorper dui. Aliquam volutpat vitae eros eu imperdiet. Maecenas semper urna a purus fringilla eleifend. Vestibulum ultrices rutrum molestie. Sed rhoncus neque id ex condimentum lobortis. In hac habitasse platea dictumst. Vestibulum eget tincidunt velit. Maecenas interdum, lacus et facilisis tincidunt, mauris urna ornare nulla, sit amet fringilla dui dui et dolor. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec vel malesuada est. Nullam convallis, mauris sed consequat aliquet, dui nunc vehicula orci, in consequat dolor nisi et dui. Sed leo nisl, ultrices a sem vel, hendrerit luctus massa. Interdum et malesuada fames ac ante ipsum primis in faucibus.');

$footnoteB = new WordFragment($B, 'document');
$footnoteB->addFootnote(
    array(
        'textDocument' => 'uno',
        'textFootnote' => 'Questo è il testo della nota a piè di pagina',
    )
);

$text = array();
$text[] = array('text' => 'Prova nota a piè di pagina ');
$text[] = $footnoteB;
$text[] = array('text' => ' testo continua.');
$B->addText($text);

$B->addText('Aenean quis quam vel libero accumsan hendrerit convallis nec elit. Vivamus eu lacus non ligula maximus efficitur ut sed est. Morbi finibus elit ut tellus consequat, nec efficitur tortor aliquet. Sed pharetra ut nisi sed varius. Quisque lacinia, velit ut pulvinar tempor, lacus nunc congue est, rutrum convallis enim tellus eu felis. Mauris ac erat id tortor porttitor vestibulum nec eu lacus. Aliquam non porta lacus. Suspendisse et sem at purus accumsan pulvinar. Pellentesque nec dolor nec odio volutpat maximus.');
$B->addText('Sed varius mattis ex, at faucibus nisl tempor vitae. Praesent eget consectetur ligula, at congue odio. Etiam feugiat nunc mi, eget malesuada augue scelerisque ultrices. Morbi volutpat erat non ornare venenatis. Maecenas molestie, nulla eget dignissim imperdiet, velit lorem convallis dui, in blandit lacus tellus ut eros. Etiam tempus augue fringilla tellus gravida tristique. Praesent aliquet feugiat tortor finibus rhoncus. Mauris maximus arcu a mauris ultrices, non euismod neque eleifend. Curabitur eu suscipit urna. Pellentesque faucibus interdum massa, ac consectetur purus efficitur sit amet. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aenean ut faucibus arcu. Aliquam varius dignissim risus, vel commodo nunc aliquet quis.');
$B->addText('Suspendisse mi arcu, aliquam a mauris in, blandit cursus ex. Morbi fringilla scelerisque massa. Nunc accumsan est magna, vitae maximus magna egestas vitae. Sed tellus ligula, volutpat in nisl ut, tempus scelerisque nisl. Nulla vitae malesuada quam. Aliquam maximus dolor risus, vel ornare ante mollis laoreet. Duis elementum velit ut purus tincidunt, vehicula sodales risus finibus. Maecenas ac turpis ut metus vestibulum ultrices id in augue. Vestibulum nec elit vitae turpis vehicula commodo. Sed quis sem in felis pharetra interdum. Vivamus iaculis felis ac dictum venenatis. Suspendisse vulputate risus a malesuada porttitor. Donec tincidunt dolor neque, eu sollicitudin eros convallis eu. Maecenas congue lacus a aliquam facilisis.');
$B->addText('Etiam lobortis, velit non sodales convallis, lacus neque imperdiet velit, vitae accumsan lacus neque a lorem. In hac habitasse platea dictumst. Phasellus eleifend mattis mauris pulvinar finibus. In id dignissim elit, id congue odio. Nulla eu imperdiet lorem, quis consectetur neque. Nam dictum orci nunc, quis eleifend sapien varius in. Phasellus convallis gravida eleifend. Vestibulum a neque consectetur, tempus orci sit amet, tempor tortor. Curabitur scelerisque faucibus accumsan. Duis vel justo dapibus nisi blandit accumsan et quis purus. Donec id bibendum elit. Integer vulputate efficitur tortor sed gravida. Nulla efficitur magna a porttitor vulputate.');
$B->addText('Phasellus feugiat orci a efficitur egestas. Curabitur eu tortor et nulla gravida laoreet ut quis felis. Duis ornare justo purus, id consectetur eros aliquet eu. Sed sit amet magna non mi iaculis tincidunt aliquet sed tellus. Pellentesque sollicitudin urna vitae massa interdum feugiat. Morbi arcu ligula, bibendum et lorem vitae, posuere vulputate diam. Ut felis felis, hendrerit sit amet enim eget, bibendum mollis ex. Vivamus fermentum sed turpis sit amet tempus. Donec est lorem, tristique eget cursus eu, mollis nec velit. Donec in dictum ante.');
$B->addText('Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi sollicitudin ut purus at suscipit. Pellentesque sit amet lacus sed ex tempor egestas. Sed a tempus lorem, sollicitudin tincidunt purus. Donec suscipit sem ut nisi porta vulputate. Curabitur vel porta mi, vel posuere magna. Praesent quis congue leo. Nunc rhoncus odio eu ligula elementum, a pharetra sapien maximus. Integer scelerisque, augue ut tempus accumsan, elit tortor hendrerit nibh, eget malesuada tellus velit vel arcu.');
$B->addText('Ut sagittis turpis quis nisi facilisis, a vulputate nulla mollis. Ut non ullamcorper dui. Aliquam volutpat vitae eros eu imperdiet. Maecenas semper urna a purus fringilla eleifend. Vestibulum ultrices rutrum molestie. Sed rhoncus neque id ex condimentum lobortis. In hac habitasse platea dictumst. Vestibulum eget tincidunt velit. Maecenas interdum, lacus et facilisis tincidunt, mauris urna ornare nulla, sit amet fringilla dui dui et dolor. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec vel malesuada est. Nullam convallis, mauris sed consequat aliquet, dui nunc vehicula orci, in consequat dolor nisi et dui. Sed leo nisl, ultrices a sem vel, hendrerit luctus massa. Interdum et malesuada fames ac ante ipsum primis in faucibus.');
$B->addText('Aenean quis quam vel libero accumsan hendrerit convallis nec elit. Vivamus eu lacus non ligula maximus efficitur ut sed est. Morbi finibus elit ut tellus consequat, nec efficitur tortor aliquet. Sed pharetra ut nisi sed varius. Quisque lacinia, velit ut pulvinar tempor, lacus nunc congue est, rutrum convallis enim tellus eu felis. Mauris ac erat id tortor porttitor vestibulum nec eu lacus. Aliquam non porta lacus. Suspendisse et sem at purus accumsan pulvinar. Pellentesque nec dolor nec odio volutpat maximus.');
$B->addText('Sed varius mattis ex, at faucibus nisl tempor vitae. Praesent eget consectetur ligula, at congue odio. Etiam feugiat nunc mi, eget malesuada augue scelerisque ultrices. Morbi volutpat erat non ornare venenatis. Maecenas molestie, nulla eget dignissim imperdiet, velit lorem convallis dui, in blandit lacus tellus ut eros. Etiam tempus augue fringilla tellus gravida tristique. Praesent aliquet feugiat tortor finibus rhoncus. Mauris maximus arcu a mauris ultrices, non euismod neque eleifend. Curabitur eu suscipit urna. Pellentesque faucibus interdum massa, ac consectetur purus efficitur sit amet. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aenean ut faucibus arcu. Aliquam varius dignissim risus, vel commodo nunc aliquet quis.');
$B->addText('Suspendisse mi arcu, aliquam a mauris in, blandit cursus ex. Morbi fringilla scelerisque massa. Nunc accumsan est magna, vitae maximus magna egestas vitae. Sed tellus ligula, volutpat in nisl ut, tempus scelerisque nisl. Nulla vitae malesuada quam. Aliquam maximus dolor risus, vel ornare ante mollis laoreet. Duis elementum velit ut purus tincidunt, vehicula sodales risus finibus. Maecenas ac turpis ut metus vestibulum ultrices id in augue. Vestibulum nec elit vitae turpis vehicula commodo. Sed quis sem in felis pharetra interdum. Vivamus iaculis felis ac dictum venenatis. Suspendisse vulputate risus a malesuada porttitor. Donec tincidunt dolor neque, eu sollicitudin eros convallis eu. Maecenas congue lacus a aliquam facilisis.');

$defaultHeaderB = new WordFragment($B,'defaultHeader');
$defaultHeaderB->addText('DEFAULT 2 HEADER', array(
    'fontSize' => 10,
    'color' => '999999',
    'textAlign' => 'center'
));

$evenHeaderB = new WordFragment($B,'evenHeader');
$evenHeaderB->addText('EVEN 2 HEADER', array(
    'fontSize' => 10,
    'color' => '999999',
    'textAlign' => 'center'
));

$firstHeaderB = new WordFragment($B,'firstHeader');
$firstHeaderB->addText('FIRST 2 HEADER', array(
    'fontSize' => 10,
    'color' => '999999',
    'textAlign' => 'center'
));
$B->addHeader(array(
    'default' => $defaultHeaderB,
    'first' => $firstHeaderB,
    'even' => $evenHeaderB
));
$defaultFooterB = new WordFragment($B, 'defaultFooter');
$defaultFooterB->addPageNumber('numerical', array(
    'textAlign' => 'center',
    'fontSize' => 10,
    'color' => '999999'
));

$evenFooterB = new WordFragment($B, 'evenFooter');
$evenFooterB->addPageNumber('numerical', array(
    'textAlign' => 'center',
    'fontSize' => 10,
    'color' => '999999'
));

$firstFooterB = new WordFragment($B, 'firstFooter');
$firstFooterB->addPageNumber('numerical', array(
    'textAlign' => 'center',
    'fontSize' => 10,
    'color' => '999999'
));

$B->addFooter(array(
    'default' => $defaultFooterB,
    'first' => $firstFooterB,
    'even' => $evenFooterB
));
$B->createDocx($folder.'/B.docx');


$C = new CreateDocx();

$C->addText('Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam aliquet feugiat ligula in aliquam. Vestibulum ultricies tortor id mattis imperdiet. Mauris bibendum cursus commodo. Quisque luctus feugiat facilisis. Proin fringilla nulla quis nisi maximus faucibus. Suspendisse malesuada lacus vitae orci sollicitudin ullamcorper. Morbi non ligula vel metus imperdiet tristique. Cras malesuada consequat porta. Suspendisse id mi vitae massa accumsan ultricies. Nam volutpat ipsum eros. Sed id lectus volutpat, imperdiet mauris nec, porta eros. Nunc augue orci, semper vitae hendrerit eget, dapibus eget nisi. Nulla ut dui orci.');
$C->addText('Ut sagittis turpis quis nisi facilisis, a vulputate nulla mollis. Ut non ullamcorper dui. Aliquam volutpat vitae eros eu imperdiet. Maecenas semper urna a purus fringilla eleifend. Vestibulum ultrices rutrum molestie. Sed rhoncus neque id ex condimentum lobortis. In hac habitasse platea dictumst. Vestibulum eget tincidunt velit. Maecenas interdum, lacus et facilisis tincidunt, mauris urna ornare nulla, sit amet fringilla dui dui et dolor. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec vel malesuada est. Nullam convallis, mauris sed consequat aliquet, dui nunc vehicula orci, in consequat dolor nisi et dui. Sed leo nisl, ultrices a sem vel, hendrerit luctus massa. Interdum et malesuada fames ac ante ipsum primis in faucibus.');
$C->addText('Aenean quis quam vel libero accumsan hendrerit convallis nec elit. Vivamus eu lacus non ligula maximus efficitur ut sed est. Morbi finibus elit ut tellus consequat, nec efficitur tortor aliquet. Sed pharetra ut nisi sed varius. Quisque lacinia, velit ut pulvinar tempor, lacus nunc congue est, rutrum convallis enim tellus eu felis. Mauris ac erat id tortor porttitor vestibulum nec eu lacus. Aliquam non porta lacus. Suspendisse et sem at purus accumsan pulvinar. Pellentesque nec dolor nec odio volutpat maximus.');
$C->addText('Sed varius mattis ex, at faucibus nisl tempor vitae. Praesent eget consectetur ligula, at congue odio. Etiam feugiat nunc mi, eget malesuada augue scelerisque ultrices. Morbi volutpat erat non ornare venenatis. Maecenas molestie, nulla eget dignissim imperdiet, velit lorem convallis dui, in blandit lacus tellus ut eros. Etiam tempus augue fringilla tellus gravida tristique. Praesent aliquet feugiat tortor finibus rhoncus. Mauris maximus arcu a mauris ultrices, non euismod neque eleifend. Curabitur eu suscipit urna. Pellentesque faucibus interdum massa, ac consectetur purus efficitur sit amet. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aenean ut faucibus arcu. Aliquam varius dignissim risus, vel commodo nunc aliquet quis.');
$footnoteC = new WordFragment($C, 'document');
$footnoteC->addFootnote(
    array(
        'textDocument' => 'due',
        'textFootnote' => 'Questo è il testo della nota a piè di pagina seconda',
    )
);

$text = array();
$text[] = array('text' => 'Prova nota seconda sezione a piè di pagina ');
$text[] = $footnoteC;
$text[] = array('text' => ' testo continua.');
$C->addText($text);

$C->addText('Suspendisse mi arcu, aliquam a mauris in, blandit cursus ex. Morbi fringilla scelerisque massa. Nunc accumsan est magna, vitae maximus magna egestas vitae. Sed tellus ligula, volutpat in nisl ut, tempus scelerisque nisl. Nulla vitae malesuada quam. Aliquam maximus dolor risus, vel ornare ante mollis laoreet. Duis elementum velit ut purus tincidunt, vehicula sodales risus finibus. Maecenas ac turpis ut metus vestibulum ultrices id in augue. Vestibulum nec elit vitae turpis vehicula commodo. Sed quis sem in felis pharetra interdum. Vivamus iaculis felis ac dictum venenatis. Suspendisse vulputate risus a malesuada porttitor. Donec tincidunt dolor neque, eu sollicitudin eros convallis eu. Maecenas congue lacus a aliquam facilisis.');
$C->addText('Etiam lobortis, velit non sodales convallis, lacus neque imperdiet velit, vitae accumsan lacus neque a lorem. In hac habitasse platea dictumst. Phasellus eleifend mattis mauris pulvinar finibus. In id dignissim elit, id congue odio. Nulla eu imperdiet lorem, quis consectetur neque. Nam dictum orci nunc, quis eleifend sapien varius in. Phasellus convallis gravida eleifend. Vestibulum a neque consectetur, tempus orci sit amet, tempor tortor. Curabitur scelerisque faucibus accumsan. Duis vel justo dapibus nisi blandit accumsan et quis purus. Donec id bibendum elit. Integer vulputate efficitur tortor sed gravida. Nulla efficitur magna a porttitor vulputate.');
$C->addText('Phasellus feugiat orci a efficitur egestas. Curabitur eu tortor et nulla gravida laoreet ut quis felis. Duis ornare justo purus, id consectetur eros aliquet eu. Sed sit amet magna non mi iaculis tincidunt aliquet sed tellus. Pellentesque sollicitudin urna vitae massa interdum feugiat. Morbi arcu ligula, bibendum et lorem vitae, posuere vulputate diam. Ut felis felis, hendrerit sit amet enim eget, bibendum mollis ex. Vivamus fermentum sed turpis sit amet tempus. Donec est lorem, tristique eget cursus eu, mollis nec velit. Donec in dictum ante.');
$C->addText('Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi sollicitudin ut purus at suscipit. Pellentesque sit amet lacus sed ex tempor egestas. Sed a tempus lorem, sollicitudin tincidunt purus. Donec suscipit sem ut nisi porta vulputate. Curabitur vel porta mi, vel posuere magna. Praesent quis congue leo. Nunc rhoncus odio eu ligula elementum, a pharetra sapien maximus. Integer scelerisque, augue ut tempus accumsan, elit tortor hendrerit nibh, eget malesuada tellus velit vel arcu.');
$C->addText('Ut sagittis turpis quis nisi facilisis, a vulputate nulla mollis. Ut non ullamcorper dui. Aliquam volutpat vitae eros eu imperdiet. Maecenas semper urna a purus fringilla eleifend. Vestibulum ultrices rutrum molestie. Sed rhoncus neque id ex condimentum lobortis. In hac habitasse platea dictumst. Vestibulum eget tincidunt velit. Maecenas interdum, lacus et facilisis tincidunt, mauris urna ornare nulla, sit amet fringilla dui dui et dolor. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec vel malesuada est. Nullam convallis, mauris sed consequat aliquet, dui nunc vehicula orci, in consequat dolor nisi et dui. Sed leo nisl, ultrices a sem vel, hendrerit luctus massa. Interdum et malesuada fames ac ante ipsum primis in faucibus.');
$C->addText('Aenean quis quam vel libero accumsan hendrerit convallis nec elit. Vivamus eu lacus non ligula maximus efficitur ut sed est. Morbi finibus elit ut tellus consequat, nec efficitur tortor aliquet. Sed pharetra ut nisi sed varius. Quisque lacinia, velit ut pulvinar tempor, lacus nunc congue est, rutrum convallis enim tellus eu felis. Mauris ac erat id tortor porttitor vestibulum nec eu lacus. Aliquam non porta lacus. Suspendisse et sem at purus accumsan pulvinar. Pellentesque nec dolor nec odio volutpat maximus.');
$C->addText('Sed varius mattis ex, at faucibus nisl tempor vitae. Praesent eget consectetur ligula, at congue odio. Etiam feugiat nunc mi, eget malesuada augue scelerisque ultrices. Morbi volutpat erat non ornare venenatis. Maecenas molestie, nulla eget dignissim imperdiet, velit lorem convallis dui, in blandit lacus tellus ut eros. Etiam tempus augue fringilla tellus gravida tristique. Praesent aliquet feugiat tortor finibus rhoncus. Mauris maximus arcu a mauris ultrices, non euismod neque eleifend. Curabitur eu suscipit urna. Pellentesque faucibus interdum massa, ac consectetur purus efficitur sit amet. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aenean ut faucibus arcu. Aliquam varius dignissim risus, vel commodo nunc aliquet quis.');
$C->addText('Suspendisse mi arcu, aliquam a mauris in, blandit cursus ex. Morbi fringilla scelerisque massa. Nunc accumsan est magna, vitae maximus magna egestas vitae. Sed tellus ligula, volutpat in nisl ut, tempus scelerisque nisl. Nulla vitae malesuada quam. Aliquam maximus dolor risus, vel ornare ante mollis laoreet. Duis elementum velit ut purus tincidunt, vehicula sodales risus finibus. Maecenas ac turpis ut metus vestibulum ultrices id in augue. Vestibulum nec elit vitae turpis vehicula commodo. Sed quis sem in felis pharetra interdum. Vivamus iaculis felis ac dictum venenatis. Suspendisse vulputate risus a malesuada porttitor. Donec tincidunt dolor neque, eu sollicitudin eros convallis eu. Maecenas congue lacus a aliquam facilisis.');

$defaultHeaderC = new WordFragment($C,'defaultHeader');
$defaultHeaderC->addText('DEFAULT 3 HEADER', array(
    'fontSize' => 10,
    'color' => '999999',
    'textAlign' => 'center'
));

$evenHeaderC = new WordFragment($C,'evenHeader');
$evenHeaderC->addText('EVEN 3 HEADER', array(
    'fontSize' => 10,
    'color' => '999999',
    'textAlign' => 'center'
));

$firstHeaderC = new WordFragment($C,'firstHeader');
$firstHeaderC->addText('FIRST 3 HEADER', array(
    'fontSize' => 10,
    'color' => '999999',
    'textAlign' => 'center'
));
$C->addHeader(array(
    'default' => $defaultHeaderC,
    'first' => $firstHeaderC,
    'even' => $evenHeaderC
));
$defaultFooterC = new WordFragment($C, 'defaultFooter');
$defaultFooterC->addPageNumber('numerical', array(
    'textAlign' => 'center',
    'fontSize' => 10,
    'color' => '999999'
));

$evenFooterC = new WordFragment($C, 'evenFooter');
$evenFooterC->addPageNumber('numerical', array(
    'textAlign' => 'center',
    'fontSize' => 10,
    'color' => '999999'
));

$firstFooterC = new WordFragment($C, 'firstFooter');
$firstFooterC->addPageNumber('numerical', array(
    'textAlign' => 'center',
    'fontSize' => 10,
    'color' => '999999'
));

$C->addFooter(array(
    'default' => $defaultFooterC,
    'first' => $firstFooterC,
    'even' => $evenFooterC
));

$C->createDocx($folder.'/C.docx');

$merge = new MultiMerge();
$merge->mergeDocx(
    $folder.'/A.docx',
    [
        $folder.'/B.docx',
        $folder.'/C.docx'
    ],
    $folder.'/OUTPUT.docx',
    [
        'mergeType' => 0,
        'enforceSectionPageBreak' => true,
        'numbering' => 'continue'
    ]
);