diff --git a/src/PhpWord/Shared/Html.php b/src/PhpWord/Shared/Html.php
index 659298ff05..eabd102d61 100644
--- a/src/PhpWord/Shared/Html.php
+++ b/src/PhpWord/Shared/Html.php
@@ -193,6 +193,7 @@ protected static function parseNode($node, $element, $styles = array(), $data =
'img' => array('Image', $node, $element, $styles, null, null, null),
'br' => array('LineBreak', null, $element, $styles, null, null, null),
'a' => array('Link', $node, $element, $styles, null, null, null),
+ 'input' => array('Input', $node, $element, $styles, null, null, null),
'hr' => array('HorizRule', $node, $element, $styles, null, null, null),
);
@@ -266,6 +267,30 @@ protected static function parseParagraph($node, $element, &$styles)
return $newElement;
}
+ /**
+ * Parse input node
+ *
+ * @param \DOMNode $node
+ * @param \PhpOffice\PhpWord\Element\AbstractContainer $element
+ * @param array &$styles
+ */
+ protected static function parseInput($node, $element, &$styles)
+ {
+ $attributes = $node->attributes;
+ if (null === $attributes->getNamedItem('type')) {
+ return;
+ }
+
+ $inputType = $attributes->getNamedItem('type')->value;
+ switch ($inputType) {
+ case 'checkbox':
+ $checked = ($checked = $attributes->getNamedItem('checked')) && $checked->value === 'true' ? true : false;
+ $textrun = $element->addTextRun($styles['paragraph']);
+ $textrun->addFormField('checkbox')->setValue($checked);
+ break;
+ }
+ }
+
/**
* Parse heading node
*
diff --git a/tests/PhpWord/Shared/HtmlTest.php b/tests/PhpWord/Shared/HtmlTest.php
index 43c60f087a..c6061632e2 100644
--- a/tests/PhpWord/Shared/HtmlTest.php
+++ b/tests/PhpWord/Shared/HtmlTest.php
@@ -639,6 +639,25 @@ public function testParseLetterSpacing()
$this->assertEquals(150 * 15, $doc->getElement('/w:document/w:body/w:p/w:r/w:rPr/w:spacing')->getAttribute('w:val'));
}
+ /**
+ * Tests checkbox input field
+ */
+ public function testInputCheckbox()
+ {
+ $phpWord = new \PhpOffice\PhpWord\PhpWord();
+ $section = $phpWord->addSection();
+ $html = '';
+ Html::addHtml($section, $html);
+
+ $doc = TestHelperDOCX::getDocument($phpWord, 'Word2007');
+
+ $this->assertTrue($doc->elementExists('/w:document/w:body/w:p[1]/w:r/w:fldChar/w:ffData/w:checkBox'));
+ $this->assertEquals(1, $doc->getElement('/w:document/w:body/w:p[1]/w:r/w:fldChar/w:ffData/w:checkBox/w:checked')->getAttribute('w:val'));
+
+ $this->assertTrue($doc->elementExists('/w:document/w:body/w:p[2]/w:r/w:fldChar/w:ffData/w:checkBox'));
+ $this->assertEquals(0, $doc->getElement('/w:document/w:body/w:p[2]/w:r/w:fldChar/w:ffData/w:checkBox/w:checked')->getAttribute('w:val'));
+ }
+
/**
* Parse widths in tables and cells, which also allows for controlling column width
*/