<?php
namespace Mpdf\Tag;
use Mpdf\Mpdf;
class TextArea extends Tag
{
public function open($attr, &$ahtml, &$ihtml)
{
$objattr = [];
$objattr['margin_top'] = 0;
$objattr['margin_bottom'] = 0;
$objattr['margin_left'] = 0;
$objattr['margin_right'] = 0;
$objattr['width'] = 0;
$objattr['height'] = 0;
$objattr['border_top']['w'] = 0;
$objattr['border_bottom']['w'] = 0;
$objattr['border_left']['w'] = 0;
$objattr['border_right']['w'] = 0;
if (isset($attr['DISABLED'])) {
$objattr['disabled'] = true;
}
if (isset($attr['READONLY'])) {
$objattr['readonly'] = true;
}
if (isset($attr['REQUIRED'])) {
$objattr['required'] = true;
}
if (isset($attr['SPELLCHECK']) && strtolower($attr['SPELLCHECK']) === 'true') {
$objattr['spellcheck'] = true;
}
if (isset($attr['TITLE'])) {
$objattr['title'] = $attr['TITLE'];
if ($this->mpdf->onlyCoreFonts) {
$objattr['title'] = mb_convert_encoding($objattr['title'], $this->mpdf->mb_enc, 'UTF-8');
}
}
if ($this->mpdf->useActiveForms) {
if (isset($attr['NAME'])) {
$objattr['fieldname'] = $attr['NAME'];
}
$this->form->form_element_spacing['textarea']['outer']['v'] = 0;
$this->form->form_element_spacing['textarea']['inner']['v'] = 0;
if (isset($attr['ONCALCULATE'])) {
$objattr['onCalculate'] = $attr['ONCALCULATE'];
} elseif (isset($attr['ONCHANGE'])) {
$objattr['onCalculate'] = $attr['ONCHANGE'];
}
if (isset($attr['ONVALIDATE'])) {
$objattr['onValidate'] = $attr['ONVALIDATE'];
}
if (isset($attr['ONKEYSTROKE'])) {
$objattr['onKeystroke'] = $attr['ONKEYSTROKE'];
}
if (isset($attr['ONFORMAT'])) {
$objattr['onFormat'] = $attr['ONFORMAT'];
}
}
$this->mpdf->InlineProperties['TEXTAREA'] = $this->mpdf->saveInlineProperties();
$properties = $this->cssManager->MergeCSS('', 'TEXTAREA', $attr);
if (isset($properties['FONT-FAMILY'])) {
$this->mpdf->SetFont($properties['FONT-FAMILY'], '', 0, false);
}
if (isset($properties['FONT-SIZE']) && $properties['FONT-SIZE'] !== 'auto') {
$mmsize = $this->sizeConverter->convert($properties['FONT-SIZE'], $this->mpdf->default_font_size / Mpdf::SCALE);
$this->mpdf->SetFontSize($mmsize * Mpdf::SCALE, false);
}
if (isset($properties['COLOR'])) {
$objattr['color'] = $this->colorConverter->convert($properties['COLOR'], $this->mpdf->PDFAXwarnings);
}
$objattr['fontfamily'] = $this->mpdf->FontFamily;
$objattr['fontsize'] = $this->mpdf->FontSizePt;
if ($this->mpdf->useActiveForms) {
if (isset($properties['TEXT-ALIGN'])) {
$objattr['text_align'] = $this->getAlign($properties['TEXT-ALIGN']);
} elseif (isset($attr['ALIGN'])) {
$objattr['text_align'] = $this->getAlign($attr['ALIGN']);
}
if (isset($properties['OVERFLOW']) && strtolower($properties['OVERFLOW']) === 'hidden') {
$objattr['donotscroll'] = true;
}
if (isset($properties['BORDER-TOP-COLOR'])) {
$objattr['border-col'] = $this->colorConverter->convert($properties['BORDER-TOP-COLOR'], $this->mpdf->PDFAXwarnings);
}
if (isset($properties['BACKGROUND-COLOR'])) {
$objattr['background-col'] = $this->colorConverter->convert($properties['BACKGROUND-COLOR'], $this->mpdf->PDFAXwarnings);
}
}
$this->mpdf->SetLineHeight('', $this->form->textarea_lineheight);
$w = 0;
$h = 0;
if (isset($properties['WIDTH'])) {
$w = $this->sizeConverter->convert(
$properties['WIDTH'],
$this->mpdf->blk[$this->mpdf->blklvl]['inner_width'],
$this->mpdf->FontSize,
false
);
}
if (isset($properties['HEIGHT'])) {
$h = $this->sizeConverter->convert(
$properties['HEIGHT'],
$this->mpdf->blk[$this->mpdf->blklvl]['inner_width'],
$this->mpdf->FontSize,
false
);
}
if (isset($properties['VERTICAL-ALIGN'])) {
$objattr['vertical-align'] = $this->getAlign($properties['VERTICAL-ALIGN']);
}
$colsize = 20; //HTML default value
$rowsize = 2; //HTML default value
if (isset($attr['COLS'])) {
$colsize = (int) $attr['COLS'];
}
if (isset($attr['ROWS'])) {
$rowsize = (int) $attr['ROWS'];
}
$charsize = $this->mpdf->GetCharWidth('w', false);
if ($w) {
$colsize = round(($w - ($this->form->form_element_spacing['textarea']['outer']['h'] * 2)
- ($this->form->form_element_spacing['textarea']['inner']['h'] * 2)) / $charsize);
}
if ($h) {
$rowsize = round(($h - ($this->form->form_element_spacing['textarea']['outer']['v'] * 2)
- ($this->form->form_element_spacing['textarea']['inner']['v'] * 2)) / $this->mpdf->lineheight);
}
$objattr['type'] = 'textarea';
$objattr['width'] = ($colsize * $charsize) + ($this->form->form_element_spacing['textarea']['outer']['h'] * 2)
+ ($this->form->form_element_spacing['textarea']['inner']['h'] * 2);
$objattr['height'] = ($rowsize * $this->mpdf->lineheight)
+ ($this->form->form_element_spacing['textarea']['outer']['v'] * 2)
+ ($this->form->form_element_spacing['textarea']['inner']['v'] * 2);
$objattr['rows'] = $rowsize;
$objattr['cols'] = $colsize;
if ($properties['FONT-SIZE'] === 'auto' && $this->mpdf->useActiveForms) {
$objattr['use_auto_fontsize'] = true;
}
$this->mpdf->specialcontent = serialize($objattr);
if ($this->mpdf->tableLevel) { // *TABLES*
$this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['s'] += $objattr['width']; // *TABLES*
} // *TABLES*
}
public function close(&$ahtml, &$ihtml)
{
$this->mpdf->ignorefollowingspaces = false;
$this->mpdf->specialcontent = '';
if ($this->mpdf->InlineProperties['TEXTAREA']) {
$this->mpdf->restoreInlineProperties($this->mpdf->InlineProperties['TEXTAREA']);
}
unset($this->mpdf->InlineProperties['TEXTAREA']);
}
}
|