Replies: 7   Views: 260
Can't pass 'pstyle' from one wordfragment to another

Posted by Siegfried  · 03-09-2019 - 11:24

Hello supportteam,

unfortunately my problem was not solved. I've tryed a lot but without success.

I need to create (more than one) wordfragments and place all into a parent wordfragment, which belongs to a document. Each of these sub-wordfragments should be a own paragraph on which I can use paragraph-styles.

Here is a sample-code which will illustrate my problem:

$docx = new CreateDocxFromTemplate(TEMPLATEPATH . 'Test1.docx');

$text1 = new WordFragment($docx);                                       
$text1->addText('Text one');
$text2 = new WordFragment($docx);                                       
$text2->addText('Text two');
$text3 = new WordFragment($docx);                                       
$text3->addText('Text three');

$text4_1 = new WordFragment($docx);
$text4_1->addText('Text 4_1, ');
$text4_2 = new WordFragment($docx);
                                                       'text'  =>   'Text 4_2 ',
                                                       'b'     =>   'on'

$text4_collect[1] = $text4_1;
$text4_collOpt[1] = array(      'pStyle' =>   'H2Interessenvertretung');
$text4_collect[2] = $text4_2;
$text4_collOpt[2] = array(      'pStyle' =>   'H2Selbstbestimmung');

$text4 = new WordFragment($docx);                                       
$text4->addText(array($text4_collect[1]), $text4_collOpt[1]);
$text4->addBreak(array('type' => 'line')); // how to get a hard line-break?
$text4->addText(array($text4_collect[2]), $text4_collOpt[2]);

$singleparts[1] = $text1;
$spOptions[1] = array('pStyle' => 'Titel2');
$singleparts[2] = $text2;
$spOptions[2] = array('pStyle' => 'Titel3');
$singleparts[3] = $text3;
$spOptions[3] = array(  'pStyle'        =>   'H2Selbstbestimmung',
                        'border'        =>   'single',
                        'borderWidth'   =>   '24',
                        'borderColor'   =>   'FF0000');
$singleparts[4] = $text4;

ksort($singleparts, SORT_NUMERIC);

$wf_top = new WordFragment($docx);
foreach($singleparts as $idx => $sp) {
        $wf_top->addText(array($sp), $spOptions[$idx]);

$docx->replaceVariableByWordFragment(array('content' => $wf_top), array('type' => 'block'));


text1 to text3 works fine as paragraphs but text4 should be a collection of wordfragments (each of them should be a paragraph which I can separatly format like a paragraph (borders and so on ...)).
Is there a way to do it?

Btw. is there a way to get a 'hard' line-break? Because addBreak(array('type' => 'line')); always makes a 'soft' line-break.

I am grateful for any help!!!

By the way, I've a premium license