Я хочу спросить, возможно ли работать с шаблоном и дублировать определенную страницу в этом шаблоне без использования WordFragment или addExternalFile (я хочу, чтобы шаблон был только 1 файлом)?
Например, у меня есть 3 страницы, я хочу дублировать (или повторять) страницу 2 4 раза, так что в результате у меня есть документ с 7 страницами, а вторая страница повторяется 4 раза? Возможно ли сделать это без WordFragment или addExternalFile? Потому что я хочу, чтобы было проще редактировать в шаблоне.
Мой Phpdocx является пробной версией.
До сих пор я пробовал использовать wordfragment, используя переменную $ wordfragment $ в шаблоне документа (на второй странице), и сделать это в php:
$wf = new WordFragment($docx, 'document');
for($i = 0: $<4; $i++) {
/*here I put a code to make a text and table in wordfragment (sorry it's too long to write it here, it's about 500 lines)*/
$wf->addBreak(array('type'=>'page')); //it's to go to next page
} //so this loop will make 4 same pages with the content I want in that 500 lines of code.
$docx->replaceVariableByWordFragment(array('wordfragment'=>$wf), array('type'=>'block'));
Использование WordFragment, как описано выше, на самом деле является очень мощным и дает очень хороший результат, но так как он будет использоваться моим пользователем, и мы всегда предполагаем, что пользователь плохо разбирается в коде, поэтому я не могу позволить пользователю редактировать код, если он / она просто хочет отредактировать шаблон, например, если пользователь хочет отредактировать таблицу в шаблоне, в этом моем коде, этот пользователь должен отредактировать его в этих кодах на 500 строк, и это очень не пользователь дружественный, что я хотел сделать это проще, сделать текст и таблицу в слове (чтобы пользователь мог просто отредактировать это там), и в коде мне просто нужно повторить эту страницу. Является ли это возможным?
Да, и другой метод, addExternalFile, на самом деле, довольно хорош, но для его использования мне нужно иметь более 1 шаблона, например, мне нужно 3 документа с именем start.docx, content.docx, end.docx. С addExternalFile я мог бы просто использовать его так:
$wf = new WordFragment($docx, 'document');
$wf->addExternalFile(array('src'=>'start.docx'));
$wf->addBreak(array('type'=>'page'));
for($i=0;$i<4;$i++) {
$content = new CreateDocxFromTemplate('content.docx');
/*here I put a code to replace all text and table variable in template*/
$content->replaceVariableByText($variables, $parameter); //$variables and $parameter already included in my code
$content->replaceTableVariable($table); //$table already included in my code
$content->createDocx('newcontent.docx');
$wf->addExternalFile(array('src'=>'newcontent.docx'));
$wf->addBreak(array('type'=>'page'));
} //this loop will make 4 same page
$wf->addExternalFile(array('src'=>'end.docx');
$docx->replaceVariableByWordFragment(array('wordfragment'=>$wf), array('type'=>'block'));
С addExternalFile я мог написать текст, переменные и нарисовать таблицу в документе, а не в текстовом фрагменте. Это довольно удобно для пользователя, но недостатком является то, что этот метод требует, чтобы по крайней мере 3 различных документа были открыты пользователем, если они хотят редактировать его. Мне нужен только 1 документ, весь текст, переменные и таблицы находятся в документе, и в коде php нет текста или таблицы. Есть ли способ сделать это с phpDocx?
Задача ещё не решена.
Других решений пока нет …