#483. Output escaping for OOXML.

This commit is contained in:
Roman Syroeshko 2016-06-04 20:06:37 +04:00
parent 4954f28012
commit ec3c62b051
81 changed files with 788 additions and 695 deletions

View File

@ -93,11 +93,9 @@ $phpWord = new \PhpOffice\PhpWord\PhpWord();
$section = $phpWord->addSection();
// Adding Text element to the Section having font styled by default...
$section->addText(
htmlspecialchars(
'"Learn from yesterday, live for today, hope for tomorrow. '
. 'The important thing is not to stop questioning." '
. '(Albert Einstein)'
)
'"Learn from yesterday, live for today, hope for tomorrow. '
. 'The important thing is not to stop questioning." '
. '(Albert Einstein)'
);
/*
@ -109,11 +107,9 @@ $section->addText(
// Adding Text element with font customized inline...
$section->addText(
htmlspecialchars(
'"Great achievement is usually born of great sacrifice, '
. 'and is never the result of selfishness." '
. '(Napoleon Hill)'
),
'"Great achievement is usually born of great sacrifice, '
. 'and is never the result of selfishness." '
. '(Napoleon Hill)',
array('name' => 'Tahoma', 'size' => 10)
);
@ -124,11 +120,9 @@ $phpWord->addFontStyle(
array('name' => 'Tahoma', 'size' => 10, 'color' => '1B2232', 'bold' => true)
);
$section->addText(
htmlspecialchars(
'"The greatest accomplishment is not in never falling, '
. 'but in rising again after you fall." '
. '(Vince Lombardi)'
),
'"The greatest accomplishment is not in never falling, '
. 'but in rising again after you fall." '
. '(Vince Lombardi)',
$fontStyleName
);
@ -137,9 +131,7 @@ $fontStyle = new \PhpOffice\PhpWord\Style\Font();
$fontStyle->setBold(true);
$fontStyle->setName('Tahoma');
$fontStyle->setSize(13);
$myTextElement = $section->addText(
htmlspecialchars('"Believe you can and you\'re halfway there." (Theodor Roosevelt)')
);
$myTextElement = $section->addText('"Believe you can and you\'re halfway there." (Theodor Roosevelt)');
$myTextElement->setFontStyle($fontStyle);
// Saving the document as OOXML file...

View File

@ -24,13 +24,9 @@ folder <https://github.com/PHPOffice/PHPWord/tree/master/samples/>`__.
$section = $phpWord->addSection();
// Adding Text element to the Section having font styled by default...
$section->addText(
htmlspecialchars(
'"Learn from yesterday, live for today, hope for tomorrow. '
. 'The important thing is not to stop questioning." '
. '(Albert Einstein)',
ENT_COMPAT,
'UTF-8'
)
'"Learn from yesterday, live for today, hope for tomorrow. '
. 'The important thing is not to stop questioning." '
. '(Albert Einstein)'
);
/*
@ -42,13 +38,9 @@ folder <https://github.com/PHPOffice/PHPWord/tree/master/samples/>`__.
// Adding Text element with font customized inline...
$section->addText(
htmlspecialchars(
'"Great achievement is usually born of great sacrifice, '
. 'and is never the result of selfishness." '
. '(Napoleon Hill)',
ENT_COMPAT,
'UTF-8'
),
'"Great achievement is usually born of great sacrifice, '
. 'and is never the result of selfishness." '
. '(Napoleon Hill)',
array('name' => 'Tahoma', 'size' => 10)
);
@ -59,13 +51,9 @@ folder <https://github.com/PHPOffice/PHPWord/tree/master/samples/>`__.
array('name' => 'Tahoma', 'size' => 10, 'color' => '1B2232', 'bold' => true)
);
$section->addText(
htmlspecialchars(
'"The greatest accomplishment is not in never falling, '
. 'but in rising again after you fall." '
. '(Vince Lombardi)',
ENT_COMPAT,
'UTF-8'
),
'"The greatest accomplishment is not in never falling, '
. 'but in rising again after you fall." '
. '(Vince Lombardi)',
$fontStyleName
);
@ -74,9 +62,7 @@ folder <https://github.com/PHPOffice/PHPWord/tree/master/samples/>`__.
$fontStyle->setBold(true);
$fontStyle->setName('Tahoma');
$fontStyle->setSize(13);
$myTextElement = $section->addText(
htmlspecialchars('"Believe you can and you\'re halfway there." (Theodor Roosevelt)', ENT_COMPAT, 'UTF-8')
);
$myTextElement = $section->addText('"Believe you can and you\'re halfway there." (Theodor Roosevelt)');
$myTextElement->setFontStyle($fontStyle);
// Saving the document as OOXML file...
@ -130,8 +116,22 @@ included with PHPWord.
\PhpOffice\PhpWord\Settings::setZipClass(\PhpOffice\PhpWord\Settings::PCLZIP);
Output escaping
~~~~~~~~~~~~~~~
Writing documents of some formats, especially XML-based, requires correct output escaping.
Without it your document may become broken when you put special characters like ampersand, quotes, and others in it.
Escaping can be performed in two ways: outside of the library by a software developer and inside of the library by built-in mechanism.
By default, the built-in mechanism is disabled for backward compatibility with versions prior to v0.13.0.
To turn it on set ``outputEscapingEnabled`` option to ``true`` in your PHPWord configuration file or use the following instruction at runtime:
.. code-block:: php
\PhpOffice\PhpWord\Settings::setOutputEscapingEnabled(true);
Default font
------------
~~~~~~~~~~~~
By default, every text appears in Arial 10 point. You can alter the
default font by using the following two functions:

View File

@ -3,11 +3,12 @@
[General]
compatibility = true
zipClass = ZipArchive
pdfRendererName = DomPDF
pdfRendererPath =
; tempDir = "C:\PhpWordTemp"
compatibility = true
zipClass = ZipArchive
pdfRendererName = DomPDF
pdfRendererPath =
; tempDir = "C:\PhpWordTemp"
outputEscapingEnabled = false
[Font]

View File

@ -4,24 +4,29 @@ include_once 'Sample_Header.php';
// New Word Document
echo date('H:i:s') , ' Create new PhpWord object' , EOL;
$phpWord = new \PhpOffice\PhpWord\PhpWord();
$phpWord->addFontStyle('rStyle', array('bold' => true, 'italic' => true, 'size' => 16, 'allCaps' => true, 'doubleStrikethrough' => true));
$phpWord->addParagraphStyle('pStyle', array('alignment' => \PhpOffice\PhpWord\SimpleType\Jc::CENTER, 'spaceAfter' => 100));
$fontStyleName = 'rStyle';
$phpWord->addFontStyle($fontStyleName, array('bold' => true, 'italic' => true, 'size' => 16, 'allCaps' => true, 'doubleStrikethrough' => true));
$paragraphStyleName = 'pStyle';
$phpWord->addParagraphStyle($paragraphStyleName, array('alignment' => \PhpOffice\PhpWord\SimpleType\Jc::CENTER, 'spaceAfter' => 100));
$phpWord->addTitleStyle(1, array('bold' => true), array('spaceAfter' => 240));
// New portrait section
$section = $phpWord->addSection();
// Simple text
$section->addTitle(htmlspecialchars('Welcome to PhpWord', ENT_COMPAT, 'UTF-8'), 1);
$section->addText(htmlspecialchars('Hello World!', ENT_COMPAT, 'UTF-8'));
$section->addTitle('Welcome to PhpWord', 1);
$section->addText('Hello World!');
// Two text break
$section->addTextBreak(2);
// Defined style
$section->addText(htmlspecialchars('I am styled by a font style definition.', ENT_COMPAT, 'UTF-8'), 'rStyle');
$section->addText(htmlspecialchars('I am styled by a paragraph style definition.', ENT_COMPAT, 'UTF-8'), null, 'pStyle');
$section->addText(htmlspecialchars('I am styled by both font and paragraph style.', ENT_COMPAT, 'UTF-8'), 'rStyle', 'pStyle');
// Define styles
$section->addText('I am styled by a font style definition.', $fontStyleName);
$section->addText('I am styled by a paragraph style definition.', null, $paragraphStyleName);
$section->addText('I am styled by both font and paragraph style.', $fontStyleName, $paragraphStyleName);
$section->addTextBreak();
@ -30,39 +35,39 @@ $fontStyle['name'] = 'Times New Roman';
$fontStyle['size'] = 20;
$textrun = $section->addTextRun();
$textrun->addText(htmlspecialchars('I am inline styled ', ENT_COMPAT, 'UTF-8'), $fontStyle);
$textrun->addText(htmlspecialchars('with ', ENT_COMPAT, 'UTF-8'));
$textrun->addText(htmlspecialchars('color', ENT_COMPAT, 'UTF-8'), array('color' => '996699'));
$textrun->addText(htmlspecialchars(', ', ENT_COMPAT, 'UTF-8'));
$textrun->addText(htmlspecialchars('bold', ENT_COMPAT, 'UTF-8'), array('bold' => true));
$textrun->addText(htmlspecialchars(', ', ENT_COMPAT, 'UTF-8'));
$textrun->addText(htmlspecialchars('italic', ENT_COMPAT, 'UTF-8'), array('italic' => true));
$textrun->addText(htmlspecialchars(', ', ENT_COMPAT, 'UTF-8'));
$textrun->addText(htmlspecialchars('underline', ENT_COMPAT, 'UTF-8'), array('underline' => 'dash'));
$textrun->addText(htmlspecialchars(', ', ENT_COMPAT, 'UTF-8'));
$textrun->addText(htmlspecialchars('strikethrough', ENT_COMPAT, 'UTF-8'), array('strikethrough' => true));
$textrun->addText(htmlspecialchars(', ', ENT_COMPAT, 'UTF-8'));
$textrun->addText(htmlspecialchars('doubleStrikethrough', ENT_COMPAT, 'UTF-8'), array('doubleStrikethrough' => true));
$textrun->addText(htmlspecialchars(', ', ENT_COMPAT, 'UTF-8'));
$textrun->addText(htmlspecialchars('superScript', ENT_COMPAT, 'UTF-8'), array('superScript' => true));
$textrun->addText(htmlspecialchars(', ', ENT_COMPAT, 'UTF-8'));
$textrun->addText(htmlspecialchars('subScript', ENT_COMPAT, 'UTF-8'), array('subScript' => true));
$textrun->addText(htmlspecialchars(', ', ENT_COMPAT, 'UTF-8'));
$textrun->addText(htmlspecialchars('smallCaps', ENT_COMPAT, 'UTF-8'), array('smallCaps' => true));
$textrun->addText(htmlspecialchars(', ', ENT_COMPAT, 'UTF-8'));
$textrun->addText(htmlspecialchars('allCaps', ENT_COMPAT, 'UTF-8'), array('allCaps' => true));
$textrun->addText(htmlspecialchars(', ', ENT_COMPAT, 'UTF-8'));
$textrun->addText(htmlspecialchars('fgColor', ENT_COMPAT, 'UTF-8'), array('fgColor' => 'yellow'));
$textrun->addText(htmlspecialchars(', ', ENT_COMPAT, 'UTF-8'));
$textrun->addText(htmlspecialchars('scale', ENT_COMPAT, 'UTF-8'), array('scale' => 200));
$textrun->addText(htmlspecialchars(', ', ENT_COMPAT, 'UTF-8'));
$textrun->addText(htmlspecialchars('spacing', ENT_COMPAT, 'UTF-8'), array('spacing' => 120));
$textrun->addText(htmlspecialchars(', ', ENT_COMPAT, 'UTF-8'));
$textrun->addText(htmlspecialchars('kerning', ENT_COMPAT, 'UTF-8'), array('kerning' => 10));
$textrun->addText(htmlspecialchars('. ', ENT_COMPAT, 'UTF-8'));
$textrun->addText('I am inline styled ', $fontStyle);
$textrun->addText('with ');
$textrun->addText('color', array('color' => '996699'));
$textrun->addText(', ');
$textrun->addText('bold', array('bold' => true));
$textrun->addText(', ');
$textrun->addText('italic', array('italic' => true));
$textrun->addText(', ');
$textrun->addText('underline', array('underline' => 'dash'));
$textrun->addText(', ');
$textrun->addText('strikethrough', array('strikethrough' => true));
$textrun->addText(', ');
$textrun->addText('doubleStrikethrough', array('doubleStrikethrough' => true));
$textrun->addText(', ');
$textrun->addText('superScript', array('superScript' => true));
$textrun->addText(', ');
$textrun->addText('subScript', array('subScript' => true));
$textrun->addText(', ');
$textrun->addText('smallCaps', array('smallCaps' => true));
$textrun->addText(', ');
$textrun->addText('allCaps', array('allCaps' => true));
$textrun->addText(', ');
$textrun->addText('fgColor', array('fgColor' => 'yellow'));
$textrun->addText(', ');
$textrun->addText('scale', array('scale' => 200));
$textrun->addText(', ');
$textrun->addText('spacing', array('spacing' => 120));
$textrun->addText(', ');
$textrun->addText('kerning', array('kerning' => 10));
$textrun->addText('. ');
// Link
$section->addLink('https://github.com/PHPOffice/PHPWord', htmlspecialchars('PHPWord on GitHub', ENT_COMPAT, 'UTF-8'));
$section->addLink('https://github.com/PHPOffice/PHPWord', 'PHPWord on GitHub');
$section->addTextBreak();
// Image

View File

@ -5,9 +5,10 @@ include_once 'Sample_Header.php';
echo date('H:i:s'), ' Create new PhpWord object', EOL;
$phpWord = new \PhpOffice\PhpWord\PhpWord();
// Ads styles
// Define styles
$multipleTabsStyleName = 'multipleTab';
$phpWord->addParagraphStyle(
'multipleTab',
$multipleTabsStyleName,
array(
'tabs' => array(
new \PhpOffice\PhpWord\Style\Tab('left', 1550),
@ -16,22 +17,20 @@ $phpWord->addParagraphStyle(
)
)
);
$phpWord->addParagraphStyle(
'rightTab',
array('tabs' => array(new \PhpOffice\PhpWord\Style\Tab('right', 9090)))
);
$phpWord->addParagraphStyle(
'centerTab',
array('tabs' => array(new \PhpOffice\PhpWord\Style\Tab('center', 4680)))
);
$rightTabStyleName = 'rightTab';
$phpWord->addParagraphStyle($rightTabStyleName, array('tabs' => array(new \PhpOffice\PhpWord\Style\Tab('right', 9090))));
$leftTabStyleName = 'centerTab';
$phpWord->addParagraphStyle($leftTabStyleName, array('tabs' => array(new \PhpOffice\PhpWord\Style\Tab('center', 4680))));
// New portrait section
$section = $phpWord->addSection();
// Add listitem elements
$section->addText(htmlspecialchars("Multiple Tabs:\tOne\tTwo\tThree", ENT_COMPAT, 'UTF-8'), null, 'multipleTab');
$section->addText(htmlspecialchars("Left Aligned\tRight Aligned", ENT_COMPAT, 'UTF-8'), null, 'rightTab');
$section->addText(htmlspecialchars("\tCenter Aligned", ENT_COMPAT, 'UTF-8'), null, 'centerTab');
$section->addText("Multiple Tabs:\tOne\tTwo\tThree", null, $multipleTabsStyleName);
$section->addText("Left Aligned\tRight Aligned", null, $rightTabStyleName);
$section->addText("\tCenter Aligned", null, $leftTabStyleName);
// Save file
echo write($phpWord, basename(__FILE__, '.php'), $writers);

View File

@ -7,17 +7,11 @@ $phpWord = new \PhpOffice\PhpWord\PhpWord();
// New portrait section
$section = $phpWord->addSection(array('borderColor' => '00FF00', 'borderSize' => 12));
$section->addText(htmlspecialchars('I am placed on a default section.', ENT_COMPAT, 'UTF-8'));
$section->addText('I am placed on a default section.');
// New landscape section
$section = $phpWord->addSection(array('orientation' => 'landscape'));
$section->addText(
htmlspecialchars(
'I am placed on a landscape section. Every page starting from this section will be landscape style.',
ENT_COMPAT,
'UTF-8'
)
);
$section->addText('I am placed on a landscape section. Every page starting from this section will be landscape style.');
$section->addPageBreak();
$section->addPageBreak();
@ -25,7 +19,7 @@ $section->addPageBreak();
$section = $phpWord->addSection(
array('paperSize' => 'Folio', 'marginLeft' => 600, 'marginRight' => 600, 'marginTop' => 600, 'marginBottom' => 600)
);
$section->addText(htmlspecialchars('This section uses other margins with folio papersize.', ENT_COMPAT, 'UTF-8'));
$section->addText('This section uses other margins with folio papersize.');
// New portrait section with Header & Footer
$section = $phpWord->addSection(
@ -38,9 +32,9 @@ $section = $phpWord->addSection(
'footerHeight' => 50,
)
);
$section->addText(htmlspecialchars('This section and we play with header/footer height.', ENT_COMPAT, 'UTF-8'));
$section->addHeader()->addText(htmlspecialchars('Header', ENT_COMPAT, 'UTF-8'));
$section->addFooter()->addText(htmlspecialchars('Footer', ENT_COMPAT, 'UTF-8'));
$section->addText('This section and we play with header/footer height.');
$section->addHeader()->addText('Header');
$section->addFooter()->addText('Footer');
// Save file
echo write($phpWord, basename(__FILE__, '.php'), $writers);

View File

@ -5,39 +5,39 @@ include_once 'Sample_Header.php';
echo date('H:i:s'), ' Create new PhpWord object', EOL;
$phpWord = new \PhpOffice\PhpWord\PhpWord();
// Ads styles
$phpWord->addParagraphStyle('pStyle', array('spacing' => 100));
$phpWord->addFontStyle('BoldText', array('bold' => true));
$phpWord->addFontStyle('ColoredText', array('color' => 'FF8080', 'bgColor' => 'FFFFCC'));
$phpWord->addLinkStyle(
'NLink',
array('color' => '0000FF', 'underline' => \PhpOffice\PhpWord\Style\Font::UNDERLINE_SINGLE)
);
// Define styles
$paragraphStyleName = 'pStyle';
$phpWord->addParagraphStyle($paragraphStyleName, array('spacing' => 100));
$boldFontStyleName = 'BoldText';
$phpWord->addFontStyle($boldFontStyleName, array('bold' => true));
$coloredFontStyleName = 'ColoredText';
$phpWord->addFontStyle($coloredFontStyleName, array('color' => 'FF8080', 'bgColor' => 'FFFFCC'));
$linkFontStyleName = 'NLink';
$phpWord->addLinkStyle($linkFontStyleName, array('color' => '0000FF', 'underline' => \PhpOffice\PhpWord\Style\Font::UNDERLINE_SINGLE));
// New portrait section
$section = $phpWord->addSection();
// Add text run
$textrun = $section->addTextRun('pStyle');
$textrun->addText(htmlspecialchars('Each textrun can contain native text, link elements or an image.', ENT_COMPAT, 'UTF-8'));
$textrun->addText(htmlspecialchars(' No break is placed after adding an element.', ENT_COMPAT, 'UTF-8'), 'BoldText');
$textrun->addText(htmlspecialchars(' Both ', ENT_COMPAT, 'UTF-8'));
$textrun->addText(htmlspecialchars('superscript', ENT_COMPAT, 'UTF-8'), array('superScript' => true));
$textrun->addText(htmlspecialchars(' and ', ENT_COMPAT, 'UTF-8'));
$textrun->addText(htmlspecialchars('subscript', ENT_COMPAT, 'UTF-8'), array('subScript' => true));
$textrun->addText(htmlspecialchars(' are also available.', ENT_COMPAT, 'UTF-8'));
$textrun->addText(
htmlspecialchars(' All elements are placed inside a paragraph with the optionally given p-Style.', ENT_COMPAT, 'UTF-8'),
'ColoredText'
);
$textrun->addText(htmlspecialchars(' Sample Link: ', ENT_COMPAT, 'UTF-8'));
$textrun->addLink('https://github.com/PHPOffice/PHPWord', htmlspecialchars('PHPWord on GitHub', ENT_COMPAT, 'UTF-8'), 'NLink');
$textrun->addText(htmlspecialchars(' Sample Image: ', ENT_COMPAT, 'UTF-8'));
$textrun = $section->addTextRun($paragraphStyleName);
$textrun->addText('Each textrun can contain native text, link elements or an image.');
$textrun->addText(' No break is placed after adding an element.', $boldFontStyleName);
$textrun->addText(' Both ');
$textrun->addText('superscript', array('superScript' => true));
$textrun->addText(' and ');
$textrun->addText('subscript', array('subScript' => true));
$textrun->addText(' are also available.');
$textrun->addText(' All elements are placed inside a paragraph with the optionally given paragraph style.', $coloredFontStyleName);
$textrun->addText(' Sample Link: ');
$textrun->addLink('https://github.com/PHPOffice/PHPWord', 'PHPWord on GitHub', $linkFontStyleName);
$textrun->addText(' Sample Image: ');
$textrun->addImage('resources/_earth.jpg', array('width' => 18, 'height' => 18));
$textrun->addText(htmlspecialchars(' Sample Object: ', ENT_COMPAT, 'UTF-8'));
$textrun->addText(' Sample Object: ');
$textrun->addObject('resources/_sheet.xls');
$textrun->addText(htmlspecialchars(' Here is some more text. ', ENT_COMPAT, 'UTF-8'));
$textrun->addText(' Here is some more text. ');
// Save file
echo write($phpWord, basename(__FILE__, '.php'), $writers);

View File

@ -11,7 +11,7 @@ $filler = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. '
// Normal
$section = $phpWord->addSection();
$section->addText(htmlspecialchars("Normal paragraph. {$filler}", ENT_COMPAT, 'UTF-8'));
$section->addText("Normal paragraph. {$filler}");
// Two columns
$section = $phpWord->addSection(
@ -21,11 +21,11 @@ $section = $phpWord->addSection(
'breakType' => 'continuous',
)
);
$section->addText(htmlspecialchars("Two columns, one inch (1440 twips) spacing. {$filler}", ENT_COMPAT, 'UTF-8'));
$section->addText("Two columns, one inch (1440 twips) spacing. {$filler}");
// Normal
$section = $phpWord->addSection(array('breakType' => 'continuous'));
$section->addText(htmlspecialchars("Normal paragraph again. {$filler}", ENT_COMPAT, 'UTF-8'));
$section->addText("Normal paragraph again. {$filler}");
// Three columns
$section = $phpWord->addSection(
@ -35,11 +35,11 @@ $section = $phpWord->addSection(
'breakType' => 'continuous',
)
);
$section->addText(htmlspecialchars("Three columns, half inch (720 twips) spacing. {$filler}", ENT_COMPAT, 'UTF-8'));
$section->addText("Three columns, half inch (720 twips) spacing. {$filler}");
// Normal
$section = $phpWord->addSection(array('breakType' => 'continuous'));
$section->addText(htmlspecialchars('Normal paragraph again.', ENT_COMPAT, 'UTF-8'));
$section->addText("Normal paragraph again. {$filler}");
// Save file
echo write($phpWord, basename(__FILE__, '.php'), $writers);

View File

@ -6,46 +6,46 @@ echo date('H:i:s'), ' Create new PhpWord object', EOL;
$phpWord = new \PhpOffice\PhpWord\PhpWord();
\PhpOffice\PhpWord\Settings::setCompatibility(false);
// Define styles
$paragraphStyleName = 'pStyle';
$phpWord->addParagraphStyle($paragraphStyleName, array('spacing' => 100));
$boldFontStyleName = 'BoldText';
$phpWord->addFontStyle($boldFontStyleName, array('bold' => true));
$coloredFontStyleName = 'ColoredText';
$phpWord->addFontStyle($coloredFontStyleName, array('color' => 'FF8080', 'bgColor' => 'FFFFCC'));
$linkFontStyleName = 'NLink';
$phpWord->addLinkStyle($linkFontStyleName, array('color' => '0000FF', 'underline' => \PhpOffice\PhpWord\Style\Font::UNDERLINE_SINGLE));
// New portrait section
$section = $phpWord->addSection();
// Add style definitions
$phpWord->addParagraphStyle('pStyle', array('spacing' => 100));
$phpWord->addFontStyle('BoldText', array('bold' => true));
$phpWord->addFontStyle('ColoredText', array('color' => 'FF8080'));
$phpWord->addLinkStyle(
'NLink',
array('color' => '0000FF', 'underline' => \PhpOffice\PhpWord\Style\Font::UNDERLINE_SINGLE)
);
// Add text elements
$textrun = $section->addTextRun('pStyle');
$textrun->addText(htmlspecialchars('This is some lead text in a paragraph with a following footnote. ', ENT_COMPAT, 'UTF-8'), 'pStyle');
$textrun = $section->addTextRun($paragraphStyleName);
$textrun->addText('This is some lead text in a paragraph with a following footnote. ', $paragraphStyleName);
$footnote = $textrun->addFootnote();
$footnote->addText(htmlspecialchars('Just like a textrun, a footnote can contain native texts. ', ENT_COMPAT, 'UTF-8'));
$footnote->addText(htmlspecialchars('No break is placed after adding an element. ', ENT_COMPAT, 'UTF-8'), 'BoldText');
$footnote->addText(htmlspecialchars('All elements are placed inside a paragraph. ', ENT_COMPAT, 'UTF-8'), 'ColoredText');
$footnote->addText('Just like a textrun, a footnote can contain native texts. ');
$footnote->addText('No break is placed after adding an element. ', $boldFontStyleName);
$footnote->addText('All elements are placed inside a paragraph. ', $coloredFontStyleName);
$footnote->addTextBreak();
$footnote->addText(htmlspecialchars('But you can insert a manual text break like above, ', ENT_COMPAT, 'UTF-8'));
$footnote->addText(htmlspecialchars('links like ', ENT_COMPAT, 'UTF-8'));
$footnote->addLink('https://github.com/PHPOffice/PHPWord', htmlspecialchars('PHPWord on GitHub', ENT_COMPAT, 'UTF-8'), 'NLink');
$footnote->addText(htmlspecialchars(', image like ', ENT_COMPAT, 'UTF-8'));
$footnote->addText('But you can insert a manual text break like above, ');
$footnote->addText('links like ');
$footnote->addLink('https://github.com/PHPOffice/PHPWord', 'PHPWord on GitHub', $linkFontStyleName);
$footnote->addText(', image like ');
$footnote->addImage('resources/_earth.jpg', array('width' => 18, 'height' => 18));
$footnote->addText(htmlspecialchars(', or object like ', ENT_COMPAT, 'UTF-8'));
$footnote->addText(', or object like ');
$footnote->addObject('resources/_sheet.xls');
$footnote->addText(htmlspecialchars('But you can only put footnote in section, not in header or footer.', ENT_COMPAT, 'UTF-8'));
$footnote->addText('But you can only put footnote in section, not in header or footer.');
$section->addText(
htmlspecialchars(
'You can also create the footnote directly from the section making it wrap in a paragraph '
. 'like the footnote below this paragraph. But is is best used from within a textrun.',
ENT_COMPAT,
'UTF-8'
)
'You can also create the footnote directly from the section making it wrap in a paragraph '
. 'like the footnote below this paragraph. But is is best used from within a textrun.'
);
$footnote = $section->addFootnote();
$footnote->addText(htmlspecialchars('The reference for this is wrapped in its own line', ENT_COMPAT, 'UTF-8'));
$footnote->addText('The reference for this is wrapped in its own line');
// Save file
echo write($phpWord, basename(__FILE__, '.php'), $writers);

View File

@ -6,52 +6,52 @@ echo date('H:i:s'), ' Creating new TemplateProcessor instance...', EOL;
$templateProcessor = new \PhpOffice\PhpWord\TemplateProcessor('resources/Sample_07_TemplateCloneRow.docx');
// Variables on different parts of document
$templateProcessor->setValue('weekday', htmlspecialchars(date('l'), ENT_COMPAT, 'UTF-8')); // On section/content
$templateProcessor->setValue('time', htmlspecialchars(date('H:i'), ENT_COMPAT, 'UTF-8')); // On footer
$templateProcessor->setValue('serverName', htmlspecialchars(realpath(__DIR__), ENT_COMPAT, 'UTF-8')); // On header
$templateProcessor->setValue('weekday', date('l')); // On section/content
$templateProcessor->setValue('time', date('H:i')); // On footer
$templateProcessor->setValue('serverName', realpath(__DIR__)); // On header
// Simple table
$templateProcessor->cloneRow('rowValue', 10);
$templateProcessor->setValue('rowValue#1', htmlspecialchars('Sun', ENT_COMPAT, 'UTF-8'));
$templateProcessor->setValue('rowValue#2', htmlspecialchars('Mercury', ENT_COMPAT, 'UTF-8'));
$templateProcessor->setValue('rowValue#3', htmlspecialchars('Venus', ENT_COMPAT, 'UTF-8'));
$templateProcessor->setValue('rowValue#4', htmlspecialchars('Earth', ENT_COMPAT, 'UTF-8'));
$templateProcessor->setValue('rowValue#5', htmlspecialchars('Mars', ENT_COMPAT, 'UTF-8'));
$templateProcessor->setValue('rowValue#6', htmlspecialchars('Jupiter', ENT_COMPAT, 'UTF-8'));
$templateProcessor->setValue('rowValue#7', htmlspecialchars('Saturn', ENT_COMPAT, 'UTF-8'));
$templateProcessor->setValue('rowValue#8', htmlspecialchars('Uranus', ENT_COMPAT, 'UTF-8'));
$templateProcessor->setValue('rowValue#9', htmlspecialchars('Neptun', ENT_COMPAT, 'UTF-8'));
$templateProcessor->setValue('rowValue#10', htmlspecialchars('Pluto', ENT_COMPAT, 'UTF-8'));
$templateProcessor->setValue('rowValue#1', 'Sun');
$templateProcessor->setValue('rowValue#2', 'Mercury');
$templateProcessor->setValue('rowValue#3', 'Venus');
$templateProcessor->setValue('rowValue#4', 'Earth');
$templateProcessor->setValue('rowValue#5', 'Mars');
$templateProcessor->setValue('rowValue#6', 'Jupiter');
$templateProcessor->setValue('rowValue#7', 'Saturn');
$templateProcessor->setValue('rowValue#8', 'Uranus');
$templateProcessor->setValue('rowValue#9', 'Neptun');
$templateProcessor->setValue('rowValue#10', 'Pluto');
$templateProcessor->setValue('rowNumber#1', htmlspecialchars('1', ENT_COMPAT, 'UTF-8'));
$templateProcessor->setValue('rowNumber#2', htmlspecialchars('2', ENT_COMPAT, 'UTF-8'));
$templateProcessor->setValue('rowNumber#3', htmlspecialchars('3', ENT_COMPAT, 'UTF-8'));
$templateProcessor->setValue('rowNumber#4', htmlspecialchars('4', ENT_COMPAT, 'UTF-8'));
$templateProcessor->setValue('rowNumber#5', htmlspecialchars('5', ENT_COMPAT, 'UTF-8'));
$templateProcessor->setValue('rowNumber#6', htmlspecialchars('6', ENT_COMPAT, 'UTF-8'));
$templateProcessor->setValue('rowNumber#7', htmlspecialchars('7', ENT_COMPAT, 'UTF-8'));
$templateProcessor->setValue('rowNumber#8', htmlspecialchars('8', ENT_COMPAT, 'UTF-8'));
$templateProcessor->setValue('rowNumber#9', htmlspecialchars('9', ENT_COMPAT, 'UTF-8'));
$templateProcessor->setValue('rowNumber#10', htmlspecialchars('10', ENT_COMPAT, 'UTF-8'));
$templateProcessor->setValue('rowNumber#1', '1');
$templateProcessor->setValue('rowNumber#2', '2');
$templateProcessor->setValue('rowNumber#3', '3');
$templateProcessor->setValue('rowNumber#4', '4');
$templateProcessor->setValue('rowNumber#5', '5');
$templateProcessor->setValue('rowNumber#6', '6');
$templateProcessor->setValue('rowNumber#7', '7');
$templateProcessor->setValue('rowNumber#8', '8');
$templateProcessor->setValue('rowNumber#9', '9');
$templateProcessor->setValue('rowNumber#10', '10');
// Table with a spanned cell
$templateProcessor->cloneRow('userId', 3);
$templateProcessor->setValue('userId#1', htmlspecialchars('1', ENT_COMPAT, 'UTF-8'));
$templateProcessor->setValue('userFirstName#1', htmlspecialchars('James', ENT_COMPAT, 'UTF-8'));
$templateProcessor->setValue('userName#1', htmlspecialchars('Taylor', ENT_COMPAT, 'UTF-8'));
$templateProcessor->setValue('userPhone#1', htmlspecialchars('+1 428 889 773', ENT_COMPAT, 'UTF-8'));
$templateProcessor->setValue('userId#1', '1');
$templateProcessor->setValue('userFirstName#1', 'James');
$templateProcessor->setValue('userName#1', 'Taylor');
$templateProcessor->setValue('userPhone#1', '+1 428 889 773');
$templateProcessor->setValue('userId#2', htmlspecialchars('2', ENT_COMPAT, 'UTF-8'));
$templateProcessor->setValue('userFirstName#2', htmlspecialchars('Robert', ENT_COMPAT, 'UTF-8'));
$templateProcessor->setValue('userName#2', htmlspecialchars('Bell', ENT_COMPAT, 'UTF-8'));
$templateProcessor->setValue('userPhone#2', htmlspecialchars('+1 428 889 774', ENT_COMPAT, 'UTF-8'));
$templateProcessor->setValue('userId#2', '2');
$templateProcessor->setValue('userFirstName#2', 'Robert');
$templateProcessor->setValue('userName#2', 'Bell');
$templateProcessor->setValue('userPhone#2', '+1 428 889 774');
$templateProcessor->setValue('userId#3', htmlspecialchars('3', ENT_COMPAT, 'UTF-8'));
$templateProcessor->setValue('userFirstName#3', htmlspecialchars('Michael', ENT_COMPAT, 'UTF-8'));
$templateProcessor->setValue('userName#3', htmlspecialchars('Ray', ENT_COMPAT, 'UTF-8'));
$templateProcessor->setValue('userPhone#3', htmlspecialchars('+1 428 889 775', ENT_COMPAT, 'UTF-8'));
$templateProcessor->setValue('userId#3', '3');
$templateProcessor->setValue('userFirstName#3', 'Michael');
$templateProcessor->setValue('userName#3', 'Ray');
$templateProcessor->setValue('userPhone#3', '+1 428 889 775');
echo date('H:i:s'), ' Saving the result document...', EOL;
$templateProcessor->saveAs('results/Sample_07_TemplateCloneRow.docx');

View File

@ -12,72 +12,52 @@ $phpWord->setDefaultParagraphStyle(
)
);
// Sample
// New section
$section = $phpWord->addSection();
$section->addText(
htmlspecialchars(
'Below are the samples on how to control your paragraph '
. 'pagination. See "Line and Page Break" tab on paragraph properties '
. 'window to see the attribute set by these controls.',
ENT_COMPAT,
'UTF-8'
),
'Below are the samples on how to control your paragraph '
. 'pagination. See "Line and Page Break" tab on paragraph properties '
. 'window to see the attribute set by these controls.',
array('bold' => true),
array('space' => array('before' => 360, 'after' => 480))
);
$section->addText(
htmlspecialchars(
'Paragraph with widowControl = false (default: true). '
. 'A "widow" is the last line of a paragraph printed by itself at the top '
. 'of a page. An "orphan" is the first line of a paragraph printed by '
. 'itself at the bottom of a page. Set this option to "false" if you want '
. 'to disable this automatic control.',
ENT_COMPAT,
'UTF-8'
),
'Paragraph with widowControl = false (default: true). '
. 'A "widow" is the last line of a paragraph printed by itself at the top '
. 'of a page. An "orphan" is the first line of a paragraph printed by '
. 'itself at the bottom of a page. Set this option to "false" if you want '
. 'to disable this automatic control.',
null,
array('widowControl' => false, 'indentation' => array('left' => 240, 'right' => 120))
);
$section->addText(
htmlspecialchars(
'Paragraph with keepNext = true (default: false). '
. '"Keep with next" is used to prevent Word from inserting automatic page '
. 'breaks between paragraphs. Set this option to "true" if you do not want '
. 'your paragraph to be separated with the next paragraph.',
ENT_COMPAT,
'UTF-8'
),
'Paragraph with keepNext = true (default: false). '
. '"Keep with next" is used to prevent Word from inserting automatic page '
. 'breaks between paragraphs. Set this option to "true" if you do not want '
. 'your paragraph to be separated with the next paragraph.',
null,
array('keepNext' => true, 'indentation' => array('firstLine' => 240))
);
$section->addText(
htmlspecialchars(
'Paragraph with keepLines = true (default: false). '
. '"Keep lines together" will prevent Word from inserting an automatic page '
. 'break within a paragraph. Set this option to "true" if you do not want '
. 'all lines of your paragraph to be in the same page.',
ENT_COMPAT,
'UTF-8'
),
'Paragraph with keepLines = true (default: false). '
. '"Keep lines together" will prevent Word from inserting an automatic page '
. 'break within a paragraph. Set this option to "true" if you do not want '
. 'all lines of your paragraph to be in the same page.',
null,
array('keepLines' => true, 'indentation' => array('left' => 240, 'hanging' => 240))
);
$section->addText(htmlspecialchars('Keep scrolling. More below.', ENT_COMPAT, 'UTF-8'));
$section->addText('Keep scrolling. More below.');
$section->addText(
htmlspecialchars(
'Paragraph with pageBreakBefore = true (default: false). '
. 'Different with all other control above, "page break before" separates '
. 'your paragraph into the next page. This option is most useful for '
. 'heading styles.',
ENT_COMPAT,
'UTF-8'
),
'Paragraph with pageBreakBefore = true (default: false). '
. 'Different with all other control above, "page break before" separates '
. 'your paragraph into the next page. This option is most useful for '
. 'heading styles.',
null,
array('pageBreakBefore' => true)
);

View File

@ -11,42 +11,43 @@ $header = array('size' => 16, 'bold' => true);
$rows = 10;
$cols = 5;
$section->addText(htmlspecialchars('Basic table', ENT_COMPAT, 'UTF-8'), $header);
$section->addText('Basic table', $header);
$table = $section->addTable();
for ($r = 1; $r <= 8; $r++) {
$table->addRow();
for ($c = 1; $c <= 5; $c++) {
$table->addCell(1750)->addText(htmlspecialchars("Row {$r}, Cell {$c}", ENT_COMPAT, 'UTF-8'));
$table->addCell(1750)->addText("Row {$r}, Cell {$c}");
}
}
// 2. Advanced table
$section->addTextBreak(1);
$section->addText(htmlspecialchars('Fancy table', ENT_COMPAT, 'UTF-8'), $header);
$section->addText('Fancy table', $header);
$styleTable = array('borderSize' => 6, 'borderColor' => '006699', 'cellMargin' => 80, 'alignment' => \PhpOffice\PhpWord\SimpleType\JcTable::CENTER);
$styleFirstRow = array('borderBottomSize' => 18, 'borderBottomColor' => '0000FF', 'bgColor' => '66BBFF');
$styleCell = array('valign' => 'center');
$styleCellBTLR = array('valign' => 'center', 'textDirection' => \PhpOffice\PhpWord\Style\Cell::TEXT_DIR_BTLR);
$fontStyle = array('bold' => true);
$phpWord->addTableStyle('Fancy Table', $styleTable, $styleFirstRow);
$table = $section->addTable('Fancy Table');
$fancyTableStyleName = 'Fancy Table';
$fancyTableStyle = array('borderSize' => 6, 'borderColor' => '006699', 'cellMargin' => 80, 'alignment' => \PhpOffice\PhpWord\SimpleType\JcTable::CENTER);
$fancyTableFirstRowStyle = array('borderBottomSize' => 18, 'borderBottomColor' => '0000FF', 'bgColor' => '66BBFF');
$fancyTableCellStyle = array('valign' => 'center');
$fancyTableCellBtlrStyle = array('valign' => 'center', 'textDirection' => \PhpOffice\PhpWord\Style\Cell::TEXT_DIR_BTLR);
$fancyTableFontStyle = array('bold' => true);
$phpWord->addTableStyle($fancyTableStyleName, $fancyTableStyle, $fancyTableFirstRowStyle);
$table = $section->addTable($fancyTableStyleName);
$table->addRow(900);
$table->addCell(2000, $styleCell)->addText(htmlspecialchars('Row 1', ENT_COMPAT, 'UTF-8'), $fontStyle);
$table->addCell(2000, $styleCell)->addText(htmlspecialchars('Row 2', ENT_COMPAT, 'UTF-8'), $fontStyle);
$table->addCell(2000, $styleCell)->addText(htmlspecialchars('Row 3', ENT_COMPAT, 'UTF-8'), $fontStyle);
$table->addCell(2000, $styleCell)->addText(htmlspecialchars('Row 4', ENT_COMPAT, 'UTF-8'), $fontStyle);
$table->addCell(500, $styleCellBTLR)->addText(htmlspecialchars('Row 5', ENT_COMPAT, 'UTF-8'), $fontStyle);
$table->addCell(2000, $fancyTableCellStyle)->addText('Row 1', $fancyTableFontStyle);
$table->addCell(2000, $fancyTableCellStyle)->addText('Row 2', $fancyTableFontStyle);
$table->addCell(2000, $fancyTableCellStyle)->addText('Row 3', $fancyTableFontStyle);
$table->addCell(2000, $fancyTableCellStyle)->addText('Row 4', $fancyTableFontStyle);
$table->addCell(500, $fancyTableCellBtlrStyle)->addText('Row 5', $fancyTableFontStyle);
for ($i = 1; $i <= 8; $i++) {
$table->addRow();
$table->addCell(2000)->addText(htmlspecialchars("Cell {$i}", ENT_COMPAT, 'UTF-8'));
$table->addCell(2000)->addText(htmlspecialchars("Cell {$i}", ENT_COMPAT, 'UTF-8'));
$table->addCell(2000)->addText(htmlspecialchars("Cell {$i}", ENT_COMPAT, 'UTF-8'));
$table->addCell(2000)->addText(htmlspecialchars("Cell {$i}", ENT_COMPAT, 'UTF-8'));
$table->addCell(2000)->addText("Cell {$i}");
$table->addCell(2000)->addText("Cell {$i}");
$table->addCell(2000)->addText("Cell {$i}");
$table->addCell(2000)->addText("Cell {$i}");
$text = (0== $i % 2) ? 'X' : '';
$table->addCell(500)->addText(htmlspecialchars($text, ENT_COMPAT, 'UTF-8'));
$table->addCell(500)->addText($text);
}
/**
@ -59,36 +60,37 @@ for ($i = 1; $i <= 8; $i++) {
*/
$section->addPageBreak();
$section->addText(htmlspecialchars('Table with colspan and rowspan', ENT_COMPAT, 'UTF-8'), $header);
$section->addText('Table with colspan and rowspan', $header);
$styleTable = array('borderSize' => 6, 'borderColor' => '999999');
$fancyTableStyle = array('borderSize' => 6, 'borderColor' => '999999');
$cellRowSpan = array('vMerge' => 'restart', 'valign' => 'center', 'bgColor' => 'FFFF00');
$cellRowContinue = array('vMerge' => 'continue');
$cellColSpan = array('gridSpan' => 2, 'valign' => 'center');
$cellHCentered = array('alignment' => \PhpOffice\PhpWord\SimpleType\Jc::CENTER);
$cellVCentered = array('valign' => 'center');
$phpWord->addTableStyle('Colspan Rowspan', $styleTable);
$table = $section->addTable('Colspan Rowspan');
$spanTableStyleName = 'Colspan Rowspan';
$phpWord->addTableStyle($spanTableStyleName, $fancyTableStyle);
$table = $section->addTable($spanTableStyleName);
$table->addRow();
$cell1 = $table->addCell(2000, $cellRowSpan);
$textrun1 = $cell1->addTextRun($cellHCentered);
$textrun1->addText(htmlspecialchars('A', ENT_COMPAT, 'UTF-8'));
$textrun1->addFootnote()->addText(htmlspecialchars('Row span', ENT_COMPAT, 'UTF-8'));
$textrun1->addText('A');
$textrun1->addFootnote()->addText('Row span');
$cell2 = $table->addCell(4000, $cellColSpan);
$textrun2 = $cell2->addTextRun($cellHCentered);
$textrun2->addText(htmlspecialchars('B', ENT_COMPAT, 'UTF-8'));
$textrun2->addFootnote()->addText(htmlspecialchars('Colspan span', ENT_COMPAT, 'UTF-8'));
$textrun2->addText('B');
$textrun2->addFootnote()->addText('Column span');
$table->addCell(2000, $cellRowSpan)->addText(htmlspecialchars('E', ENT_COMPAT, 'UTF-8'), null, $cellHCentered);
$table->addCell(2000, $cellRowSpan)->addText('E', null, $cellHCentered);
$table->addRow();
$table->addCell(null, $cellRowContinue);
$table->addCell(2000, $cellVCentered)->addText(htmlspecialchars('C', ENT_COMPAT, 'UTF-8'), null, $cellHCentered);
$table->addCell(2000, $cellVCentered)->addText(htmlspecialchars('D', ENT_COMPAT, 'UTF-8'), null, $cellHCentered);
$table->addCell(2000, $cellVCentered)->addText('C', null, $cellHCentered);
$table->addCell(2000, $cellVCentered)->addText('D', null, $cellHCentered);
$table->addCell(null, $cellRowContinue);
/**
@ -103,7 +105,7 @@ $table->addCell(null, $cellRowContinue);
* @see https://github.com/PHPOffice/PHPWord/issues/806
*/
$section->addPageBreak();
$section->addText(htmlspecialchars('Table with colspan and rowspan', ENT_COMPAT, 'UTF-8'), $header);
$section->addText('Table with colspan and rowspan', $header);
$styleTable = ['borderSize' => 6, 'borderColor' => '999999'];
$phpWord->addTableStyle('Colspan Rowspan', $styleTable);
@ -128,13 +130,13 @@ $row->addCell()->addText('3');
// 5. Nested table
$section->addTextBreak(2);
$section->addText(htmlspecialchars('Nested table in a centered and 50% width table.', ENT_COMPAT, 'UTF-8'), $header);
$section->addText('Nested table in a centered and 50% width table.', $header);
$table = $section->addTable(array('width' => 50 * 50, 'unit' => 'pct', 'alignment' => \PhpOffice\PhpWord\SimpleType\JcTable::CENTER));
$cell = $table->addRow()->addCell();
$cell->addText(htmlspecialchars('This cell contains nested table.', ENT_COMPAT, 'UTF-8'));
$cell->addText('This cell contains nested table.');
$innerCell = $cell->addTable(array('alignment' => \PhpOffice\PhpWord\SimpleType\JcTable::CENTER))->addRow()->addCell();
$innerCell->addText(htmlspecialchars('Inside nested table', ENT_COMPAT, 'UTF-8'));
$innerCell->addText('Inside nested table');
// Save file
echo write($phpWord, basename(__FILE__, '.php'), $writers);

View File

@ -7,7 +7,7 @@ $phpWord = new \PhpOffice\PhpWord\PhpWord();
$section = $phpWord->addSection();
$header = array('size' => 16, 'bold' => true);
//1.Use EastAisa FontStyle
$section->addText(htmlspecialchars('中文楷体样式测试', ENT_COMPAT, 'UTF-8'), array('name' => '楷体', 'size' => 16, 'color' => '1B2232'));
$section->addText('中文楷体样式测试', array('name' => '楷体', 'size' => 16, 'color' => '1B2232'));
// Save file
echo write($phpWord, basename(__FILE__, '.php'), $writers);

View File

@ -15,47 +15,47 @@ $table = $header->addTable();
$table->addRow();
$cell = $table->addCell(4500);
$textrun = $cell->addTextRun();
$textrun->addText(htmlspecialchars('This is the header with ', ENT_COMPAT, 'UTF-8'));
$textrun->addLink('https://github.com/PHPOffice/PHPWord', htmlspecialchars('PHPWord on GitHub', ENT_COMPAT, 'UTF-8'));
$textrun->addText('This is the header with ');
$textrun->addLink('https://github.com/PHPOffice/PHPWord', 'PHPWord on GitHub');
$table->addCell(4500)->addImage('resources/PhpWord.png', array('width' => 80, 'height' => 80, 'alignment' => \PhpOffice\PhpWord\SimpleType\Jc::END));
// Add header for all other pages
$subsequent = $section->addHeader();
$subsequent->addText(htmlspecialchars('Subsequent pages in Section 1 will Have this!', ENT_COMPAT, 'UTF-8'));
$subsequent->addText('Subsequent pages in Section 1 will Have this!');
$subsequent->addImage('resources/_mars.jpg', array('width' => 80, 'height' => 80));
// Add footer
$footer = $section->addFooter();
$footer->addPreserveText(htmlspecialchars('Page {PAGE} of {NUMPAGES}.', ENT_COMPAT, 'UTF-8'), null, array('alignment' => \PhpOffice\PhpWord\SimpleType\Jc::CENTER));
$footer->addLink('https://github.com/PHPOffice/PHPWord', htmlspecialchars('PHPWord on GitHub', ENT_COMPAT, 'UTF-8'));
$footer->addPreserveText('Page {PAGE} of {NUMPAGES}.', null, array('alignment' => \PhpOffice\PhpWord\SimpleType\Jc::CENTER));
$footer->addLink('https://github.com/PHPOffice/PHPWord', 'PHPWord on GitHub');
// Write some text
$section->addTextBreak();
$section->addText(htmlspecialchars('Some text...', ENT_COMPAT, 'UTF-8'));
$section->addText('Some text...');
// Create a second page
$section->addPageBreak();
// Write some text
$section->addTextBreak();
$section->addText(htmlspecialchars('Some text...', ENT_COMPAT, 'UTF-8'));
$section->addText('Some text...');
// Create a third page
$section->addPageBreak();
// Write some text
$section->addTextBreak();
$section->addText(htmlspecialchars('Some text...', ENT_COMPAT, 'UTF-8'));
$section->addText('Some text...');
// New portrait section
$section2 = $phpWord->addSection();
$sec2Header = $section2->addHeader();
$sec2Header->addText(htmlspecialchars('All pages in Section 2 will Have this!', ENT_COMPAT, 'UTF-8'));
$sec2Header->addText('All pages in Section 2 will Have this!');
// Write some text
$section2->addTextBreak();
$section2->addText(htmlspecialchars('Some text...', ENT_COMPAT, 'UTF-8'));
$section2->addText('Some text...');
// Save file
echo write($phpWord, basename(__FILE__, '.php'), $writers);

View File

@ -7,17 +7,17 @@ $phpWord = new \PhpOffice\PhpWord\PhpWord();
// Begin code
$section = $phpWord->addSection();
$section->addText(htmlspecialchars('Local image without any styles:', ENT_COMPAT, 'UTF-8'));
$section->addText('Local image without any styles:');
$section->addImage('resources/_mars.jpg');
$section->addTextBreak(2);
$section->addText(htmlspecialchars('Local image with styles:', ENT_COMPAT, 'UTF-8'));
$section->addText('Local image with styles:');
$section->addImage('resources/_earth.jpg', array('width' => 210, 'height' => 210, 'alignment' => \PhpOffice\PhpWord\SimpleType\Jc::CENTER));
$section->addTextBreak(2);
// Remote image
$source = 'http://php.net/images/logos/php-med-trans-light.gif';
$section->addText(htmlspecialchars("Remote image from: {$source}", ENT_COMPAT, 'UTF-8'));
$section->addText("Remote image from: {$source}");
$section->addImage($source);
//Wrapping style
@ -25,7 +25,7 @@ $text = str_repeat('Hello World! ', 15);
$wrappingStyles = array('inline', 'behind', 'infront', 'square', 'tight');
foreach ($wrappingStyles as $wrappingStyle) {
$section->addTextBreak(5);
$section->addText(htmlspecialchars("Wrapping style {$wrappingStyle}", ENT_COMPAT, 'UTF-8'));
$section->addText("Wrapping style {$wrappingStyle}");
$section->addImage(
'resources/_earth.jpg',
array(
@ -37,12 +37,12 @@ foreach ($wrappingStyles as $wrappingStyle) {
'wrappingStyle' => $wrappingStyle,
)
);
$section->addText(htmlspecialchars($text, ENT_COMPAT, 'UTF-8'));
$section->addText($text);
}
//Absolute positioning
$section->addTextBreak(3);
$section->addText(htmlspecialchars('Absolute positioning: see top right corner of page', ENT_COMPAT, 'UTF-8'));
$section->addText('Absolute positioning: see top right corner of page');
$section->addImage(
'resources/_mars.jpg',
array(
@ -59,8 +59,8 @@ $section->addImage(
//Relative positioning
$section->addTextBreak(3);
$section->addText(htmlspecialchars('Relative positioning: Horizontal position center relative to column,', ENT_COMPAT, 'UTF-8'));
$section->addText(htmlspecialchars('Vertical position top relative to line', ENT_COMPAT, 'UTF-8'));
$section->addText('Relative positioning: Horizontal position center relative to column,');
$section->addText('Vertical position top relative to line');
$section->addImage(
'resources/_mars.jpg',
array(

View File

@ -5,15 +5,16 @@ include_once 'Sample_Header.php';
echo date('H:i:s'), ' Create new PhpWord object', EOL;
$phpWord = new \PhpOffice\PhpWord\PhpWord();
// Begin code
$section = $phpWord->addSection();
// Define styles
$fontStyleName = 'myOwnStyle';
$phpWord->addFontStyle($fontStyleName, array('color' => 'FF0000'));
// Style definition
$paragraphStyleName = 'P-Style';
$phpWord->addParagraphStyle($paragraphStyleName, array('spaceAfter' => 95));
$phpWord->addFontStyle('myOwnStyle', array('color' => 'FF0000'));
$phpWord->addParagraphStyle('P-Style', array('spaceAfter' => 95));
$multilevelNumberingStyleName = 'multilevel';
$phpWord->addNumberingStyle(
'multilevel',
$multilevelNumberingStyleName,
array(
'type' => 'multilevel',
'levels' => array(
@ -22,56 +23,59 @@ $phpWord->addNumberingStyle(
),
)
);
$predefinedMultilevel = array('listType' => \PhpOffice\PhpWord\Style\ListItem::TYPE_NUMBER_NESTED);
$predefinedMultilevelStyle = array('listType' => \PhpOffice\PhpWord\Style\ListItem::TYPE_NUMBER_NESTED);
// New section
$section = $phpWord->addSection();
// Lists
$section->addText(htmlspecialchars('Multilevel list.', ENT_COMPAT, 'UTF-8'));
$section->addListItem(htmlspecialchars('List Item I', ENT_COMPAT, 'UTF-8'), 0, null, 'multilevel');
$section->addListItem(htmlspecialchars('List Item I.a', ENT_COMPAT, 'UTF-8'), 1, null, 'multilevel');
$section->addListItem(htmlspecialchars('List Item I.b', ENT_COMPAT, 'UTF-8'), 1, null, 'multilevel');
$section->addListItem(htmlspecialchars('List Item II', ENT_COMPAT, 'UTF-8'), 0, null, 'multilevel');
$section->addListItem(htmlspecialchars('List Item II.a', ENT_COMPAT, 'UTF-8'), 1, null, 'multilevel');
$section->addListItem(htmlspecialchars('List Item III', ENT_COMPAT, 'UTF-8'), 0, null, 'multilevel');
$section->addText('Multilevel list.');
$section->addListItem('List Item I', 0, null, $multilevelNumberingStyleName);
$section->addListItem('List Item I.a', 1, null, $multilevelNumberingStyleName);
$section->addListItem('List Item I.b', 1, null, $multilevelNumberingStyleName);
$section->addListItem('List Item II', 0, null, $multilevelNumberingStyleName);
$section->addListItem('List Item II.a', 1, null, $multilevelNumberingStyleName);
$section->addListItem('List Item III', 0, null, $multilevelNumberingStyleName);
$section->addTextBreak(2);
$section->addText(htmlspecialchars('Basic simple bulleted list.', ENT_COMPAT, 'UTF-8'));
$section->addListItem(htmlspecialchars('List Item 1', ENT_COMPAT, 'UTF-8'));
$section->addListItem(htmlspecialchars('List Item 2', ENT_COMPAT, 'UTF-8'));
$section->addListItem(htmlspecialchars('List Item 3', ENT_COMPAT, 'UTF-8'));
$section->addText('Basic simple bulleted list.');
$section->addListItem('List Item 1');
$section->addListItem('List Item 2');
$section->addListItem('List Item 3');
$section->addTextBreak(2);
$section->addText(htmlspecialchars('Continue from multilevel list above.', ENT_COMPAT, 'UTF-8'));
$section->addListItem(htmlspecialchars('List Item IV', ENT_COMPAT, 'UTF-8'), 0, null, 'multilevel');
$section->addListItem(htmlspecialchars('List Item IV.a', ENT_COMPAT, 'UTF-8'), 1, null, 'multilevel');
$section->addText('Continue from multilevel list above.');
$section->addListItem('List Item IV', 0, null, $multilevelNumberingStyleName);
$section->addListItem('List Item IV.a', 1, null, $multilevelNumberingStyleName);
$section->addTextBreak(2);
$section->addText(htmlspecialchars('Multilevel predefined list.', ENT_COMPAT, 'UTF-8'));
$section->addListItem(htmlspecialchars('List Item 1', ENT_COMPAT, 'UTF-8'), 0, 'myOwnStyle', $predefinedMultilevel, 'P-Style');
$section->addListItem(htmlspecialchars('List Item 2', ENT_COMPAT, 'UTF-8'), 0, 'myOwnStyle', $predefinedMultilevel, 'P-Style');
$section->addListItem(htmlspecialchars('List Item 3', ENT_COMPAT, 'UTF-8'), 1, 'myOwnStyle', $predefinedMultilevel, 'P-Style');
$section->addListItem(htmlspecialchars('List Item 4', ENT_COMPAT, 'UTF-8'), 1, 'myOwnStyle', $predefinedMultilevel, 'P-Style');
$section->addListItem(htmlspecialchars('List Item 5', ENT_COMPAT, 'UTF-8'), 2, 'myOwnStyle', $predefinedMultilevel, 'P-Style');
$section->addListItem(htmlspecialchars('List Item 6', ENT_COMPAT, 'UTF-8'), 1, 'myOwnStyle', $predefinedMultilevel, 'P-Style');
$section->addListItem(htmlspecialchars('List Item 7', ENT_COMPAT, 'UTF-8'), 0, 'myOwnStyle', $predefinedMultilevel, 'P-Style');
$section->addText('Multilevel predefined list.');
$section->addListItem('List Item 1', 0, $fontStyleName, $predefinedMultilevelStyle, $paragraphStyleName);
$section->addListItem('List Item 2', 0, $fontStyleName, $predefinedMultilevelStyle, $paragraphStyleName);
$section->addListItem('List Item 3', 1, $fontStyleName, $predefinedMultilevelStyle, $paragraphStyleName);
$section->addListItem('List Item 4', 1, $fontStyleName, $predefinedMultilevelStyle, $paragraphStyleName);
$section->addListItem('List Item 5', 2, $fontStyleName, $predefinedMultilevelStyle, $paragraphStyleName);
$section->addListItem('List Item 6', 1, $fontStyleName, $predefinedMultilevelStyle, $paragraphStyleName);
$section->addListItem('List Item 7', 0, $fontStyleName, $predefinedMultilevelStyle, $paragraphStyleName);
$section->addTextBreak(2);
$section->addText(htmlspecialchars('List with inline formatting.', ENT_COMPAT, 'UTF-8'));
$section->addText('List with inline formatting.');
$listItemRun = $section->addListItemRun();
$listItemRun->addText(htmlspecialchars('List item 1', ENT_COMPAT, 'UTF-8'));
$listItemRun->addText(htmlspecialchars(' in bold', ENT_COMPAT, 'UTF-8'), array('bold' => true));
$listItemRun->addText('List item 1');
$listItemRun->addText(' in bold', array('bold' => true));
$listItemRun = $section->addListItemRun();
$listItemRun->addText(htmlspecialchars('List item 2', ENT_COMPAT, 'UTF-8'));
$listItemRun->addText(htmlspecialchars(' in italic', ENT_COMPAT, 'UTF-8'), array('italic' => true));
$listItemRun->addText('List item 2');
$listItemRun->addText(' in italic', array('italic' => true));
$listItemRun = $section->addListItemRun();
$listItemRun->addText(htmlspecialchars('List item 3', ENT_COMPAT, 'UTF-8'));
$listItemRun->addText(htmlspecialchars(' underlined', ENT_COMPAT, 'UTF-8'), array('underline' => 'dash'));
$listItemRun->addText('List item 3');
$listItemRun->addText(' underlined', array('underline' => 'dash'));
$section->addTextBreak(2);
// Numbered heading
$headingNumberingStyleName = 'headingNumbering';
$phpWord->addNumberingStyle(
'headingNumbering',
$headingNumberingStyleName,
array('type' => 'multilevel',
'levels' => array(
array('pStyle' => 'Heading1', 'format' => 'decimal', 'text' => '%1'),
@ -80,13 +84,13 @@ $phpWord->addNumberingStyle(
),
)
);
$phpWord->addTitleStyle(1, array('size' => 16), array('numStyle' => 'headingNumbering', 'numLevel' => 0));
$phpWord->addTitleStyle(2, array('size' => 14), array('numStyle' => 'headingNumbering', 'numLevel' => 1));
$phpWord->addTitleStyle(3, array('size' => 12), array('numStyle' => 'headingNumbering', 'numLevel' => 2));
$phpWord->addTitleStyle(1, array('size' => 16), array('numStyle' => $headingNumberingStyleName, 'numLevel' => 0));
$phpWord->addTitleStyle(2, array('size' => 14), array('numStyle' => $headingNumberingStyleName, 'numLevel' => 1));
$phpWord->addTitleStyle(3, array('size' => 12), array('numStyle' => $headingNumberingStyleName, 'numLevel' => 2));
$section->addTitle(htmlspecialchars('Heading 1', ENT_COMPAT, 'UTF-8'), 1);
$section->addTitle(htmlspecialchars('Heading 2', ENT_COMPAT, 'UTF-8'), 2);
$section->addTitle(htmlspecialchars('Heading 3', ENT_COMPAT, 'UTF-8'), 3);
$section->addTitle('Heading 1', 1);
$section->addTitle('Heading 2', 2);
$section->addTitle('Heading 3', 3);
// Save file
echo write($phpWord, basename(__FILE__, '.php'), $writers);

View File

@ -5,20 +5,22 @@ include_once 'Sample_Header.php';
echo date('H:i:s'), ' Create new PhpWord object', EOL;
$phpWord = new \PhpOffice\PhpWord\PhpWord();
// Begin code
// Define styles
$linkFontStyleName = 'myOwnLinStyle';
$phpWord->addLinkStyle($linkFontStyleName, array('bold' => true, 'color' => '808000'));
// New section
$section = $phpWord->addSection();
// Add hyperlink elements
$section->addLink(
'https://github.com/PHPOffice/PHPWord',
htmlspecialchars('PHPWord on GitHub', ENT_COMPAT, 'UTF-8'),
'PHPWord on GitHub',
array('color' => '0000FF', 'underline' => \PhpOffice\PhpWord\Style\Font::UNDERLINE_SINGLE)
);
$section->addTextBreak(2);
$phpWord->addLinkStyle('myOwnLinkStyle', array('bold' => true, 'color' => '808000'));
$section->addLink('http://www.bing.com', null, 'myOwnLinkStyle');
$section->addLink('http://www.yahoo.com', null, 'myOwnLinkStyle');
$section->addLink('http://www.bing.com', null, $linkFontStyleName);
$section->addLink('http://www.yahoo.com', null, $linkFontStyleName);
// Save file
echo write($phpWord, basename(__FILE__, '.php'), $writers);

View File

@ -7,7 +7,7 @@ $phpWord = new \PhpOffice\PhpWord\PhpWord();
// Begin code
$section = $phpWord->addSection();
$section->addText(htmlspecialchars('You can open this OLE object by double clicking on the icon:', ENT_COMPAT, 'UTF-8'));
$section->addText('You can open this OLE object by double clicking on the icon:');
$section->addTextBreak(2);
$section->addObject('resources/_sheet.xls');

View File

@ -5,66 +5,63 @@ include_once 'Sample_Header.php';
echo date('H:i:s'), ' Create new PhpWord object', EOL;
$phpWord = new \PhpOffice\PhpWord\PhpWord();
// Begin code
// New section
$section = $phpWord->addSection();
// Define the TOC font style
$fontStyle = array('spaceAfter' => 60, 'size' => 12);
$fontStyle2 = array('size' => 10);
// Add title styles
// Define styles
$fontStyle12 = array('spaceAfter' => 60, 'size' => 12);
$fontStyle10 = array('size' => 10);
$phpWord->addTitleStyle(1, array('size' => 20, 'color' => '333333', 'bold' => true));
$phpWord->addTitleStyle(2, array('size' => 16, 'color' => '666666'));
$phpWord->addTitleStyle(3, array('size' => 14, 'italic' => true));
$phpWord->addTitleStyle(4, array('size' => 12));
// Add text elements
$section->addText(htmlspecialchars('Table of contents 1', ENT_COMPAT, 'UTF-8'));
$section->addText('Table of contents 1');
$section->addTextBreak(2);
// Add TOC #1
$toc = $section->addTOC($fontStyle);
$toc = $section->addTOC($fontStyle12);
$section->addTextBreak(2);
// Filler
$section->addText(htmlspecialchars('Text between TOC', ENT_COMPAT, 'UTF-8'));
$section->addText('Text between TOC');
$section->addTextBreak(2);
// Add TOC #1
$section->addText(htmlspecialchars('Table of contents 2', ENT_COMPAT, 'UTF-8'));
$section->addText('Table of contents 2');
$section->addTextBreak(2);
$toc2 = $section->addTOC($fontStyle2);
$toc2 = $section->addTOC($fontStyle10);
$toc2->setMinDepth(2);
$toc2->setMaxDepth(3);
// Add Titles
$section->addPageBreak();
$section->addTitle(htmlspecialchars('Foo & Bar', ENT_COMPAT, 'UTF-8'), 1);
$section->addText(htmlspecialchars('Some text...', ENT_COMPAT, 'UTF-8'));
$section->addTitle('Foo n Bar', 1);
$section->addText('Some text...');
$section->addTextBreak(2);
$section->addTitle(htmlspecialchars('I am a Subtitle of Title 1', ENT_COMPAT, 'UTF-8'), 2);
$section->addTitle('I am a Subtitle of Title 1', 2);
$section->addTextBreak(2);
$section->addText(htmlspecialchars('Some more text...', ENT_COMPAT, 'UTF-8'));
$section->addText('Some more text...');
$section->addTextBreak(2);
$section->addTitle(htmlspecialchars('Another Title (Title 2)', ENT_COMPAT, 'UTF-8'), 1);
$section->addText(htmlspecialchars('Some text...', ENT_COMPAT, 'UTF-8'));
$section->addTitle('Another Title (Title 2)', 1);
$section->addText('Some text...');
$section->addPageBreak();
$section->addTitle(htmlspecialchars('I am Title 3', ENT_COMPAT, 'UTF-8'), 1);
$section->addText(htmlspecialchars('And more text...', ENT_COMPAT, 'UTF-8'));
$section->addTitle('I am Title 3', 1);
$section->addText('And more text...');
$section->addTextBreak(2);
$section->addTitle(htmlspecialchars('I am a Subtitle of Title 3', ENT_COMPAT, 'UTF-8'), 2);
$section->addText(htmlspecialchars('Again and again, more text...', ENT_COMPAT, 'UTF-8'));
$section->addTitle(htmlspecialchars('Subtitle 3.1.1', ENT_COMPAT, 'UTF-8'), 3);
$section->addText(htmlspecialchars('Text', ENT_COMPAT, 'UTF-8'));
$section->addTitle(htmlspecialchars('Subtitle 3.1.1.1', ENT_COMPAT, 'UTF-8'), 4);
$section->addText(htmlspecialchars('Text', ENT_COMPAT, 'UTF-8'));
$section->addTitle(htmlspecialchars('Subtitle 3.1.1.2', ENT_COMPAT, 'UTF-8'), 4);
$section->addText(htmlspecialchars('Text', ENT_COMPAT, 'UTF-8'));
$section->addTitle(htmlspecialchars('Subtitle 3.1.2', ENT_COMPAT, 'UTF-8'), 3);
$section->addText(htmlspecialchars('Text', ENT_COMPAT, 'UTF-8'));
$section->addTitle('I am a Subtitle of Title 3', 2);
$section->addText('Again and again, more text...');
$section->addTitle('Subtitle 3.1.1', 3);
$section->addText('Text');
$section->addTitle('Subtitle 3.1.1.1', 4);
$section->addText('Text');
$section->addTitle('Subtitle 3.1.1.2', 4);
$section->addText('Text');
$section->addTitle('Subtitle 3.1.2', 3);
$section->addText('Text');
echo date('H:i:s'), ' Note: Please refresh TOC manually.', EOL;

View File

@ -6,11 +6,10 @@ echo date('H:i:s'), ' Create new PhpWord object', EOL;
$phpWord = new \PhpOffice\PhpWord\PhpWord();
// Begin code
$section = $phpWord->addSection();
$header = $section->addHeader();
$header->addWatermark('resources/_earth.jpg', array('marginTop' => 200, 'marginLeft' => 55));
$section->addText(htmlspecialchars('The header reference to the current section includes a watermark image.', ENT_COMPAT, 'UTF-8'));
$section->addText('The header reference to the current section includes a watermark image.');
// Save file
echo write($phpWord, basename(__FILE__, '.php'), $writers);

View File

@ -5,25 +5,31 @@ include_once 'Sample_Header.php';
echo date('H:i:s'), ' Create new PhpWord object', EOL;
$phpWord = new \PhpOffice\PhpWord\PhpWord();
// Begin code
$fontStyle = array('size' => 24);
$paragraphStyle = array('spacing' => 240, 'size' => 24);
$phpWord->addFontStyle('fontStyle', array('size' => 9));
$phpWord->addParagraphStyle('paragraphStyle', array('spacing' => 480));
$fontStyle = array('size' => 24);
// Define styles
$fontStyle24 = array('size' => 24);
$paragraphStyle24 = array('spacing' => 240, 'size' => 24);
$fontStyleName = 'fontStyle';
$phpWord->addFontStyle($fontStyleName, array('size' => 9));
$paragraphStyleName = 'paragraphStyle';
$phpWord->addParagraphStyle($paragraphStyleName, array('spacing' => 480));
// New section
$section = $phpWord->addSection();
$section->addText(htmlspecialchars('Text break with no style:', ENT_COMPAT, 'UTF-8'));
$section->addText('Text break with no style:');
$section->addTextBreak();
$section->addText(htmlspecialchars('Text break with defined font style:', ENT_COMPAT, 'UTF-8'));
$section->addTextBreak(1, 'fontStyle');
$section->addText(htmlspecialchars('Text break with defined paragraph style:', ENT_COMPAT, 'UTF-8'));
$section->addTextBreak(1, null, 'paragraphStyle');
$section->addText(htmlspecialchars('Text break with inline font style:', ENT_COMPAT, 'UTF-8'));
$section->addTextBreak(1, $fontStyle);
$section->addText(htmlspecialchars('Text break with inline paragraph style:', ENT_COMPAT, 'UTF-8'));
$section->addTextBreak(1, null, $paragraphStyle);
$section->addText(htmlspecialchars('Done.', ENT_COMPAT, 'UTF-8'));
$section->addText('Text break with defined font style:');
$section->addTextBreak(1, $fontStyleName);
$section->addText('Text break with defined paragraph style:');
$section->addTextBreak(1, null, $paragraphStyleName);
$section->addText('Text break with inline font style:');
$section->addTextBreak(1, $fontStyle24);
$section->addText('Text break with inline paragraph style:');
$section->addTextBreak(1, null, $paragraphStyle24);
$section->addText('Done.');
// Save file
echo write($phpWord, basename(__FILE__, '.php'), $writers);

View File

@ -4,17 +4,16 @@ include_once 'Sample_Header.php';
// New Word document
echo date('H:i:s'), ' Create new PhpWord object', EOL;
$phpWord = new \PhpOffice\PhpWord\PhpWord();
// New section
$section = $phpWord->addSection();
$section->addText(
htmlspecialchars('This is some text highlighted using fgColor (limited to 15 colors) ', ENT_COMPAT, 'UTF-8'),
'This is some text highlighted using fgColor (limited to 15 colors)',
array('fgColor' => \PhpOffice\PhpWord\Style\Font::FGCOLOR_YELLOW)
);
$section->addText(
htmlspecialchars('This one uses bgColor and is using hex value (0xfbbb10)', ENT_COMPAT, 'UTF-8'),
array('bgColor' => 'fbbb10')
);
$section->addText(htmlspecialchars('Compatible with font colors', ENT_COMPAT, 'UTF-8'), array('color' => '0000ff', 'bgColor' => 'fbbb10'));
$section->addText('This one uses bgColor and is using hex value (0xfbbb10)', array('bgColor' => 'fbbb10'));
$section->addText('Compatible with font colors', array('color' => '0000ff', 'bgColor' => 'fbbb10'));
// Save file
echo write($phpWord, basename(__FILE__, '.php'), $writers);

View File

@ -4,19 +4,15 @@ include_once 'Sample_Header.php';
// New Word document
echo date('H:i:s'), ' Create new PhpWord object', EOL;
$phpWord = new \PhpOffice\PhpWord\PhpWord();
// New section
$section = $phpWord->addSection();
$section->addText(htmlspecialchars('By default, when you insert an image, it adds a textbreak after its content.', ENT_COMPAT, 'UTF-8'));
$section->addText('By default, when you insert an image, it adds a textbreak after its content.');
$section->addText('If we want a simple border around an image, we wrap the image inside a table->row->cell');
$section->addText(
htmlspecialchars('If we want a simple border around an image, we wrap the image inside a table->row->cell', ENT_COMPAT, 'UTF-8')
);
$section->addText(
htmlspecialchars(
'On the image with the red border, even if we set the row height to the height of the image, '
. 'the textbreak is still there:',
ENT_COMPAT,
'UTF-8'
)
'On the image with the red border, even if we set the row height to the height of the image, '
. 'the textbreak is still there:'
);
$table1 = $section->addTable(array('cellMargin' => 0, 'cellMarginRight' => 0, 'cellMarginBottom' => 0, 'cellMarginLeft' => 0));
@ -25,13 +21,7 @@ $cell1 = $table1->addCell(null, array('valign' => 'top', 'borderSize' => 30, 'bo
$cell1->addImage('./resources/_earth.jpg', array('width' => 250, 'height' => 250, 'alignment' => \PhpOffice\PhpWord\SimpleType\Jc::CENTER));
$section->addTextBreak();
$section->addText(
htmlspecialchars(
"But if we set the rowStyle 'exactHeight' to true, the real row height is used, removing the textbreak:",
ENT_COMPAT,
'UTF-8'
)
);
$section->addText("But if we set the rowStyle 'exactHeight' to true, the real row height is used, removing the textbreak:");
$table2 = $section->addTable(
array(
@ -46,10 +36,8 @@ $cell2 = $table2->addCell(null, array('valign' => 'top', 'borderSize' => 30, 'bo
$cell2->addImage('./resources/_earth.jpg', array('width' => 250, 'height' => 250, 'alignment' => \PhpOffice\PhpWord\SimpleType\Jc::CENTER));
$section->addTextBreak();
$section->addText(
htmlspecialchars('In this example, image is 250px height. Rows are calculated in twips, and 1px = 15twips.', ENT_COMPAT, 'UTF-8')
);
$section->addText(htmlspecialchars('So: $' . "table2->addRow(3750, array('exactHeight'=>true));", ENT_COMPAT, 'UTF-8'));
$section->addText('In this example, image is 250px height. Rows are calculated in twips, and 1px = 15twips.');
$section->addText('So: $' . "table2->addRow(3750, array('exactHeight'=>true));");
// Save file
echo write($phpWord, basename(__FILE__, '.php'), $writers);

View File

@ -5,14 +5,16 @@ include_once 'Sample_Header.php';
echo date('H:i:s'), ' Create new PhpWord object', EOL;
$phpWord = new \PhpOffice\PhpWord\PhpWord();
// New section
$section = $phpWord->addSection();
$section->addText(htmlspecialchars('Check box in section', ENT_COMPAT, 'UTF-8'));
$section->addCheckBox('chkBox1', htmlspecialchars('Checkbox 1', ENT_COMPAT, 'UTF-8'));
$section->addText(htmlspecialchars('Check box in table cell', ENT_COMPAT, 'UTF-8'));
$section->addText('Check box in section');
$section->addCheckBox('chkBox1', 'Checkbox 1');
$section->addText('Check box in table cell');
$table = $section->addTable();
$table->addRow();
$cell = $table->addCell();
$cell->addCheckBox('chkBox2', htmlspecialchars('Checkbox 2', ENT_COMPAT, 'UTF-8'));
$cell->addCheckBox('chkBox2', 'Checkbox 2');
// Save file
echo write($phpWord, basename(__FILE__, '.php'), $writers);

View File

@ -5,6 +5,7 @@ include_once 'Sample_Header.php';
echo date('H:i:s'), ' Create new PhpWord object', EOL;
$phpWord = new \PhpOffice\PhpWord\PhpWord();
// New section
$section = $phpWord->addSection();
// In section
@ -17,28 +18,28 @@ $textbox = $section->addTextBox(
'borderColor' => '#FF0000',
)
);
$textbox->addText(htmlspecialchars('Text box content in section.', ENT_COMPAT, 'UTF-8'));
$textbox->addText(htmlspecialchars('Another line.', ENT_COMPAT, 'UTF-8'));
$textbox->addText('Text box content in section.');
$textbox->addText('Another line.');
$cell = $textbox->addTable()->addRow()->addCell();
$cell->addText(htmlspecialchars('Table inside textbox', ENT_COMPAT, 'UTF-8'));
$cell->addText('Table inside textbox');
// Inside table
$section->addTextBreak(2);
$cell = $section->addTable()->addRow()->addCell(300);
$textbox = $cell->addTextBox(array('borderSize' => 1, 'borderColor' => '#0000FF', 'innerMargin' => 100));
$textbox->addText(htmlspecialchars('Textbox inside table', ENT_COMPAT, 'UTF-8'));
$textbox->addText('Textbox inside table');
// Inside header with textrun
$header = $section->addHeader();
$textbox = $header->addTextBox(array('width' => 600, 'borderSize' => 1, 'borderColor' => '#00FF00'));
$textrun = $textbox->addTextRun();
$textrun->addText(htmlspecialchars('TextBox in header. TextBox can contain a TextRun ', ENT_COMPAT, 'UTF-8'));
$textrun->addText(htmlspecialchars('with bold text', ENT_COMPAT, 'UTF-8'), array('bold' => true));
$textrun->addText(htmlspecialchars(', ', ENT_COMPAT, 'UTF-8'));
$textrun->addLink('https://github.com/PHPOffice/PHPWord', htmlspecialchars('PHPWord on GitHub', ENT_COMPAT, 'UTF-8'));
$textrun->addText(htmlspecialchars(', and image ', ENT_COMPAT, 'UTF-8'));
$textrun->addText('TextBox in header. TextBox can contain a TextRun ');
$textrun->addText('with bold text', array('bold' => true));
$textrun->addText(', ');
$textrun->addLink('https://github.com/PHPOffice/PHPWord', 'PHPWord on GitHub');
$textrun->addText(', and image ');
$textrun->addImage('resources/_earth.jpg', array('width' => 18, 'height' => 18));
$textrun->addText(htmlspecialchars('.', ENT_COMPAT, 'UTF-8'));
$textrun->addText('.');
// Save file
echo write($phpWord, basename(__FILE__, '.php'), $writers);

View File

@ -5,24 +5,24 @@ include_once 'Sample_Header.php';
echo date('H:i:s'), ' Create new PhpWord object', EOL;
$phpWord = new \PhpOffice\PhpWord\PhpWord();
// Begin code
// New section
$section = $phpWord->addSection();
// Add Field elements
// See Element/Field.php for all options
$section->addText(htmlspecialchars('Date field:', ENT_COMPAT, 'UTF-8'));
$section->addText('Date field:');
$section->addField('DATE', array('dateformat' => 'dddd d MMMM yyyy H:mm:ss'), array('PreserveFormat'));
$section->addText(htmlspecialchars('Page field:', ENT_COMPAT, 'UTF-8'));
$section->addText('Page field:');
$section->addField('PAGE', array('format' => 'ArabicDash'));
$section->addText(htmlspecialchars('Number of pages field:', ENT_COMPAT, 'UTF-8'));
$section->addText('Number of pages field:');
$section->addField('NUMPAGES', array('format' => 'Arabic', 'numformat' => '0,00'), array('PreserveFormat'));
$textrun = $section->addTextRun(array('alignment' => \PhpOffice\PhpWord\SimpleType\Jc::CENTER));
$textrun->addText(htmlspecialchars('This is the date of lunar calendar ', ENT_COMPAT, 'UTF-8'));
$textrun->addText('This is the date of lunar calendar ');
$textrun->addField('DATE', array('dateformat' => 'd-M-yyyy H:mm:ss'), array('PreserveFormat', 'LunarCalendar'));
$textrun->addText(htmlspecialchars(' written in a textrun.', ENT_COMPAT, 'UTF-8'));
$textrun->addText(' written in a textrun.');
// Save file
echo write($phpWord, basename(__FILE__, '.php'), $writers);

View File

@ -5,12 +5,12 @@ include_once 'Sample_Header.php';
echo date('H:i:s'), ' Create new PhpWord object', EOL;
$phpWord = new \PhpOffice\PhpWord\PhpWord();
// Begin code
// New section
$section = $phpWord->addSection();
// Add Line elements
// See Element/Line.php for all options
$section->addText(htmlspecialchars('Horizontal Line (Inline style):', ENT_COMPAT, 'UTF-8'));
$section->addText('Horizontal Line (Inline style):');
$section->addLine(
array(
'width' => \PhpOffice\PhpWord\Shared\Converter::cmToPixel(4),
@ -18,7 +18,7 @@ $section->addLine(
'positioning' => 'absolute',
)
);
$section->addText(htmlspecialchars('Vertical Line (Inline style):', ENT_COMPAT, 'UTF-8'));
$section->addText('Vertical Line (Inline style):');
$section->addLine(
array(
'width' => \PhpOffice\PhpWord\Shared\Converter::cmToPixel(0),
@ -29,7 +29,7 @@ $section->addLine(
// Two text break
$section->addTextBreak(1);
$section->addText(htmlspecialchars('Positioned Line (red):', ENT_COMPAT, 'UTF-8'));
$section->addText('Positioned Line (red):');
$section->addLine(
array(
'width' => \PhpOffice\PhpWord\Shared\Converter::cmToPixel(4),
@ -44,7 +44,7 @@ $section->addLine(
)
);
$section->addText(htmlspecialchars('Horizontal Formatted Line', ENT_COMPAT, 'UTF-8'));
$section->addText('Horizontal Formatted Line');
$section->addLine(
array(
'width' => \PhpOffice\PhpWord\Shared\Converter::cmToPixel(15),

View File

@ -3,14 +3,16 @@ include_once 'Sample_Header.php';
// New Word document
echo date('H:i:s'), ' Create new PhpWord object', EOL;
$phpWord = new \PhpOffice\PhpWord\PhpWord();
$phpWord->addTitleStyle(1, array('size' => 14, 'bold' => true));
// New section
$section = $phpWord->addSection();
// Define styles
$phpWord->addTitleStyle(1, array('size' => 14, 'bold' => true));
// Arc
$section->addTitle(htmlspecialchars('Arc', ENT_COMPAT, 'UTF-8'), 1);
$section->addTitle('Arc', 1);
$section->addShape(
'arc',
array(
@ -21,7 +23,7 @@ $section->addShape(
);
// Curve
$section->addTitle(htmlspecialchars('Curve', ENT_COMPAT, 'UTF-8'), 1);
$section->addTitle('Curve', 1);
$section->addShape(
'curve',
array(
@ -38,7 +40,7 @@ $section->addShape(
);
// Line
$section->addTitle(htmlspecialchars('Line', ENT_COMPAT, 'UTF-8'), 1);
$section->addTitle('Line', 1);
$section->addShape(
'line',
array(
@ -54,7 +56,7 @@ $section->addShape(
);
// Polyline
$section->addTitle(htmlspecialchars('Polyline', ENT_COMPAT, 'UTF-8'), 1);
$section->addTitle('Polyline', 1);
$section->addShape(
'polyline',
array(
@ -64,7 +66,7 @@ $section->addShape(
);
// Rectangle
$section->addTitle(htmlspecialchars('Rectangle', ENT_COMPAT, 'UTF-8'), 1);
$section->addTitle('Rectangle', 1);
$section->addShape(
'rect',
array(
@ -77,7 +79,7 @@ $section->addShape(
);
// Oval
$section->addTitle(htmlspecialchars('Oval', ENT_COMPAT, 'UTF-8'), 1);
$section->addTitle('Oval', 1);
$section->addShape(
'oval',
array(

View File

@ -5,14 +5,15 @@ use PhpOffice\PhpWord\Shared\Converter;
// New Word document
echo date('H:i:s'), ' Create new PhpWord object', EOL;
$phpWord = new \PhpOffice\PhpWord\PhpWord();
// Define styles
$phpWord->addTitleStyle(1, array('size' => 14, 'bold' => true), array('keepNext' => true, 'spaceBefore' => 240));
$phpWord->addTitleStyle(2, array('size' => 14, 'bold' => true), array('keepNext' => true, 'spaceBefore' => 240));
// 2D charts
$section = $phpWord->addSection();
$section->addTitle(htmlspecialchars('2D charts', ENT_COMPAT, 'UTF-8'), 1);
$section->addTitle('2D charts', 1);
$section = $phpWord->addSection(array('colsNum' => 2, 'breakType' => 'continuous'));
$chartTypes = array('pie', 'doughnut', 'bar', 'column', 'line', 'area', 'scatter', 'radar');
@ -38,7 +39,7 @@ foreach ($chartTypes as $chartType) {
// 3D charts
$section = $phpWord->addSection(array('breakType' => 'continuous'));
$section->addTitle(htmlspecialchars('3D charts', ENT_COMPAT, 'UTF-8'), 1);
$section->addTitle('3D charts', 1);
$section = $phpWord->addSection(array('colsNum' => 2, 'breakType' => 'continuous'));
$chartTypes = array('pie', 'bar', 'column', 'line', 'area');

View File

@ -6,18 +6,19 @@ echo date('H:i:s'), ' Create new PhpWord object', EOL;
$phpWord = new \PhpOffice\PhpWord\PhpWord();
$phpWord->getProtection()->setEditing('forms');
// New section
$section = $phpWord->addSection();
$textrun = $section->addTextRun();
$textrun->addText(htmlspecialchars('Form fields can be added in a text run and can be in form of textinput ', ENT_COMPAT, 'UTF-8'));
$textrun->addText('Form fields can be added in a text run and can be in form of textinput ');
$textrun->addFormField('textinput')->setName('MyTextBox');
$textrun->addText(htmlspecialchars(', checkbox ', ENT_COMPAT, 'UTF-8'));
$textrun->addText(', checkbox ');
$textrun->addFormField('checkbox')->setDefault(true);
$textrun->addText(htmlspecialchars(', or dropdown ', ENT_COMPAT, 'UTF-8'));
$textrun->addText(', or dropdown ');
$textrun->addFormField('dropdown')->setEntries(array('Choice 1', 'Choice 2', 'Choice 3'));
$textrun->addText(htmlspecialchars('. You have to set document protection to "forms" to enable dropdown.', ENT_COMPAT, 'UTF-8'));
$textrun->addText('. You have to set document protection to "forms" to enable dropdown.');
$section->addText(htmlspecialchars('They can also be added as a stand alone paragraph.', ENT_COMPAT, 'UTF-8'));
$section->addText('They can also be added as a stand alone paragraph.');
$section->addFormField('textinput')->setValue('Your name');
// Save file

View File

@ -5,18 +5,19 @@ include_once 'Sample_Header.php';
echo date('H:i:s'), ' Create new PhpWord object', EOL;
$phpWord = new \PhpOffice\PhpWord\PhpWord();
// New section
$section = $phpWord->addSection();
$textrun = $section->addTextRun();
$textrun->addText(htmlspecialchars('Combobox: ', ENT_COMPAT, 'UTF-8'));
$textrun->addText('Combobox: ');
$textrun->addSDT('comboBox')->setListItems(array('1' => 'Choice 1', '2' => 'Choice 2'));
$textrun = $section->addTextRun();
$textrun->addText(htmlspecialchars('Date: ', ENT_COMPAT, 'UTF-8'));
$textrun->addText('Date: ');
$textrun->addSDT('date');
$textrun = $section->addTextRun();
$textrun->addText(htmlspecialchars('Drop down list: ', ENT_COMPAT, 'UTF-8'));
$textrun->addText('Drop down list: ');
$textrun->addSDT('dropDownList')->setListItems(array('1' => 'Choice 1', '2' => 'Choice 2'));
// Save file

View File

@ -6,13 +6,13 @@ echo date('H:i:s'), ' Create new PhpWord object', EOL;
$phpWord = new \PhpOffice\PhpWord\PhpWord();
$section = $phpWord->addSection();
$section->addTitle(htmlspecialchars('This is page 1', ENT_COMPAT, 'UTF-8'), 1);
$section->addTitle('This is page 1', 1);
$linkIsInternal = true;
$section->addLink('MyBookmark', htmlspecialchars('Take me to page 3', ENT_COMPAT, 'UTF-8'), null, null, $linkIsInternal);
$section->addLink('MyBookmark', 'Take me to page 3', null, null, $linkIsInternal);
$section->addPageBreak();
$section->addTitle(htmlspecialchars('This is page 2', ENT_COMPAT, 'UTF-8'), 1);
$section->addTitle('This is page 2', 1);
$section->addPageBreak();
$section->addTitle(htmlspecialchars('This is page 3', ENT_COMPAT, 'UTF-8'), 1);
$section->addTitle('This is page 3', 1);
$section->addBookmark('MyBookmark');
// Save file

View File

@ -5,12 +5,14 @@ include_once 'Sample_Header.php';
echo date('H:i:s'), ' Create new PhpWord object', EOL;
$phpWord = new \PhpOffice\PhpWord\PhpWord();
// New section
$section = $phpWord->addSection();
$textrun = $section->addTextRun();
$textrun->addText(htmlspecialchars('This is a Left to Right paragraph.', ENT_COMPAT, 'UTF-8'));
$textrun->addText('This is a Left to Right paragraph.');
$textrun = $section->addTextRun(array('alignment' => \PhpOffice\PhpWord\SimpleType\Jc::END));
$textrun->addText(htmlspecialchars('سلام این یک پاراگراف راست به چپ است', ENT_COMPAT, 'UTF-8'), array('rtl' => true));
$textrun->addText('سلام این یک پاراگراف راست به چپ است', array('rtl' => true));
// Save file
echo write($phpWord, basename(__FILE__, '.php'), $writers);

View File

@ -20,6 +20,9 @@ if (null === Settings::getPdfRendererPath()) {
$writers['PDF'] = null;
}
// Turn output escaping on
Settings::setOutputEscapingEnabled(true);
// Return to the caller script when runs by CLI
if (CLI) {
return;

View File

@ -0,0 +1,46 @@
<?php
/**
* This file is part of PHPWord - A pure PHP library for reading and writing
* word processing documents.
*
* PHPWord is free software distributed under the terms of the GNU Lesser
* General Public License version 3 as published by the Free Software Foundation.
*
* For the full copyright and license information, please read the LICENSE
* file that was distributed with this source code. For the full list of
* contributors, visit https://github.com/PHPOffice/PHPWord/contributors.
*
* @link https://github.com/PHPOffice/PHPWord
* @copyright 2010-2016 PHPWord contributors
* @license http://www.gnu.org/licenses/lgpl.txt LGPL version 3
*/
namespace PhpOffice\PhpWord\Escaper;
/**
* @since 0.13.0
*
* @codeCoverageIgnore
*/
abstract class AbstractEscaper implements EscaperInterface
{
/**
* @param string $subject
*
* @return string
*/
abstract protected function escapeSingleValue($subject);
public function escape($subject)
{
if (is_array($subject)) {
foreach ($subject as &$item) {
$item = $this->escapeSingleValue($item);
}
} else {
$subject = $this->escapeSingleValue($subject);
}
return $subject;
}
}

View File

@ -19,6 +19,8 @@ namespace PhpOffice\PhpWord\Escaper;
/**
* @since 0.13.0
*
* @codeCoverageIgnore
*/
interface EscaperInterface
{
@ -27,5 +29,5 @@ interface EscaperInterface
*
* @return mixed
*/
public static function escape($subject);
public function escape($subject);
}

View File

@ -19,31 +19,15 @@ namespace PhpOffice\PhpWord\Escaper;
/**
* @since 0.13.0
*
* @codeCoverageIgnore
*/
class RegExp implements EscaperInterface
class RegExp extends AbstractEscaper
{
const REG_EXP_DELIMITER = '/';
/**
* @param string $subject
*
* @return string
*/
protected static function escapeSingleItem($subject)
protected function escapeSingleValue($subject)
{
return self::REG_EXP_DELIMITER . preg_quote($subject, self::REG_EXP_DELIMITER) . self::REG_EXP_DELIMITER . 'u';
}
public static function escape($subject)
{
if (is_array($subject)) {
foreach ($subject as &$item) {
$item = self::escapeSingleItem($item);
}
} else {
$subject = self::escapeSingleItem($subject);
}
return $subject;
}
}

View File

@ -0,0 +1,32 @@
<?php
/**
* This file is part of PHPWord - A pure PHP library for reading and writing
* word processing documents.
*
* PHPWord is free software distributed under the terms of the GNU Lesser
* General Public License version 3 as published by the Free Software Foundation.
*
* For the full copyright and license information, please read the LICENSE
* file that was distributed with this source code. For the full list of
* contributors, visit https://github.com/PHPOffice/PHPWord/contributors.
*
* @link https://github.com/PHPOffice/PHPWord
* @copyright 2010-2016 PHPWord contributors
* @license http://www.gnu.org/licenses/lgpl.txt LGPL version 3
*/
namespace PhpOffice\PhpWord\Escaper;
/**
* @since 0.13.0
*
* @codeCoverageIgnore
*/
class Xml extends AbstractEscaper
{
protected function escapeSingleValue($subject)
{
// todo: omit encoding parameter after migration onto PHP 5.4
return htmlspecialchars($subject, ENT_QUOTES, 'UTF-8');
}
}

View File

@ -126,6 +126,14 @@ class Settings
*/
private static $tempDir = '';
/**
* Enables built-in output escaping mechanism.
* Default value is `false` for backward compatibility with versions below 0.13.0.
*
* @var bool
*/
private static $outputEscapingEnabled = false;
/**
* Return the compatibility option used by the XMLWriter
*
@ -282,6 +290,7 @@ class Settings
* @since 0.12.0
*
* @param string $tempDir The user defined path to temporary directory.
*
* @return void
*/
public static function setTempDir($tempDir)
@ -307,6 +316,30 @@ class Settings
return $tempDir;
}
/**
* @since 0.13.0
*
* @return boolean
*
* @codeCoverageIgnore
*/
public static function isOutputEscapingEnabled()
{
return self::$outputEscapingEnabled;
}
/**
* @since 0.13.0
*
* @param boolean $outputEscapingEnabled
*
* @codeCoverageIgnore
*/
public static function setOutputEscapingEnabled($outputEscapingEnabled)
{
self::$outputEscapingEnabled = $outputEscapingEnabled;
}
/**
* Get default font name
*

View File

@ -18,6 +18,7 @@
namespace PhpOffice\PhpWord;
use PhpOffice\PhpWord\Escaper\RegExp;
use PhpOffice\PhpWord\Escaper\Xml;
use PhpOffice\PhpWord\Exception\CopyFileException;
use PhpOffice\PhpWord\Exception\CreateTemporaryFileException;
use PhpOffice\PhpWord\Exception\Exception;
@ -105,6 +106,9 @@ class TemplateProcessor
/**
* Applies XSL style sheet to template's parts.
*
* Note: since the method doesn't make any guess on logic of the provided XSL style sheet,
* make sure that output is correctly escaped. Otherwise you may get broken document.
*
* @param \DOMDocument $xslDOMDocument
* @param array $xslOptions
* @param string $xslOptionsURI
@ -189,6 +193,11 @@ class TemplateProcessor
$replace = self::ensureUtf8Encoded($replace);
}
if (Settings::isOutputEscapingEnabled()) {
$xmlEscaper = new Xml();
$replace = $xmlEscaper->escape($replace);
}
$this->tempDocumentHeaders = $this->setValueForPart($search, $replace, $this->tempDocumentHeaders, $limit);
$this->tempDocumentMainPart = $this->setValueForPart($search, $replace, $this->tempDocumentMainPart, $limit);
$this->tempDocumentFooters = $this->setValueForPart($search, $replace, $this->tempDocumentFooters, $limit);
@ -442,7 +451,8 @@ class TemplateProcessor
if (self::MAXIMUM_REPLACEMENTS_DEFAULT === $limit) {
return str_replace($search, $replace, $documentPartXML);
} else {
return preg_replace(RegExp::escape($search), $replace, $documentPartXML, $limit);
$regExpEscaper = new RegExp();
return preg_replace($regExpEscaper->escape($search), $replace, $documentPartXML, $limit);
}
}

View File

@ -16,6 +16,7 @@
*/
namespace PhpOffice\PhpWord\Writer\Word2007\Element;
use PhpOffice\PhpWord\Settings;
/**
* CheckBox element writer
@ -63,7 +64,7 @@ class CheckBox extends Text
$xmlWriter->startElement('w:r');
$xmlWriter->startElement('w:instrText');
$xmlWriter->writeAttribute('xml:space', 'preserve');
$xmlWriter->writeRaw(' FORMCHECKBOX ');
$xmlWriter->text(' FORMCHECKBOX ');
$xmlWriter->endElement();// w:instrText
$xmlWriter->endElement(); // w:r
$xmlWriter->startElement('w:r');
@ -83,7 +84,11 @@ class CheckBox extends Text
$xmlWriter->startElement('w:t');
$xmlWriter->writeAttribute('xml:space', 'preserve');
$xmlWriter->writeRaw($this->getText($element->getText()));
if (Settings::isOutputEscapingEnabled()) {
$xmlWriter->text($this->getText($element->getText()));
} else {
$xmlWriter->writeRaw($this->getText($element->getText()));
}
$xmlWriter->endElement(); // w:t
$xmlWriter->endElement(); // w:r

View File

@ -79,9 +79,7 @@ class Field extends Text
$xmlWriter->endElement(); // w:noProof
$xmlWriter->endElement(); // w:rPr
$xmlWriter->startElement('w:t');
$xmlWriter->writeRaw('1');
$xmlWriter->endElement(); // w:t
$xmlWriter->writeElement('w:t', '1');
$xmlWriter->endElement(); // w:r
$xmlWriter->endElement(); // w:fldSimple

View File

@ -19,6 +19,7 @@ namespace PhpOffice\PhpWord\Writer\Word2007\Element;
use PhpOffice\Common\XMLWriter;
use PhpOffice\PhpWord\Element\FormField as FormFieldElement;
use PhpOffice\PhpWord\Settings;
/**
* FormField element writer
@ -78,7 +79,7 @@ class FormField extends Text
$this->writeFontStyle();
$xmlWriter->startElement('w:instrText');
$xmlWriter->writeAttribute('xml:space', 'preserve');
$xmlWriter->writeRaw("{$instruction}");
$xmlWriter->text("{$instruction}");
$xmlWriter->endElement();// w:instrText
$xmlWriter->endElement(); // w:r
@ -91,7 +92,11 @@ class FormField extends Text
$this->writeFontStyle();
$xmlWriter->startElement('w:t');
$xmlWriter->writeAttribute('xml:space', 'preserve');
$xmlWriter->writeRaw($value);
if (Settings::isOutputEscapingEnabled()) {
$xmlWriter->text($value);
} else {
$xmlWriter->writeRaw($value);
}
$xmlWriter->endElement(); // w:t
$xmlWriter->endElement(); // w:r

View File

@ -16,6 +16,7 @@
*/
namespace PhpOffice\PhpWord\Writer\Word2007\Element;
use PhpOffice\PhpWord\Settings;
/**
* Link element writer
@ -54,7 +55,11 @@ class Link extends Text
$xmlWriter->startElement('w:t');
$xmlWriter->writeAttribute('xml:space', 'preserve');
$xmlWriter->writeRaw($element->getText());
if (Settings::isOutputEscapingEnabled()) {
$xmlWriter->text($element->getText());
} else {
$xmlWriter->writeRaw($element->getText());
}
$xmlWriter->endElement(); // w:t
$xmlWriter->endElement(); // w:r
$xmlWriter->endElement(); // w:hyperlink

View File

@ -16,6 +16,7 @@
*/
namespace PhpOffice\PhpWord\Writer\Word2007\Element;
use PhpOffice\PhpWord\Settings;
/**
* PreserveText element writer
@ -60,7 +61,11 @@ class PreserveText extends Text
$xmlWriter->startElement('w:instrText');
$xmlWriter->writeAttribute('xml:space', 'preserve');
$xmlWriter->writeRaw($text);
if (Settings::isOutputEscapingEnabled()) {
$xmlWriter->text($text);
} else {
$xmlWriter->writeRaw($text);
}
$xmlWriter->endElement();
$xmlWriter->endElement();
@ -82,7 +87,11 @@ class PreserveText extends Text
$xmlWriter->startElement('w:t');
$xmlWriter->writeAttribute('xml:space', 'preserve');
$xmlWriter->writeRaw($this->getText($text));
if (Settings::isOutputEscapingEnabled()) {
$xmlWriter->text($this->getText($text));
} else {
$xmlWriter->writeRaw($this->getText($text));
}
$xmlWriter->endElement();
$xmlWriter->endElement();
}

View File

@ -58,9 +58,7 @@ class SDT extends Text
// Content
$xmlWriter->startElement('w:sdtContent');
$xmlWriter->startElement('w:r');
$xmlWriter->startElement('w:t');
$xmlWriter->writeRaw('Pick value');
$xmlWriter->endElement(); // w:t
$xmlWriter->writeElement('w:t', 'Pick value');
$xmlWriter->endElement(); // w:r
$xmlWriter->endElement(); // w:sdtContent

View File

@ -19,6 +19,7 @@ namespace PhpOffice\PhpWord\Writer\Word2007\Element;
use PhpOffice\Common\XMLWriter;
use PhpOffice\PhpWord\Element\TOC as TOCElement;
use PhpOffice\PhpWord\Settings;
use PhpOffice\PhpWord\Style\Font;
use PhpOffice\PhpWord\Writer\Word2007\Style\Font as FontStyleWriter;
use PhpOffice\PhpWord\Writer\Word2007\Style\Paragraph as ParagraphStyleWriter;
@ -99,9 +100,13 @@ class TOC extends AbstractElement
$styleWriter = new FontStyleWriter($xmlWriter, $fontStyle);
$styleWriter->write();
}
$xmlWriter->startElement('w:t');
$xmlWriter->writeRaw($title->getText());
$xmlWriter->endElement();
if (Settings::isOutputEscapingEnabled()) {
$xmlWriter->writeElement('w:t', $title->getText());
} else {
$xmlWriter->startElement('w:t');
$xmlWriter->writeRaw($title->getText());
$xmlWriter->endElement();
}
$xmlWriter->endElement(); // w:r
$xmlWriter->startElement('w:r');
@ -117,7 +122,7 @@ class TOC extends AbstractElement
$xmlWriter->startElement('w:r');
$xmlWriter->startElement('w:instrText');
$xmlWriter->writeAttribute('xml:space', 'preserve');
$xmlWriter->writeRaw("PAGEREF _Toc{$rId} \h");
$xmlWriter->text("PAGEREF _Toc{$rId} \h");
$xmlWriter->endElement();
$xmlWriter->endElement();
@ -200,7 +205,7 @@ class TOC extends AbstractElement
$xmlWriter->startElement('w:r');
$xmlWriter->startElement('w:instrText');
$xmlWriter->writeAttribute('xml:space', 'preserve');
$xmlWriter->writeRaw("TOC \o {$minDepth}-{$maxDepth} \h \z \u");
$xmlWriter->text("TOC \o {$minDepth}-{$maxDepth} \h \z \u");
$xmlWriter->endElement();
$xmlWriter->endElement();

View File

@ -16,6 +16,7 @@
*/
namespace PhpOffice\PhpWord\Writer\Word2007\Element;
use PhpOffice\PhpWord\Settings;
/**
* Text element writer
@ -45,7 +46,11 @@ class Text extends AbstractElement
$xmlWriter->startElement('w:t');
$xmlWriter->writeAttribute('xml:space', 'preserve');
$xmlWriter->writeRaw($this->getText($element->getText()));
if (Settings::isOutputEscapingEnabled()) {
$xmlWriter->text($this->getText($element->getText()));
} else {
$xmlWriter->writeRaw($this->getText($element->getText()));
}
$xmlWriter->endElement();
$xmlWriter->endElement(); // w:r

View File

@ -16,6 +16,7 @@
*/
namespace PhpOffice\PhpWord\Writer\Word2007\Element;
use PhpOffice\PhpWord\Settings;
/**
* TextRun element writer
@ -60,9 +61,13 @@ class Title extends AbstractElement
// Actual text
$xmlWriter->startElement('w:r');
$xmlWriter->startElement('w:t');
$xmlWriter->writeRaw($this->getText($element->getText()));
$xmlWriter->endElement();
if (Settings::isOutputEscapingEnabled()) {
$xmlWriter->writeElement('w:t', $this->getText($element->getText()));
} else {
$xmlWriter->startElement('w:t');
$xmlWriter->writeRaw($this->getText($element->getText()));
$xmlWriter->endElement();
}
$xmlWriter->endElement();
// Bookmark end

View File

@ -241,11 +241,13 @@ class Chart extends AbstractPart
foreach ($values as $value) {
$xmlWriter->startElement('c:pt');
$xmlWriter->writeAttribute('idx', $index);
$xmlWriter->startElement('c:v');
$xmlWriter->writeRaw($value);
$xmlWriter->endElement(); // c:v
if (\PhpOffice\PhpWord\Settings::isOutputEscapingEnabled()) {
$xmlWriter->writeElement('c:v', $value);
} else {
$xmlWriter->startElement('c:v');
$xmlWriter->writeRaw($value);
$xmlWriter->endElement();
}
$xmlWriter->endElement(); // c:pt
$index++;
}

View File

@ -54,13 +54,13 @@ class DocPropsCore extends AbstractPart
// dcterms:created
$xmlWriter->startElement('dcterms:created');
$xmlWriter->writeAttribute('xsi:type', 'dcterms:W3CDTF');
$xmlWriter->writeRaw(date($this->dateFormat, $phpWord->getDocInfo()->getCreated()));
$xmlWriter->text(date($this->dateFormat, $phpWord->getDocInfo()->getCreated()));
$xmlWriter->endElement();
// dcterms:modified
$xmlWriter->startElement('dcterms:modified');
$xmlWriter->writeAttribute('xsi:type', 'dcterms:W3CDTF');
$xmlWriter->writeRaw(date($this->dateFormat, $phpWord->getDocInfo()->getModified()));
$xmlWriter->text(date($this->dateFormat, $phpWord->getDocInfo()->getModified()));
$xmlWriter->endElement();
$xmlWriter->endElement(); // cp:coreProperties

View File

@ -60,9 +60,7 @@ class DocPropsCustom extends AbstractPart
$xmlWriter->writeElement('vt:bool', ($propertyValue) ? 'true' : 'false');
break;
case 'd':
$xmlWriter->startElement('vt:filetime');
$xmlWriter->writeRaw(date($this->dateFormat, $propertyValue));
$xmlWriter->endElement();
$xmlWriter->writeElement('vt:filetime', date($this->dateFormat, $propertyValue));
break;
default:
$xmlWriter->writeElement('vt:lpwstr', $propertyValue);

View File

@ -164,7 +164,7 @@ class Footnotes extends AbstractPart
$xmlWriter->startElement('w:r');
$xmlWriter->startElement('w:t');
$xmlWriter->writeAttribute('xml:space', 'preserve');
$xmlWriter->writeRaw(' ');
$xmlWriter->text(' ');
$xmlWriter->endElement(); // w:t
$xmlWriter->endElement(); // w:r

View File

@ -52,7 +52,7 @@ class CellTest extends \PHPUnit_Framework_TestCase
public function testAddText()
{
$oCell = new Cell();
$element = $oCell->addText(htmlspecialchars('text', ENT_COMPAT, 'UTF-8'));
$element = $oCell->addText('text');
$this->assertCount(1, $oCell->getElements());
$this->assertInstanceOf('PhpOffice\\PhpWord\\Element\\Text', $element);
@ -64,11 +64,11 @@ class CellTest extends \PHPUnit_Framework_TestCase
public function testAddTextNotUTF8()
{
$oCell = new Cell();
$element = $oCell->addText(utf8_decode(htmlspecialchars('ééé', ENT_COMPAT, 'UTF-8')));
$element = $oCell->addText(utf8_decode('ééé'));
$this->assertCount(1, $oCell->getElements());
$this->assertInstanceOf('PhpOffice\\PhpWord\\Element\\Text', $element);
$this->assertEquals(htmlspecialchars('ééé', ENT_COMPAT, 'UTF-8'), $element->getText());
$this->assertEquals('ééé', $element->getText());
}
/**
@ -77,7 +77,7 @@ class CellTest extends \PHPUnit_Framework_TestCase
public function testAddLink()
{
$oCell = new Cell();
$element = $oCell->addLink(utf8_decode('ééé'), utf8_decode(htmlspecialchars('ééé', ENT_COMPAT, 'UTF-8')));
$element = $oCell->addLink(utf8_decode('ééé'), utf8_decode('ééé'));
$this->assertCount(1, $oCell->getElements());
$this->assertInstanceOf('PhpOffice\\PhpWord\\Element\\Link', $element);
@ -100,11 +100,11 @@ class CellTest extends \PHPUnit_Framework_TestCase
public function testAddListItem()
{
$oCell = new Cell();
$element = $oCell->addListItem(htmlspecialchars('text', ENT_COMPAT, 'UTF-8'));
$element = $oCell->addListItem('text');
$this->assertCount(1, $oCell->getElements());
$this->assertInstanceOf('PhpOffice\\PhpWord\\Element\\ListItem', $element);
$this->assertEquals(htmlspecialchars('text', ENT_COMPAT, 'UTF-8'), $element->getTextObject()->getText());
$this->assertEquals('text', $element->getTextObject()->getText());
}
/**
@ -113,11 +113,11 @@ class CellTest extends \PHPUnit_Framework_TestCase
public function testAddListItemNotUTF8()
{
$oCell = new Cell();
$element = $oCell->addListItem(utf8_decode(htmlspecialchars('ééé', ENT_COMPAT, 'UTF-8')));
$element = $oCell->addListItem(utf8_decode('ééé'));
$this->assertCount(1, $oCell->getElements());
$this->assertInstanceOf('PhpOffice\\PhpWord\\Element\\ListItem', $element);
$this->assertEquals(htmlspecialchars('ééé', ENT_COMPAT, 'UTF-8'), $element->getTextObject()->getText());
$this->assertEquals('ééé', $element->getTextObject()->getText());
}
/**
@ -165,9 +165,7 @@ class CellTest extends \PHPUnit_Framework_TestCase
public function testAddImageSectionByUrl()
{
$oCell = new Cell();
$element = $oCell->addImage(
'http://php.net/images/logos/php-med-trans-light.gif'
);
$element = $oCell->addImage('http://php.net/images/logos/php-med-trans-light.gif');
$this->assertCount(1, $oCell->getElements());
$this->assertInstanceOf('PhpOffice\\PhpWord\\Element\\Image', $element);
@ -205,7 +203,7 @@ class CellTest extends \PHPUnit_Framework_TestCase
{
$oCell = new Cell();
$oCell->setDocPart('Header', 1);
$element = $oCell->addPreserveText(htmlspecialchars('text', ENT_COMPAT, 'UTF-8'));
$element = $oCell->addPreserveText('text');
$this->assertCount(1, $oCell->getElements());
$this->assertInstanceOf('PhpOffice\\PhpWord\\Element\\PreserveText', $element);
@ -218,11 +216,11 @@ class CellTest extends \PHPUnit_Framework_TestCase
{
$oCell = new Cell();
$oCell->setDocPart('Header', 1);
$element = $oCell->addPreserveText(utf8_decode(htmlspecialchars('ééé', ENT_COMPAT, 'UTF-8')));
$element = $oCell->addPreserveText(utf8_decode('ééé'));
$this->assertCount(1, $oCell->getElements());
$this->assertInstanceOf('PhpOffice\\PhpWord\\Element\\PreserveText', $element);
$this->assertEquals(array(htmlspecialchars('ééé', ENT_COMPAT, 'UTF-8')), $element->getText());
$this->assertEquals(array('ééé'), $element->getText());
}
/**
@ -234,7 +232,7 @@ class CellTest extends \PHPUnit_Framework_TestCase
{
$oCell = new Cell();
$oCell->setDocPart('Section', 1);
$oCell->addPreserveText(htmlspecialchars('text', ENT_COMPAT, 'UTF-8'));
$oCell->addPreserveText('text');
}
/**
@ -255,7 +253,7 @@ class CellTest extends \PHPUnit_Framework_TestCase
public function testAddCheckBox()
{
$oCell = new Cell();
$element = $oCell->addCheckBox(utf8_decode(htmlspecialchars('ééé', ENT_COMPAT, 'UTF-8')), utf8_decode(htmlspecialchars('ééé', ENT_COMPAT, 'UTF-8')));
$element = $oCell->addCheckBox(utf8_decode('ééé'), utf8_decode('ééé'));
$this->assertCount(1, $oCell->getElements());
$this->assertInstanceOf('PhpOffice\\PhpWord\\Element\\CheckBox', $element);

View File

@ -45,10 +45,10 @@ class CheckBoxTest extends \PHPUnit_Framework_TestCase
*/
public function testCheckBox()
{
$oCheckBox = new CheckBox(htmlspecialchars('chkBox', ENT_COMPAT, 'UTF-8'), htmlspecialchars('CheckBox', ENT_COMPAT, 'UTF-8'));
$oCheckBox = new CheckBox('chkBox', 'CheckBox');
$this->assertEquals(htmlspecialchars('chkBox', ENT_COMPAT, 'UTF-8'), $oCheckBox->getName());
$this->assertEquals(htmlspecialchars('CheckBox', ENT_COMPAT, 'UTF-8'), $oCheckBox->getText());
$this->assertEquals('chkBox', $oCheckBox->getName());
$this->assertEquals('CheckBox', $oCheckBox->getText());
}
/**
@ -56,7 +56,7 @@ class CheckBoxTest extends \PHPUnit_Framework_TestCase
*/
public function testFont()
{
$oCheckBox = new CheckBox(htmlspecialchars('chkBox', ENT_COMPAT, 'UTF-8'), htmlspecialchars('CheckBox', ENT_COMPAT, 'UTF-8'), 'fontStyle');
$oCheckBox = new CheckBox('chkBox', 'CheckBox', 'fontStyle');
$this->assertEquals('fontStyle', $oCheckBox->getFontStyle());
$oCheckBox->setFontStyle(array('bold' => true, 'italic' => true, 'size' => 16));
@ -69,7 +69,7 @@ class CheckBoxTest extends \PHPUnit_Framework_TestCase
public function testFontObject()
{
$font = new Font();
$oCheckBox = new CheckBox(htmlspecialchars('chkBox', ENT_COMPAT, 'UTF-8'), htmlspecialchars('CheckBox', ENT_COMPAT, 'UTF-8'), $font);
$oCheckBox = new CheckBox('chkBox', 'CheckBox', $font);
$this->assertEquals($font, $oCheckBox->getFontStyle());
}
@ -78,7 +78,7 @@ class CheckBoxTest extends \PHPUnit_Framework_TestCase
*/
public function testParagraph()
{
$oCheckBox = new CheckBox(htmlspecialchars('chkBox', ENT_COMPAT, 'UTF-8'), htmlspecialchars('CheckBox', ENT_COMPAT, 'UTF-8'), 'fontStyle', 'paragraphStyle');
$oCheckBox = new CheckBox('chkBox', 'CheckBox', 'fontStyle', 'paragraphStyle');
$this->assertEquals('paragraphStyle', $oCheckBox->getParagraphStyle());
$oCheckBox->setParagraphStyle(array('alignment' => Jc::CENTER, 'spaceAfter' => 100));

View File

@ -42,7 +42,7 @@ class FooterTest extends \PHPUnit_Framework_TestCase
public function testAddText()
{
$oFooter = new Footer(1);
$element = $oFooter->addText(htmlspecialchars('text', ENT_COMPAT, 'UTF-8'));
$element = $oFooter->addText('text');
$this->assertCount(1, $oFooter->getElements());
$this->assertInstanceOf('PhpOffice\\PhpWord\\Element\\Text', $element);
@ -54,11 +54,11 @@ class FooterTest extends \PHPUnit_Framework_TestCase
public function testAddTextNotUTF8()
{
$oFooter = new Footer(1);
$element = $oFooter->addText(utf8_decode(htmlspecialchars('ééé', ENT_COMPAT, 'UTF-8')));
$element = $oFooter->addText(utf8_decode('ééé'));
$this->assertCount(1, $oFooter->getElements());
$this->assertInstanceOf('PhpOffice\\PhpWord\\Element\\Text', $element);
$this->assertEquals(htmlspecialchars('ééé', ENT_COMPAT, 'UTF-8'), $element->getText());
$this->assertEquals('ééé', $element->getText());
}
/**
@ -116,9 +116,7 @@ class FooterTest extends \PHPUnit_Framework_TestCase
public function testAddImageByUrl()
{
$oFooter = new Footer(1);
$element = $oFooter->addImage(
'http://php.net/images/logos/php-med-trans-light.gif'
);
$element = $oFooter->addImage('http://php.net/images/logos/php-med-trans-light.gif');
$this->assertCount(1, $oFooter->getElements());
$this->assertInstanceOf('PhpOffice\\PhpWord\\Element\\Image', $element);
@ -130,7 +128,7 @@ class FooterTest extends \PHPUnit_Framework_TestCase
public function testAddPreserveText()
{
$oFooter = new Footer(1);
$element = $oFooter->addPreserveText(htmlspecialchars('text', ENT_COMPAT, 'UTF-8'));
$element = $oFooter->addPreserveText('text');
$this->assertCount(1, $oFooter->getElements());
$this->assertInstanceOf('PhpOffice\\PhpWord\\Element\\PreserveText', $element);
@ -142,11 +140,11 @@ class FooterTest extends \PHPUnit_Framework_TestCase
public function testAddPreserveTextNotUTF8()
{
$oFooter = new Footer(1);
$element = $oFooter->addPreserveText(utf8_decode(htmlspecialchars('ééé', ENT_COMPAT, 'UTF-8')));
$element = $oFooter->addPreserveText(utf8_decode('ééé'));
$this->assertCount(1, $oFooter->getElements());
$this->assertInstanceOf('PhpOffice\\PhpWord\\Element\\PreserveText', $element);
$this->assertEquals(array(htmlspecialchars('ééé', ENT_COMPAT, 'UTF-8')), $element->getText());
$this->assertEquals(array('ééé'), $element->getText());
}
/**

View File

@ -65,7 +65,7 @@ class FootnoteTest extends \PHPUnit_Framework_TestCase
public function testAddText()
{
$oFootnote = new Footnote();
$element = $oFootnote->addText(htmlspecialchars('text', ENT_COMPAT, 'UTF-8'));
$element = $oFootnote->addText('text');
$this->assertCount(1, $oFootnote->getElements());
$this->assertInstanceOf('PhpOffice\\PhpWord\\Element\\Text', $element);

View File

@ -43,11 +43,11 @@ class HeaderTest extends \PHPUnit_Framework_TestCase
public function testAddText()
{
$oHeader = new Header(1);
$element = $oHeader->addText(htmlspecialchars('text', ENT_COMPAT, 'UTF-8'));
$element = $oHeader->addText('text');
$this->assertInstanceOf('PhpOffice\\PhpWord\\Element\\Text', $element);
$this->assertCount(1, $oHeader->getElements());
$this->assertEquals(htmlspecialchars('text', ENT_COMPAT, 'UTF-8'), $element->getText());
$this->assertEquals('text', $element->getText());
}
/**
@ -56,11 +56,11 @@ class HeaderTest extends \PHPUnit_Framework_TestCase
public function testAddTextNotUTF8()
{
$oHeader = new Header(1);
$element = $oHeader->addText(utf8_decode(htmlspecialchars('ééé', ENT_COMPAT, 'UTF-8')));
$element = $oHeader->addText(utf8_decode('ééé'));
$this->assertInstanceOf('PhpOffice\\PhpWord\\Element\\Text', $element);
$this->assertCount(1, $oHeader->getElements());
$this->assertEquals(htmlspecialchars('ééé', ENT_COMPAT, 'UTF-8'), $element->getText());
$this->assertEquals('ééé', $element->getText());
}
/**
@ -125,9 +125,7 @@ class HeaderTest extends \PHPUnit_Framework_TestCase
public function testAddImageByUrl()
{
$oHeader = new Header(1);
$element = $oHeader->addImage(
'http://php.net/images/logos/php-med-trans-light.gif'
);
$element = $oHeader->addImage('http://php.net/images/logos/php-med-trans-light.gif');
$this->assertCount(1, $oHeader->getElements());
$this->assertInstanceOf('PhpOffice\\PhpWord\\Element\\Image', $element);
@ -139,7 +137,7 @@ class HeaderTest extends \PHPUnit_Framework_TestCase
public function testAddPreserveText()
{
$oHeader = new Header(1);
$element = $oHeader->addPreserveText(htmlspecialchars('text', ENT_COMPAT, 'UTF-8'));
$element = $oHeader->addPreserveText('text');
$this->assertCount(1, $oHeader->getElements());
$this->assertInstanceOf('PhpOffice\\PhpWord\\Element\\PreserveText', $element);
@ -151,11 +149,11 @@ class HeaderTest extends \PHPUnit_Framework_TestCase
public function testAddPreserveTextNotUTF8()
{
$oHeader = new Header(1);
$element = $oHeader->addPreserveText(utf8_decode(htmlspecialchars('ééé', ENT_COMPAT, 'UTF-8')));
$element = $oHeader->addPreserveText(utf8_decode('ééé'));
$this->assertCount(1, $oHeader->getElements());
$this->assertInstanceOf('PhpOffice\\PhpWord\\Element\\PreserveText', $element);
$this->assertEquals(array(htmlspecialchars('ééé', ENT_COMPAT, 'UTF-8')), $element->getText());
$this->assertEquals(array('ééé'), $element->getText());
}
/**

View File

@ -48,14 +48,14 @@ class LinkTest extends \PHPUnit_Framework_TestCase
{
$oLink = new Link(
'https://github.com/PHPOffice/PHPWord',
htmlspecialchars('PHPWord on GitHub', ENT_COMPAT, 'UTF-8'),
'PHPWord on GitHub',
array('color' => '0000FF', 'underline' => Font::UNDERLINE_SINGLE),
array('marginLeft' => 600, 'marginRight' => 600, 'marginTop' => 600, 'marginBottom' => 600)
);
$this->assertInstanceOf('PhpOffice\\PhpWord\\Element\\Link', $oLink);
$this->assertEquals('https://github.com/PHPOffice/PHPWord', $oLink->getSource());
$this->assertEquals(htmlspecialchars('PHPWord on GitHub', ENT_COMPAT, 'UTF-8'), $oLink->getText());
$this->assertEquals('PHPWord on GitHub', $oLink->getText());
$this->assertInstanceOf('PhpOffice\\PhpWord\\Style\\Font', $oLink->getFontStyle());
$this->assertInstanceOf('PhpOffice\\PhpWord\\Style\\Paragraph', $oLink->getParagraphStyle());
}

View File

@ -99,11 +99,11 @@ class ListItemRunTest extends \PHPUnit_Framework_TestCase
public function testAddText()
{
$oListItemRun = new ListItemRun();
$element = $oListItemRun->addText(htmlspecialchars('text', ENT_COMPAT, 'UTF-8'));
$element = $oListItemRun->addText('text');
$this->assertInstanceOf('PhpOffice\\PhpWord\\Element\\Text', $element);
$this->assertCount(1, $oListItemRun->getElements());
$this->assertEquals(htmlspecialchars('text', ENT_COMPAT, 'UTF-8'), $element->getText());
$this->assertEquals('text', $element->getText());
}
/**
@ -112,11 +112,11 @@ class ListItemRunTest extends \PHPUnit_Framework_TestCase
public function testAddTextNotUTF8()
{
$oListItemRun = new ListItemRun();
$element = $oListItemRun->addText(utf8_decode(htmlspecialchars('ééé', ENT_COMPAT, 'UTF-8')));
$element = $oListItemRun->addText(utf8_decode('ééé'));
$this->assertInstanceOf('PhpOffice\\PhpWord\\Element\\Text', $element);
$this->assertCount(1, $oListItemRun->getElements());
$this->assertEquals(htmlspecialchars('ééé', ENT_COMPAT, 'UTF-8'), $element->getText());
$this->assertEquals('ééé', $element->getText());
}
/**
@ -138,12 +138,12 @@ class ListItemRunTest extends \PHPUnit_Framework_TestCase
public function testAddLinkWithName()
{
$oListItemRun = new ListItemRun();
$element = $oListItemRun->addLink('https://github.com/PHPOffice/PHPWord', htmlspecialchars('PHPWord on GitHub', ENT_COMPAT, 'UTF-8'));
$element = $oListItemRun->addLink('https://github.com/PHPOffice/PHPWord', 'PHPWord on GitHub');
$this->assertInstanceOf('PhpOffice\\PhpWord\\Element\\Link', $element);
$this->assertCount(1, $oListItemRun->getElements());
$this->assertEquals('https://github.com/PHPOffice/PHPWord', $element->getSource());
$this->assertEquals(htmlspecialchars('PHPWord on GitHub', ENT_COMPAT, 'UTF-8'), $element->getText());
$this->assertEquals('PHPWord on GitHub', $element->getText());
}
/**

View File

@ -30,7 +30,7 @@ class ListItemTest extends \PHPUnit_Framework_TestCase
*/
public function testText()
{
$oListItem = new ListItem(htmlspecialchars('text', ENT_COMPAT, 'UTF-8'));
$oListItem = new ListItem('text');
$this->assertInstanceOf('PhpOffice\\PhpWord\\Element\\Text', $oListItem->getTextObject());
}
@ -40,12 +40,7 @@ class ListItemTest extends \PHPUnit_Framework_TestCase
*/
public function testStyle()
{
$oListItem = new ListItem(
htmlspecialchars('text', ENT_COMPAT, 'UTF-8'),
1,
null,
array('listType' => \PhpOffice\PhpWord\Style\ListItem::TYPE_NUMBER)
);
$oListItem = new ListItem('text', 1, null, array('listType' => \PhpOffice\PhpWord\Style\ListItem::TYPE_NUMBER));
$this->assertInstanceOf('PhpOffice\\PhpWord\\Style\\ListItem', $oListItem->getStyle());
$this->assertEquals(\PhpOffice\PhpWord\Style\ListItem::TYPE_NUMBER, $oListItem->getStyle()->getListType());
@ -57,7 +52,7 @@ class ListItemTest extends \PHPUnit_Framework_TestCase
public function testDepth()
{
$iVal = rand(1, 1000);
$oListItem = new ListItem(htmlspecialchars('text', ENT_COMPAT, 'UTF-8'), $iVal);
$oListItem = new ListItem('text', $iVal);
$this->assertEquals($iVal, $oListItem->getDepth());
}

View File

@ -44,8 +44,8 @@ class PreserveTextTest extends \PHPUnit_Framework_TestCase
*/
public function testConstructWithString()
{
$oPreserveText = new PreserveText(htmlspecialchars('text', ENT_COMPAT, 'UTF-8'), 'styleFont', 'styleParagraph');
$this->assertEquals(array(htmlspecialchars('text', ENT_COMPAT, 'UTF-8')), $oPreserveText->getText());
$oPreserveText = new PreserveText('text', 'styleFont', 'styleParagraph');
$this->assertEquals(array('text'), $oPreserveText->getText());
$this->assertEquals('styleFont', $oPreserveText->getFontStyle());
$this->assertEquals('styleParagraph', $oPreserveText->getParagraphStyle());
}
@ -55,11 +55,7 @@ class PreserveTextTest extends \PHPUnit_Framework_TestCase
*/
public function testConstructWithArray()
{
$oPreserveText = new PreserveText(
htmlspecialchars('text', ENT_COMPAT, 'UTF-8'),
array('size' => 16, 'color' => '1B2232'),
array('alignment' => Jc::CENTER)
);
$oPreserveText = new PreserveText('text', array('size' => 16, 'color' => '1B2232'), array('alignment' => Jc::CENTER));
$this->assertInstanceOf('PhpOffice\\PhpWord\\Style\\Font', $oPreserveText->getFontStyle());
$this->assertInstanceOf('PhpOffice\\PhpWord\\Style\\Paragraph', $oPreserveText->getParagraphStyle());
}

View File

@ -48,18 +48,18 @@ class SectionTest extends \PHPUnit_Framework_TestCase
$section = new Section(0);
$section->setPhpWord(new PhpWord());
$section->addText(utf8_decode(htmlspecialchars('ä', ENT_COMPAT, 'UTF-8')));
$section->addLink(utf8_decode('http://äää.com'), utf8_decode(htmlspecialchars('ä', ENT_COMPAT, 'UTF-8')));
$section->addText(utf8_decode('ä'));
$section->addLink(utf8_decode('http://äää.com'), utf8_decode('ä'));
$section->addTextBreak();
$section->addPageBreak();
$section->addTable();
$section->addListItem(utf8_decode(htmlspecialchars('ä', ENT_COMPAT, 'UTF-8')));
$section->addListItem(utf8_decode('ä'));
$section->addObject($objectSource);
$section->addImage($imageSource);
$section->addTitle(utf8_decode(htmlspecialchars('ä', ENT_COMPAT, 'UTF-8')), 1);
$section->addTitle(utf8_decode('ä'), 1);
$section->addTextRun();
$section->addFootnote();
$section->addCheckBox(utf8_decode(htmlspecialchars('chkä', ENT_COMPAT, 'UTF-8')), utf8_decode(htmlspecialchars('Contentä', ENT_COMPAT, 'UTF-8')));
$section->addCheckBox(utf8_decode('chkä'), utf8_decode('Contentä'));
$section->addTOC();
$elementCollection = $section->getElements();
@ -106,7 +106,7 @@ class SectionTest extends \PHPUnit_Framework_TestCase
Style::addTitleStyle(1, array('size' => 14));
$section = new Section(0);
$section->setPhpWord(new PhpWord());
$section->addTitle(htmlspecialchars('Test', ENT_COMPAT, 'UTF-8'), 1);
$section->addTitle('Test', 1);
$elementCollection = $section->getElements();
$this->assertInstanceOf('PhpOffice\\PhpWord\\Element\\Title', $elementCollection[0]);

View File

@ -84,7 +84,7 @@ class TOCTest extends \PHPUnit_Framework_TestCase
$phpWord = new PhpWord();
foreach ($titles as $text => $depth) {
$phpWord->addTitle(new Title(htmlspecialchars($text, ENT_COMPAT, 'UTF-8'), $depth));
$phpWord->addTitle(new Title($text, $depth));
}
$toc = new TOC();
$toc->setPhpWord($phpWord);

View File

@ -68,11 +68,11 @@ class TextRunTest extends \PHPUnit_Framework_TestCase
public function testAddText()
{
$oTextRun = new TextRun();
$element = $oTextRun->addText(htmlspecialchars('text', ENT_COMPAT, 'UTF-8'));
$element = $oTextRun->addText('text');
$this->assertInstanceOf('PhpOffice\\PhpWord\\Element\\Text', $element);
$this->assertCount(1, $oTextRun->getElements());
$this->assertEquals(htmlspecialchars('text', ENT_COMPAT, 'UTF-8'), $element->getText());
$this->assertEquals('text', $element->getText());
}
/**
@ -81,11 +81,11 @@ class TextRunTest extends \PHPUnit_Framework_TestCase
public function testAddTextNotUTF8()
{
$oTextRun = new TextRun();
$element = $oTextRun->addText(utf8_decode(htmlspecialchars('ééé', ENT_COMPAT, 'UTF-8')));
$element = $oTextRun->addText(utf8_decode('ééé'));
$this->assertInstanceOf('PhpOffice\\PhpWord\\Element\\Text', $element);
$this->assertCount(1, $oTextRun->getElements());
$this->assertEquals(htmlspecialchars('ééé', ENT_COMPAT, 'UTF-8'), $element->getText());
$this->assertEquals('ééé', $element->getText());
}
/**
@ -107,12 +107,12 @@ class TextRunTest extends \PHPUnit_Framework_TestCase
public function testAddLinkWithName()
{
$oTextRun = new TextRun();
$element = $oTextRun->addLink('https://github.com/PHPOffice/PHPWord', htmlspecialchars('PHPWord on GitHub', ENT_COMPAT, 'UTF-8'));
$element = $oTextRun->addLink('https://github.com/PHPOffice/PHPWord', 'PHPWord on GitHub');
$this->assertInstanceOf('PhpOffice\\PhpWord\\Element\\Link', $element);
$this->assertCount(1, $oTextRun->getElements());
$this->assertEquals('https://github.com/PHPOffice/PHPWord', $element->getSource());
$this->assertEquals(htmlspecialchars('PHPWord on GitHub', ENT_COMPAT, 'UTF-8'), $element->getText());
$this->assertEquals('PHPWord on GitHub', $element->getText());
}
/**

View File

@ -45,9 +45,9 @@ class TextTest extends \PHPUnit_Framework_TestCase
*/
public function testText()
{
$oText = new Text(htmlspecialchars('text', ENT_COMPAT, 'UTF-8'));
$oText = new Text('text');
$this->assertEquals(htmlspecialchars('text', ENT_COMPAT, 'UTF-8'), $oText->getText());
$this->assertEquals('text', $oText->getText());
}
/**
@ -55,7 +55,7 @@ class TextTest extends \PHPUnit_Framework_TestCase
*/
public function testFont()
{
$oText = new Text(htmlspecialchars('text', ENT_COMPAT, 'UTF-8'), 'fontStyle');
$oText = new Text('text', 'fontStyle');
$this->assertEquals('fontStyle', $oText->getFontStyle());
$oText->setFontStyle(array('bold' => true, 'italic' => true, 'size' => 16));
@ -68,7 +68,7 @@ class TextTest extends \PHPUnit_Framework_TestCase
public function testFontObject()
{
$font = new Font();
$oText = new Text(htmlspecialchars('text', ENT_COMPAT, 'UTF-8'), $font);
$oText = new Text('text', $font);
$this->assertEquals($font, $oText->getFontStyle());
}
@ -77,7 +77,7 @@ class TextTest extends \PHPUnit_Framework_TestCase
*/
public function testParagraph()
{
$oText = new Text(htmlspecialchars('text', ENT_COMPAT, 'UTF-8'), 'fontStyle', 'paragraphStyle');
$oText = new Text('text', 'fontStyle', 'paragraphStyle');
$this->assertEquals('paragraphStyle', $oText->getParagraphStyle());
$oText->setParagraphStyle(array('alignment' => Jc::CENTER, 'spaceAfter' => 100));

View File

@ -30,10 +30,10 @@ class TitleTest extends \PHPUnit_Framework_TestCase
*/
public function testConstruct()
{
$oTitle = new Title(htmlspecialchars('text', ENT_COMPAT, 'UTF-8'));
$oTitle = new Title('text');
$this->assertInstanceOf('PhpOffice\\PhpWord\\Element\\Title', $oTitle);
$this->assertEquals(htmlspecialchars('text', ENT_COMPAT, 'UTF-8'), $oTitle->getText());
$this->assertEquals('text', $oTitle->getText());
}
/**
@ -41,7 +41,7 @@ class TitleTest extends \PHPUnit_Framework_TestCase
*/
public function testStyleNull()
{
$oTitle = new Title(htmlspecialchars('text', ENT_COMPAT, 'UTF-8'));
$oTitle = new Title('text');
$this->assertNull($oTitle->getStyle());
}

View File

@ -120,12 +120,13 @@ class SettingsTest extends \PHPUnit_Framework_TestCase
public function testLoadConfig()
{
$expected = array(
'compatibility' => true,
'zipClass' => 'ZipArchive',
'pdfRendererName' => 'DomPDF',
'pdfRendererPath' => '',
'defaultFontName' => 'Arial',
'defaultFontSize' => 10,
'compatibility' => true,
'zipClass' => 'ZipArchive',
'pdfRendererName' => 'DomPDF',
'pdfRendererPath' => '',
'defaultFontName' => 'Arial',
'defaultFontSize' => 10,
'outputEscapingEnabled' => false,
);
// Test default value

View File

@ -41,9 +41,9 @@ class FontTest extends \PHPUnit_Framework_TestCase
*/
public function testInitiation()
{
$object = new Font(htmlspecialchars('text', ENT_COMPAT, 'UTF-8'), array('alignment' => Jc::BOTH));
$object = new Font('text', array('alignment' => Jc::BOTH));
$this->assertEquals(htmlspecialchars('text', ENT_COMPAT, 'UTF-8'), $object->getStyleType());
$this->assertEquals('text', $object->getStyleType());
$this->assertInstanceOf('PhpOffice\\PhpWord\\Style\\Paragraph', $object->getParagraphStyle());
$this->assertTrue(is_array($object->getStyleValues()));
}
@ -129,7 +129,7 @@ class FontTest extends \PHPUnit_Framework_TestCase
$section = $phpWord->addSection();
// Test style array
$text = $section->addText(htmlspecialchars('This is a test', ENT_COMPAT, 'UTF-8'), array('line-height' => 2.0));
$text = $section->addText('This is a test', array('line-height' => 2.0));
$doc = TestHelperDOCX::getDocument($phpWord);
$element = $doc->getElement('/w:document/w:body/w:p/w:pPr/w:spacing');

View File

@ -124,7 +124,7 @@ class ParagraphTest extends \PHPUnit_Framework_TestCase
$section = $phpWord->addSection();
// Test style array
$text = $section->addText(htmlspecialchars('This is a test', ENT_COMPAT, 'UTF-8'), array(), array('line-height' => 2.0));
$text = $section->addText('This is a test', array(), array('line-height' => 2.0));
$doc = TestHelperDOCX::getDocument($phpWord);
$element = $doc->getElement('/w:document/w:body/w:p/w:pPr/w:spacing');

View File

@ -116,7 +116,7 @@ final class TemplateProcessorTest extends \PHPUnit_Framework_TestCase
* We have to use error control below, because \XSLTProcessor::setParameter omits warning on failure.
* This warning fails the test.
*/
@$templateProcessor->applyXslStyleSheet($xslDOMDocument, array(1 => htmlspecialchars('somevalue', ENT_COMPAT, 'UTF-8')));
@$templateProcessor->applyXslStyleSheet($xslDOMDocument, array(1 => 'somevalue'));
}
/**
@ -157,9 +157,9 @@ final class TemplateProcessorTest extends \PHPUnit_Framework_TestCase
);
$docName = 'clone-test-result.docx';
$templateProcessor->setValue('tableHeader', utf8_decode(htmlspecialchars('ééé', ENT_COMPAT, 'UTF-8')));
$templateProcessor->setValue('tableHeader', utf8_decode('ééé'));
$templateProcessor->cloneRow('userId', 1);
$templateProcessor->setValue('userId#1', htmlspecialchars('Test', ENT_COMPAT, 'UTF-8'));
$templateProcessor->setValue('userId#1', 'Test');
$templateProcessor->saveAs($docName);
$docFound = file_exists($docName);
unlink($docName);
@ -178,11 +178,7 @@ final class TemplateProcessorTest extends \PHPUnit_Framework_TestCase
$this->assertEquals(array('documentContent', 'headerValue', 'footerValue'), $templateProcessor->getVariables());
$macroNames = array('headerValue', 'documentContent', 'footerValue');
$macroValues = array(
htmlspecialchars('Header Value', ENT_COMPAT, 'UTF-8'),
htmlspecialchars('Document text.', ENT_COMPAT, 'UTF-8'),
htmlspecialchars('Footer Value', ENT_COMPAT, 'UTF-8')
);
$macroValues = array('Header Value', 'Document text.', 'Footer Value');
$templateProcessor->setValue($macroNames, $macroValues);
$docName = 'header-footer-test-result.docx';

View File

@ -37,7 +37,7 @@ class DomPDFTest extends \PHPUnit_Framework_TestCase
$phpWord = new PhpWord();
$section = $phpWord->addSection();
$section->addText(htmlspecialchars('Test 1', ENT_COMPAT, 'UTF-8'));
$section->addText('Test 1');
$rendererName = Settings::PDF_RENDERER_DOMPDF;
$rendererLibraryPath = realpath(PHPWORD_TESTS_BASE_DIR . '/../vendor/dompdf/dompdf');

View File

@ -36,7 +36,7 @@ class MPDFTest extends \PHPUnit_Framework_TestCase
$phpWord = new PhpWord();
$section = $phpWord->addSection();
$section->addText(htmlspecialchars('Test 1', ENT_COMPAT, 'UTF-8'));
$section->addText('Test 1');
$rendererName = Settings::PDF_RENDERER_MPDF;
$rendererLibraryPath = realpath(PHPWORD_TESTS_BASE_DIR . '/../vendor/mpdf/mpdf');

View File

@ -36,7 +36,7 @@ class TCPDFTest extends \PHPUnit_Framework_TestCase
$phpWord = new PhpWord();
$section = $phpWord->addSection();
$section->addText(htmlspecialchars('Test 1', ENT_COMPAT, 'UTF-8'));
$section->addText('Test 1');
$rendererName = Settings::PDF_RENDERER_TCPDF;
$rendererLibraryPath = realpath(PHPWORD_TESTS_BASE_DIR . '/../vendor/tecnickcom/tcpdf');

View File

@ -202,9 +202,7 @@ class ElementTest extends \PHPUnit_Framework_TestCase
$section->addFormField('textinput')->setName('MyTextBox');
$section->addFormField('checkbox')->setDefault(true)->setValue('Your name');
$section->addFormField('dropdown')->setEntries(
array(htmlspecialchars('Choice 1', ENT_COMPAT, 'UTF-8'), htmlspecialchars('Choice 2', ENT_COMPAT, 'UTF-8'), htmlspecialchars('Choice 3', ENT_COMPAT, 'UTF-8'))
);
$section->addFormField('dropdown')->setEntries(array('Choice 1', 'Choice 2', 'Choice 3'));
$doc = TestHelperDOCX::getDocument($phpWord);

View File

@ -70,14 +70,14 @@ class DocumentTest extends \PHPUnit_Framework_TestCase
$section = $phpWord->addSection();
$section->addTOC();
$section->addPageBreak();
$section->addText(htmlspecialchars('After page break.', ENT_COMPAT, 'UTF-8'));
$section->addTitle(htmlspecialchars('Title 1', ENT_COMPAT, 'UTF-8'), 1);
$section->addListItem(htmlspecialchars('List Item 1', ENT_COMPAT, 'UTF-8'), 0);
$section->addListItem(htmlspecialchars('List Item 2', ENT_COMPAT, 'UTF-8'), 0);
$section->addListItem(htmlspecialchars('List Item 3', ENT_COMPAT, 'UTF-8'), 0);
$section->addText('After page break.');
$section->addTitle('Title 1', 1);
$section->addListItem('List Item 1', 0);
$section->addListItem('List Item 2', 0);
$section->addListItem('List Item 3', 0);
$section = $phpWord->addSection();
$section->addTitle(htmlspecialchars('Title 2', ENT_COMPAT, 'UTF-8'), 2);
$section->addTitle('Title 2', 2);
$section->addObject($objectSrc);
$section->addTextBox(array());
$section->addTextBox(
@ -92,7 +92,7 @@ class DocumentTest extends \PHPUnit_Framework_TestCase
)
);
$section->addTextBox(array('wrappingStyle' => 'tight', 'positioning' => 'absolute', 'alignment' => Jc::CENTER));
$section->addListItemRun()->addText(htmlspecialchars('List item run 1', ENT_COMPAT, 'UTF-8'));
$section->addListItemRun()->addText('List item run 1');
$section->addField(
'DATE',
array('dateformat' => 'dddd d MMMM yyyy H:mm:ss'),
@ -180,10 +180,10 @@ class DocumentTest extends \PHPUnit_Framework_TestCase
$fontStyle = new Font('text', array('alignment' => Jc::CENTER));
$section = $phpWord->addSection();
$section->addListItem(htmlspecialchars('List Item', ENT_COMPAT, 'UTF-8'), 0, null, null, 'pStyle'); // Style #5
$section->addListItem('List Item', 0, null, null, 'pStyle'); // Style #5
$section->addObject($objectSrc, array('alignment' => Jc::CENTER));
$section->addTOC($fontStyle);
$section->addTitle(htmlspecialchars('Title 1', ENT_COMPAT, 'UTF-8'), 1);
$section->addTitle('Title 1', 1);
$section->addTOC('fStyle');
$table = $section->addTable('tStyle');
$table->setWidth(100);
@ -216,7 +216,7 @@ class DocumentTest extends \PHPUnit_Framework_TestCase
$phpWord->addFontStyle($rStyle, array('bold' => true));
$phpWord->addParagraphStyle($pStyle, array('hanging' => 120, 'indent' => 120));
$section = $phpWord->addSection();
$section->addText(htmlspecialchars('Test', ENT_COMPAT, 'UTF-8'), $rStyle, $pStyle);
$section->addText('Test', $rStyle, $pStyle);
$doc = TestHelperDOCX::getDocument($phpWord);
$element = '/w:document/w:body/w:p/w:r/w:rPr/w:rStyle';
@ -236,9 +236,9 @@ class DocumentTest extends \PHPUnit_Framework_TestCase
$phpWord = new PhpWord();
$phpWord->addParagraphStyle($pStyle, $aStyle);
$section = $phpWord->addSection(htmlspecialchars('Test', ENT_COMPAT, 'UTF-8'));
$section = $phpWord->addSection('Test');
$textrun = $section->addTextRun($pStyle);
$textrun->addText(htmlspecialchars('Test', ENT_COMPAT, 'UTF-8'));
$textrun->addText('Test');
$textrun->addTextBreak();
$textrun = $section->addTextRun($aStyle);
$textrun->addLink('https://github.com/PHPOffice/PHPWord');
@ -263,24 +263,14 @@ class DocumentTest extends \PHPUnit_Framework_TestCase
$paragraphStyleName = 'Paragraph Style';
$expected = 'PHPWord on GitHub';
$section->addLink('https://github.com/PHPOffice/PHPWord', htmlspecialchars($expected, ENT_COMPAT, 'UTF-8'));
$section->addLink(
'https://github.com/PHPOffice/PHPWord',
htmlspecialchars('Test', ENT_COMPAT, 'UTF-8'),
$fontStyleArray,
$paragraphStyleArray
);
$section->addLink(
'https://github.com/PHPOffice/PHPWord',
htmlspecialchars('Test', ENT_COMPAT, 'UTF-8'),
$fontStyleName,
$paragraphStyleName
);
$section->addLink('https://github.com/PHPOffice/PHPWord', $expected);
$section->addLink('https://github.com/PHPOffice/PHPWord', 'Test', $fontStyleArray, $paragraphStyleArray);
$section->addLink('https://github.com/PHPOffice/PHPWord', 'Test', $fontStyleName, $paragraphStyleName);
$doc = TestHelperDOCX::getDocument($phpWord);
$element = $doc->getElement('/w:document/w:body/w:p/w:hyperlink/w:r/w:t');
$this->assertEquals(htmlspecialchars($expected, ENT_COMPAT, 'UTF-8'), $element->nodeValue);
$this->assertEquals($expected, $element->nodeValue);
}
/**
@ -296,9 +286,9 @@ class DocumentTest extends \PHPUnit_Framework_TestCase
$paragraphStyleArray = array('alignment' => Jc::END);
$paragraphStyleName = 'Paragraph';
$footer->addPreserveText(htmlspecialchars('Page {PAGE}', ENT_COMPAT, 'UTF-8'));
$footer->addPreserveText(htmlspecialchars('{PAGE}', ENT_COMPAT, 'UTF-8'), $fontStyleArray, $paragraphStyleArray);
$footer->addPreserveText(htmlspecialchars('{PAGE}', ENT_COMPAT, 'UTF-8'), $fontStyleName, $paragraphStyleName);
$footer->addPreserveText('Page {PAGE}');
$footer->addPreserveText('{PAGE}', $fontStyleArray, $paragraphStyleArray);
$footer->addPreserveText('{PAGE}', $fontStyleName, $paragraphStyleName);
$doc = TestHelperDOCX::getDocument($phpWord);
$preserve = $doc->getElement('w:p/w:r[2]/w:instrText', 'word/footer1.xml');
@ -387,7 +377,7 @@ class DocumentTest extends \PHPUnit_Framework_TestCase
{
$phpWord = new PhpWord();
$phpWord->addTitleStyle(1, array('bold' => true), array('spaceAfter' => 240));
$phpWord->addSection()->addTitle(htmlspecialchars('Test', ENT_COMPAT, 'UTF-8'), 1);
$phpWord->addSection()->addTitle('Test', 1);
$doc = TestHelperDOCX::getDocument($phpWord);
$element = '/w:document/w:body/w:p/w:pPr/w:pStyle';
@ -406,11 +396,11 @@ class DocumentTest extends \PHPUnit_Framework_TestCase
// $phpWord->addFontStyle($rStyle, array('bold' => true));
// $phpWord->addParagraphStyle($pStyle, array('hanging' => 120, 'indent' => 120));
$section = $phpWord->addSection();
$section->addCheckBox(htmlspecialchars('Check1', ENT_COMPAT, 'UTF-8'), htmlspecialchars('Test', ENT_COMPAT, 'UTF-8'), $rStyle, $pStyle);
$section->addCheckBox('Check1', 'Test', $rStyle, $pStyle);
$doc = TestHelperDOCX::getDocument($phpWord);
$element = '/w:document/w:body/w:p/w:r/w:fldChar/w:ffData/w:name';
$this->assertEquals(htmlspecialchars('Check1', ENT_COMPAT, 'UTF-8'), $doc->getElementAttribute($element, 'w:val'));
$this->assertEquals('Check1', $doc->getElementAttribute($element, 'w:val'));
}
/**
@ -429,7 +419,7 @@ class DocumentTest extends \PHPUnit_Framework_TestCase
'pageBreakBefore' => true,
);
foreach ($attributes as $attribute => $value) {
$section->addText(htmlspecialchars('Test', ENT_COMPAT, 'UTF-8'), null, array($attribute => $value));
$section->addText('Test', null, array($attribute => $value));
}
$doc = TestHelperDOCX::getDocument($phpWord);
@ -467,7 +457,7 @@ class DocumentTest extends \PHPUnit_Framework_TestCase
$styles['smallCaps'] = true;
$section = $phpWord->addSection();
$section->addText(htmlspecialchars('Test', ENT_COMPAT, 'UTF-8'), $styles);
$section->addText('Test', $styles);
$doc = TestHelperDOCX::getDocument($phpWord);
$parent = '/w:document/w:body/w:p/w:r/w:rPr';
@ -519,14 +509,14 @@ class DocumentTest extends \PHPUnit_Framework_TestCase
$table->setWidth = 100;
$table->addRow($rHeight, $rStyles);
$cell = $table->addCell($cWidth, $cStyles);
$cell->addText(htmlspecialchars('Test', ENT_COMPAT, 'UTF-8'));
$cell->addText('Test');
$cell->addTextBreak();
$cell->addLink('https://github.com/PHPOffice/PHPWord');
$cell->addListItem(htmlspecialchars('Test', ENT_COMPAT, 'UTF-8'));
$cell->addListItem('Test');
$cell->addImage($imageSrc);
$cell->addObject($objectSrc);
$textrun = $cell->addTextRun();
$textrun->addText(htmlspecialchars('Test', ENT_COMPAT, 'UTF-8'));
$textrun->addText('Test');
$doc = TestHelperDOCX::getDocument($phpWord);

View File

@ -33,11 +33,11 @@ class FooterTest extends \PHPUnit_Framework_TestCase
{
$imageSrc = __DIR__ . '/../../../_files/images/PhpWord.png';
$container = new \PhpOffice\PhpWord\Element\Footer(1);
$container->addText(htmlspecialchars('', ENT_COMPAT, 'UTF-8'));
$container->addPreserveText(htmlspecialchars('', ENT_COMPAT, 'UTF-8'));
$container->addText('');
$container->addPreserveText('');
$container->addTextBreak();
$container->addTextRun();
$container->addTable()->addRow()->addCell()->addText(htmlspecialchars('', ENT_COMPAT, 'UTF-8'));
$container->addTable()->addRow()->addCell()->addText('');
$container->addImage($imageSrc);
$writer = new Word2007();

View File

@ -36,13 +36,13 @@ class FootnotesTest extends \PHPUnit_Framework_TestCase
$phpWord = new PhpWord();
$phpWord->addParagraphStyle('pStyle', array('alignment' => Jc::START));
$section = $phpWord->addSection();
$section->addText(htmlspecialchars('Text', ENT_COMPAT, 'UTF-8'));
$section->addText('Text');
$footnote1 = $section->addFootnote('pStyle');
$footnote1->addText(htmlspecialchars('Footnote', ENT_COMPAT, 'UTF-8'));
$footnote1->addText('Footnote');
$footnote1->addTextBreak();
$footnote1->addLink('https://github.com/PHPOffice/PHPWord');
$footnote2 = $section->addEndnote(array('alignment' => Jc::START));
$footnote2->addText(htmlspecialchars('Endnote', ENT_COMPAT, 'UTF-8'));
$footnote2->addText('Endnote');
$doc = TestHelperDOCX::getDocument($phpWord);
$this->assertTrue($doc->elementExists('/w:document/w:body/w:p/w:r/w:footnoteReference'));

View File

@ -33,11 +33,11 @@ class HeaderTest extends \PHPUnit_Framework_TestCase
$imageSrc = __DIR__ . '/../../../_files/images/PhpWord.png';
$container = new \PhpOffice\PhpWord\Element\Header(1);
$container->addText(htmlspecialchars('Test', ENT_COMPAT, 'UTF-8'));
$container->addPreserveText(htmlspecialchars('', ENT_COMPAT, 'UTF-8'));
$container->addText('Test');
$container->addPreserveText('');
$container->addTextBreak();
$container->addTextRun();
$container->addTable()->addRow()->addCell()->addText(htmlspecialchars('', ENT_COMPAT, 'UTF-8'));
$container->addTable()->addRow()->addCell()->addText('');
$container->addImage($imageSrc);
$container->addWatermark($imageSrc);

View File

@ -42,7 +42,7 @@ class FontTest extends \PHPUnit_Framework_TestCase
$phpWord = new \PhpOffice\PhpWord\PhpWord();
$section = $phpWord->addSection();
$textrun = $section->addTextRun();
$textrun->addText(htmlspecialchars('سلام این یک پاراگراف راست به چپ است', ENT_COMPAT, 'UTF-8'), array('rtl' => true));
$textrun->addText('سلام این یک پاراگراف راست به چپ است', array('rtl' => true));
$doc = TestHelperDOCX::getDocument($phpWord, 'Word2007');
$file = 'word/document.xml';

View File

@ -79,12 +79,12 @@ class Word2007Test extends \PHPUnit_Framework_TestCase
$phpWord->addFontStyle('Font', array('size' => 11));
$phpWord->addParagraphStyle('Paragraph', array('alignment' => Jc::CENTER));
$section = $phpWord->addSection();
$section->addText(htmlspecialchars('Test 1', ENT_COMPAT, 'UTF-8'), 'Font', 'Paragraph');
$section->addText('Test 1', 'Font', 'Paragraph');
$section->addTextBreak();
$section->addText(htmlspecialchars('Test 2', ENT_COMPAT, 'UTF-8'));
$section->addText('Test 2');
$section = $phpWord->addSection();
$textrun = $section->addTextRun();
$textrun->addText(htmlspecialchars('Test 3', ENT_COMPAT, 'UTF-8'));
$textrun->addText('Test 3');
$footnote = $textrun->addFootnote();
$footnote->addLink('https://github.com/PHPOffice/PHPWord');
$header = $section->addHeader();
@ -108,9 +108,9 @@ class Word2007Test extends \PHPUnit_Framework_TestCase
{
$phpWord = new PhpWord();
$section = $phpWord->addSection();
$section->addText(htmlspecialchars('Test', ENT_COMPAT, 'UTF-8'));
$section->addText('Test');
$footnote = $section->addFootnote();
$footnote->addText(htmlspecialchars('Test', ENT_COMPAT, 'UTF-8'));
$footnote->addText('Test');
$writer = new Word2007($phpWord);
$writer->setUseDiskCaching(true);