1<?php
2namespace Dompdf;
3
4class Options
5{
6    /**
7     * The root of your DOMPDF installation
8     *
9     * @var string
10     */
11    private $rootDir;
12
13    /**
14     * The location of a temporary directory.
15     *
16     * The directory specified must be writable by the webserver process.
17     * The temporary directory is required to download remote images and when
18     * using the PFDLib back end.
19     *
20     * @var string
21     */
22    private $tempDir;
23
24    /**
25     * The location of the DOMPDF font directory
26     *
27     * The location of the directory where DOMPDF will store fonts and font metrics
28     * Note: This directory must exist and be writable by the webserver process.
29     *
30     * @var string
31     */
32    private $fontDir;
33
34    /**
35     * The location of the DOMPDF font cache directory
36     *
37     * This directory contains the cached font metrics for the fonts used by DOMPDF.
38     * This directory can be the same as $fontDir
39     *
40     * Note: This directory must exist and be writable by the webserver process.
41     *
42     * @var string
43     */
44    private $fontCache;
45
46    /**
47     * dompdf's "chroot"
48     *
49     * Prevents dompdf from accessing system files or other files on the webserver.
50     * All local files opened by dompdf must be in a subdirectory of this directory.
51     * DO NOT set it to '/' since this could allow an attacker to use dompdf to
52     * read any files on the server.  This should be an absolute path.
53     *
54     * ==== IMPORTANT ====
55     * This setting may increase the risk of system exploit. Do not change
56     * this settings without understanding the consequences. Additional
57     * documentation is available on the dompdf wiki at:
58     * https://github.com/dompdf/dompdf/wiki
59     *
60     * @var string
61     */
62    private $chroot;
63
64    /**
65     * @var string
66     */
67    private $logOutputFile;
68
69    /**
70     * html target media view which should be rendered into pdf.
71     * List of types and parsing rules for future extensions:
72     * http://www.w3.org/TR/REC-html40/types.html
73     *   screen, tty, tv, projection, handheld, print, braille, aural, all
74     * Note: aural is deprecated in CSS 2.1 because it is replaced by speech in CSS 3.
75     * Note, even though the generated pdf file is intended for print output,
76     * the desired content might be different (e.g. screen or projection view of html file).
77     * Therefore allow specification of content here.
78     *
79     * @var string
80     */
81    private $defaultMediaType = "screen";
82
83    /**
84     * The default paper size.
85     *
86     * North America standard is "letter"; other countries generally "a4"
87     * @see \Dompdf\Adapter\CPDF::PAPER_SIZES for valid sizes
88     *
89     * @var string
90     */
91    private $defaultPaperSize = "letter";
92
93    /**
94     * The default paper orientation.
95     *
96     * The orientation of the page (portrait or landscape).
97     *
98     * @var string
99     */
100    private $defaultPaperOrientation = "portrait";
101
102    /**
103     * The default font family
104     *
105     * Used if no suitable fonts can be found. This must exist in the font folder.
106     *
107     * @var string
108     */
109    private $defaultFont = "serif";
110
111    /**
112     * Image DPI setting
113     *
114     * This setting determines the default DPI setting for images and fonts.  The
115     * DPI may be overridden for inline images by explicitly setting the
116     * image's width & height style attributes (i.e. if the image's native
117     * width is 600 pixels and you specify the image's width as 72 points,
118     * the image will have a DPI of 600 in the rendered PDF.  The DPI of
119     * background images can not be overridden and is controlled entirely
120     * via this parameter.
121     *
122     * For the purposes of DOMPDF, pixels per inch (PPI) = dots per inch (DPI).
123     * If a size in html is given as px (or without unit as image size),
124     * this tells the corresponding size in pt at 72 DPI.
125     * This adjusts the relative sizes to be similar to the rendering of the
126     * html page in a reference browser.
127     *
128     * In pdf, always 1 pt = 1/72 inch
129     *
130     * @var int
131     */
132    private $dpi = 96;
133
134    /**
135     * A ratio applied to the fonts height to be more like browsers' line height
136     *
137     * @var float
138     */
139    private $fontHeightRatio = 1.1;
140
141    /**
142     * Enable embedded PHP
143     *
144     * If this setting is set to true then DOMPDF will automatically evaluate
145     * embedded PHP contained within <script type="text/php"> ... </script> tags.
146     *
147     * ==== IMPORTANT ====
148     * Enabling this for documents you do not trust (e.g. arbitrary remote html
149     * pages) is a security risk. Embedded scripts are run with the same level of
150     * system access available to dompdf. Set this option to false (recommended)
151     * if you wish to process untrusted documents.
152     *
153     * This setting may increase the risk of system exploit. Do not change
154     * this settings without understanding the consequences. Additional
155     * documentation is available on the dompdf wiki at:
156     * https://github.com/dompdf/dompdf/wiki
157     *
158     * @var bool
159     */
160    private $isPhpEnabled = false;
161
162    /**
163     * Enable remote file access
164     *
165     * If this setting is set to true, DOMPDF will access remote sites for
166     * images and CSS files as required.
167     *
168     * ==== IMPORTANT ====
169     * This can be a security risk, in particular in combination with isPhpEnabled and
170     * allowing remote html code to be passed to $dompdf = new DOMPDF(); $dompdf->load_html(...);
171     * This allows anonymous users to download legally doubtful internet content which on
172     * tracing back appears to being downloaded by your server, or allows malicious php code
173     * in remote html pages to be executed by your server with your account privileges.
174     *
175     * This setting may increase the risk of system exploit. Do not change
176     * this settings without understanding the consequences. Additional
177     * documentation is available on the dompdf wiki at:
178     * https://github.com/dompdf/dompdf/wiki
179     *
180     * @var bool
181     */
182    private $isRemoteEnabled = false;
183
184    /**
185     * Enable inline Javascript
186     *
187     * If this setting is set to true then DOMPDF will automatically insert
188     * JavaScript code contained within <script type="text/javascript"> ... </script> tags.
189     *
190     * @var bool
191     */
192    private $isJavascriptEnabled = true;
193
194    /**
195     * Use the more-than-experimental HTML5 Lib parser
196     *
197     * @var bool
198     */
199    private $isHtml5ParserEnabled = false;
200
201    /**
202     * Whether to enable font subsetting or not.
203     *
204     * @var bool
205     */
206    private $isFontSubsettingEnabled = false;
207
208    /**
209     * @var bool
210     */
211    private $debugPng = false;
212
213    /**
214     * @var bool
215     */
216    private $debugKeepTemp = false;
217
218    /**
219     * @var bool
220     */
221    private $debugCss = false;
222
223    /**
224     * @var bool
225     */
226    private $debugLayout = false;
227
228    /**
229     * @var bool
230     */
231    private $debugLayoutLines = true;
232
233    /**
234     * @var bool
235     */
236    private $debugLayoutBlocks = true;
237
238    /**
239     * @var bool
240     */
241    private $debugLayoutInline = true;
242
243    /**
244     * @var bool
245     */
246    private $debugLayoutPaddingBox = true;
247
248    /**
249     * The PDF rendering backend to use
250     *
251     * Valid settings are 'PDFLib', 'CPDF', 'GD', and 'auto'. 'auto' will
252     * look for PDFLib and use it if found, or if not it will fall back on
253     * CPDF. 'GD' renders PDFs to graphic files. {@link Dompdf\CanvasFactory}
254     * ultimately determines which rendering class to instantiate
255     * based on this setting.
256     *
257     * @var string
258     */
259    private $pdfBackend = "CPDF";
260
261    /**
262     * PDFlib license key
263     *
264     * If you are using a licensed, commercial version of PDFlib, specify
265     * your license key here.  If you are using PDFlib-Lite or are evaluating
266     * the commercial version of PDFlib, comment out this setting.
267     *
268     * @link http://www.pdflib.com
269     *
270     * If pdflib present in web server and auto or selected explicitly above,
271     * a real license code must exist!
272     *
273     * @var string
274     */
275    private $pdflibLicense = "";
276
277    /**
278     * @var string
279     * @deprecated
280     */
281    private $adminUsername = "user";
282
283    /**
284     * @var string
285     * @deprecated
286     */
287    private $adminPassword = "password";
288
289    /**
290     * @param array $attributes
291     */
292    public function __construct(array $attributes = null)
293    {
294        $this->setChroot(realpath(__DIR__ . "/../"));
295        $this->setRootDir($this->getChroot());
296        $this->setTempDir(sys_get_temp_dir());
297        $this->setFontDir($this->chroot . DIRECTORY_SEPARATOR . "lib" . DIRECTORY_SEPARATOR . "fonts");
298        $this->setFontCache($this->getFontDir());
299        $this->setLogOutputFile($this->getTempDir() . DIRECTORY_SEPARATOR . "log.htm");
300
301        if (null !== $attributes) {
302            $this->set($attributes);
303        }
304    }
305
306    /**
307     * @param array|string $attributes
308     * @param null|mixed $value
309     * @return $this
310     */
311    public function set($attributes, $value = null)
312    {
313        if (!is_array($attributes)) {
314            $attributes = array($attributes => $value);
315        }
316        foreach ($attributes as $key => $value) {
317            if ($key === 'tempDir' || $key === 'temp_dir') {
318                $this->setTempDir($value);
319            } elseif ($key === 'fontDir' || $key === 'font_dir') {
320                $this->setFontDir($value);
321            } elseif ($key === 'fontCache' || $key === 'font_cache') {
322                $this->setFontCache($value);
323            } elseif ($key === 'chroot') {
324                $this->setChroot($value);
325            } elseif ($key === 'logOutputFile' || $key === 'log_output_file') {
326                $this->setLogOutputFile($value);
327            } elseif ($key === 'defaultMediaType' || $key === 'default_media_type') {
328                $this->setDefaultMediaType($value);
329            } elseif ($key === 'defaultPaperSize' || $key === 'default_paper_size') {
330                $this->setDefaultPaperSize($value);
331            } elseif ($key === 'defaultPaperOrientation' || $key === 'default_paper_orientation') {
332                $this->setDefaultPaperOrientation($value);
333            } elseif ($key === 'defaultFont' || $key === 'default_font') {
334                $this->setDefaultFont($value);
335            } elseif ($key === 'dpi') {
336                $this->setDpi($value);
337            } elseif ($key === 'fontHeightRatio' || $key === 'font_height_ratio') {
338                $this->setFontHeightRatio($value);
339            } elseif ($key === 'isPhpEnabled' || $key === 'is_php_enabled' || $key === 'enable_php') {
340                $this->setIsPhpEnabled($value);
341            } elseif ($key === 'isRemoteEnabled' || $key === 'is_remote_enabled' || $key === 'enable_remote') {
342                $this->setIsRemoteEnabled($value);
343            } elseif ($key === 'isJavascriptEnabled' || $key === 'is_javascript_enabled' || $key === 'enable_javascript') {
344                $this->setIsJavascriptEnabled($value);
345            } elseif ($key === 'isHtml5ParserEnabled' || $key === 'is_html5_parser_enabled' || $key === 'enable_html5_parser') {
346                $this->setIsHtml5ParserEnabled($value);
347            } elseif ($key === 'isFontSubsettingEnabled' || $key === 'is_font_subsetting_enabled' || $key === 'enable_font_subsetting') {
348                $this->setIsFontSubsettingEnabled($value);
349            } elseif ($key === 'debugPng' || $key === 'debug_png') {
350                $this->setDebugPng($value);
351            } elseif ($key === 'debugKeepTemp' || $key === 'debug_keep_temp') {
352                $this->setDebugKeepTemp($value);
353            } elseif ($key === 'debugCss' || $key === 'debug_css') {
354                $this->setDebugCss($value);
355            } elseif ($key === 'debugLayout' || $key === 'debug_layout') {
356                $this->setDebugLayout($value);
357            } elseif ($key === 'debugLayoutLines' || $key === 'debug_layout_lines') {
358                $this->setDebugLayoutLines($value);
359            } elseif ($key === 'debugLayoutBlocks' || $key === 'debug_layout_blocks') {
360                $this->setDebugLayoutBlocks($value);
361            } elseif ($key === 'debugLayoutInline' || $key === 'debug_layout_inline') {
362                $this->setDebugLayoutInline($value);
363            } elseif ($key === 'debugLayoutPaddingBox' || $key === 'debug_layout_padding_box') {
364                $this->setDebugLayoutPaddingBox($value);
365            } elseif ($key === 'pdfBackend' || $key === 'pdf_backend') {
366                $this->setPdfBackend($value);
367            } elseif ($key === 'pdflibLicense' || $key === 'pdflib_license') {
368                $this->setPdflibLicense($value);
369            } elseif ($key === 'adminUsername' || $key === 'admin_username') {
370                $this->setAdminUsername($value);
371            } elseif ($key === 'adminPassword' || $key === 'admin_password') {
372                $this->setAdminPassword($value);
373            }
374        }
375        return $this;
376    }
377
378    /**
379     * @param string $key
380     * @return mixed
381     */
382    public function get($key)
383    {
384        if ($key === 'tempDir' || $key === 'temp_dir') {
385            return $this->getTempDir();
386        } elseif ($key === 'fontDir' || $key === 'font_dir') {
387            return $this->getFontDir();
388        } elseif ($key === 'fontCache' || $key === 'font_cache') {
389            return $this->getFontCache();
390        } elseif ($key === 'chroot') {
391            return $this->getChroot();
392        } elseif ($key === 'logOutputFile' || $key === 'log_output_file') {
393            return $this->getLogOutputFile();
394        } elseif ($key === 'defaultMediaType' || $key === 'default_media_type') {
395            return $this->getDefaultMediaType();
396        } elseif ($key === 'defaultPaperSize' || $key === 'default_paper_size') {
397            return $this->getDefaultPaperSize();
398        } elseif ($key === 'defaultPaperOrientation' || $key === 'default_paper_orientation') {
399            return $this->getDefaultPaperOrientation();
400        } elseif ($key === 'defaultFont' || $key === 'default_font') {
401            return $this->getDefaultFont();
402        } elseif ($key === 'dpi') {
403            return $this->getDpi();
404        } elseif ($key === 'fontHeightRatio' || $key === 'font_height_ratio') {
405            return $this->getFontHeightRatio();
406        } elseif ($key === 'isPhpEnabled' || $key === 'is_php_enabled' || $key === 'enable_php') {
407            return $this->getIsPhpEnabled();
408        } elseif ($key === 'isRemoteEnabled' || $key === 'is_remote_enabled' || $key === 'enable_remote') {
409            return $this->getIsRemoteEnabled();
410        } elseif ($key === 'isJavascriptEnabled' || $key === 'is_javascript_enabled' || $key === 'enable_javascript') {
411            return $this->getIsJavascriptEnabled();
412        } elseif ($key === 'isHtml5ParserEnabled' || $key === 'is_html5_parser_enabled' || $key === 'enable_html5_parser') {
413            return $this->getIsHtml5ParserEnabled();
414        } elseif ($key === 'isFontSubsettingEnabled' || $key === 'is_font_subsetting_enabled' || $key === 'enable_font_subsetting') {
415            return $this->getIsFontSubsettingEnabled();
416        } elseif ($key === 'debugPng' || $key === 'debug_png') {
417            return $this->getDebugPng();
418        } elseif ($key === 'debugKeepTemp' || $key === 'debug_keep_temp') {
419            return $this->getDebugKeepTemp();
420        } elseif ($key === 'debugCss' || $key === 'debug_css') {
421            return $this->getDebugCss();
422        } elseif ($key === 'debugLayout' || $key === 'debug_layout') {
423            return $this->getDebugLayout();
424        } elseif ($key === 'debugLayoutLines' || $key === 'debug_layout_lines') {
425            return $this->getDebugLayoutLines();
426        } elseif ($key === 'debugLayoutBlocks' || $key === 'debug_layout_blocks') {
427            return $this->getDebugLayoutBlocks();
428        } elseif ($key === 'debugLayoutInline' || $key === 'debug_layout_inline') {
429            return $this->getDebugLayoutInline();
430        } elseif ($key === 'debugLayoutPaddingBox' || $key === 'debug_layout_padding_box') {
431            return $this->getDebugLayoutPaddingBox();
432        } elseif ($key === 'pdfBackend' || $key === 'pdf_backend') {
433            return $this->getPdfBackend();
434        } elseif ($key === 'pdflibLicense' || $key === 'pdflib_license') {
435            return $this->getPdflibLicense();
436        } elseif ($key === 'adminUsername' || $key === 'admin_username') {
437            return $this->getAdminUsername();
438        } elseif ($key === 'adminPassword' || $key === 'admin_password') {
439            return $this->getAdminPassword();
440        }
441        return null;
442    }
443
444    /**
445     * @param string $adminPassword
446     * @return $this
447     */
448    public function setAdminPassword($adminPassword)
449    {
450        $this->adminPassword = $adminPassword;
451        return $this;
452    }
453
454    /**
455     * @return string
456     */
457    public function getAdminPassword()
458    {
459        return $this->adminPassword;
460    }
461
462    /**
463     * @param string $adminUsername
464     * @return $this
465     */
466    public function setAdminUsername($adminUsername)
467    {
468        $this->adminUsername = $adminUsername;
469        return $this;
470    }
471
472    /**
473     * @return string
474     */
475    public function getAdminUsername()
476    {
477        return $this->adminUsername;
478    }
479
480    /**
481     * @param string $pdfBackend
482     * @return $this
483     */
484    public function setPdfBackend($pdfBackend)
485    {
486        $this->pdfBackend = $pdfBackend;
487        return $this;
488    }
489
490    /**
491     * @return string
492     */
493    public function getPdfBackend()
494    {
495        return $this->pdfBackend;
496    }
497
498    /**
499     * @param string $pdflibLicense
500     * @return $this
501     */
502    public function setPdflibLicense($pdflibLicense)
503    {
504        $this->pdflibLicense = $pdflibLicense;
505        return $this;
506    }
507
508    /**
509     * @return string
510     */
511    public function getPdflibLicense()
512    {
513        return $this->pdflibLicense;
514    }
515
516    /**
517     * @param string $chroot
518     * @return $this
519     */
520    public function setChroot($chroot)
521    {
522        $this->chroot = $chroot;
523        return $this;
524    }
525
526    /**
527     * @return string
528     */
529    public function getChroot()
530    {
531        return $this->chroot;
532    }
533
534    /**
535     * @param boolean $debugCss
536     * @return $this
537     */
538    public function setDebugCss($debugCss)
539    {
540        $this->debugCss = $debugCss;
541        return $this;
542    }
543
544    /**
545     * @return boolean
546     */
547    public function getDebugCss()
548    {
549        return $this->debugCss;
550    }
551
552    /**
553     * @param boolean $debugKeepTemp
554     * @return $this
555     */
556    public function setDebugKeepTemp($debugKeepTemp)
557    {
558        $this->debugKeepTemp = $debugKeepTemp;
559        return $this;
560    }
561
562    /**
563     * @return boolean
564     */
565    public function getDebugKeepTemp()
566    {
567        return $this->debugKeepTemp;
568    }
569
570    /**
571     * @param boolean $debugLayout
572     * @return $this
573     */
574    public function setDebugLayout($debugLayout)
575    {
576        $this->debugLayout = $debugLayout;
577        return $this;
578    }
579
580    /**
581     * @return boolean
582     */
583    public function getDebugLayout()
584    {
585        return $this->debugLayout;
586    }
587
588    /**
589     * @param boolean $debugLayoutBlocks
590     * @return $this
591     */
592    public function setDebugLayoutBlocks($debugLayoutBlocks)
593    {
594        $this->debugLayoutBlocks = $debugLayoutBlocks;
595        return $this;
596    }
597
598    /**
599     * @return boolean
600     */
601    public function getDebugLayoutBlocks()
602    {
603        return $this->debugLayoutBlocks;
604    }
605
606    /**
607     * @param boolean $debugLayoutInline
608     * @return $this
609     */
610    public function setDebugLayoutInline($debugLayoutInline)
611    {
612        $this->debugLayoutInline = $debugLayoutInline;
613        return $this;
614    }
615
616    /**
617     * @return boolean
618     */
619    public function getDebugLayoutInline()
620    {
621        return $this->debugLayoutInline;
622    }
623
624    /**
625     * @param boolean $debugLayoutLines
626     * @return $this
627     */
628    public function setDebugLayoutLines($debugLayoutLines)
629    {
630        $this->debugLayoutLines = $debugLayoutLines;
631        return $this;
632    }
633
634    /**
635     * @return boolean
636     */
637    public function getDebugLayoutLines()
638    {
639        return $this->debugLayoutLines;
640    }
641
642    /**
643     * @param boolean $debugLayoutPaddingBox
644     * @return $this
645     */
646    public function setDebugLayoutPaddingBox($debugLayoutPaddingBox)
647    {
648        $this->debugLayoutPaddingBox = $debugLayoutPaddingBox;
649        return $this;
650    }
651
652    /**
653     * @return boolean
654     */
655    public function getDebugLayoutPaddingBox()
656    {
657        return $this->debugLayoutPaddingBox;
658    }
659
660    /**
661     * @param boolean $debugPng
662     * @return $this
663     */
664    public function setDebugPng($debugPng)
665    {
666        $this->debugPng = $debugPng;
667        return $this;
668    }
669
670    /**
671     * @return boolean
672     */
673    public function getDebugPng()
674    {
675        return $this->debugPng;
676    }
677
678    /**
679     * @param string $defaultFont
680     * @return $this
681     */
682    public function setDefaultFont($defaultFont)
683    {
684        $this->defaultFont = $defaultFont;
685        return $this;
686    }
687
688    /**
689     * @return string
690     */
691    public function getDefaultFont()
692    {
693        return $this->defaultFont;
694    }
695
696    /**
697     * @param string $defaultMediaType
698     * @return $this
699     */
700    public function setDefaultMediaType($defaultMediaType)
701    {
702        $this->defaultMediaType = $defaultMediaType;
703        return $this;
704    }
705
706    /**
707     * @return string
708     */
709    public function getDefaultMediaType()
710    {
711        return $this->defaultMediaType;
712    }
713
714    /**
715     * @param string $defaultPaperSize
716     * @return $this
717     */
718    public function setDefaultPaperSize($defaultPaperSize)
719    {
720        $this->defaultPaperSize = $defaultPaperSize;
721        return $this;
722    }
723
724    /**
725     * @param string $defaultPaperOrientation
726     * @return $this
727     */
728    public function setDefaultPaperOrientation($defaultPaperOrientation)
729    {
730        $this->defaultPaperOrientation = $defaultPaperOrientation;
731        return $this;
732    }
733
734    /**
735     * @return string
736     */
737    public function getDefaultPaperSize()
738    {
739        return $this->defaultPaperSize;
740    }
741
742    /**
743     * @return string
744     */
745    public function getDefaultPaperOrientation()
746    {
747        return $this->defaultPaperOrientation;
748    }
749
750    /**
751     * @param int $dpi
752     * @return $this
753     */
754    public function setDpi($dpi)
755    {
756        $this->dpi = $dpi;
757        return $this;
758    }
759
760    /**
761     * @return int
762     */
763    public function getDpi()
764    {
765        return $this->dpi;
766    }
767
768    /**
769     * @param string $fontCache
770     * @return $this
771     */
772    public function setFontCache($fontCache)
773    {
774        $this->fontCache = $fontCache;
775        return $this;
776    }
777
778    /**
779     * @return string
780     */
781    public function getFontCache()
782    {
783        return $this->fontCache;
784    }
785
786    /**
787     * @param string $fontDir
788     * @return $this
789     */
790    public function setFontDir($fontDir)
791    {
792        $this->fontDir = $fontDir;
793        return $this;
794    }
795
796    /**
797     * @return string
798     */
799    public function getFontDir()
800    {
801        return $this->fontDir;
802    }
803
804    /**
805     * @param float $fontHeightRatio
806     * @return $this
807     */
808    public function setFontHeightRatio($fontHeightRatio)
809    {
810        $this->fontHeightRatio = $fontHeightRatio;
811        return $this;
812    }
813
814    /**
815     * @return float
816     */
817    public function getFontHeightRatio()
818    {
819        return $this->fontHeightRatio;
820    }
821
822    /**
823     * @param boolean $isFontSubsettingEnabled
824     * @return $this
825     */
826    public function setIsFontSubsettingEnabled($isFontSubsettingEnabled)
827    {
828        $this->isFontSubsettingEnabled = $isFontSubsettingEnabled;
829        return $this;
830    }
831
832    /**
833     * @return boolean
834     */
835    public function getIsFontSubsettingEnabled()
836    {
837        return $this->isFontSubsettingEnabled;
838    }
839
840    /**
841     * @return boolean
842     */
843    public function isFontSubsettingEnabled()
844    {
845        return $this->getIsFontSubsettingEnabled();
846    }
847
848    /**
849     * @param boolean $isHtml5ParserEnabled
850     * @return $this
851     */
852    public function setIsHtml5ParserEnabled($isHtml5ParserEnabled)
853    {
854        $this->isHtml5ParserEnabled = $isHtml5ParserEnabled;
855        return $this;
856    }
857
858    /**
859     * @return boolean
860     */
861    public function getIsHtml5ParserEnabled()
862    {
863        return $this->isHtml5ParserEnabled;
864    }
865
866    /**
867     * @return boolean
868     */
869    public function isHtml5ParserEnabled()
870    {
871        return $this->getIsHtml5ParserEnabled();
872    }
873
874    /**
875     * @param boolean $isJavascriptEnabled
876     * @return $this
877     */
878    public function setIsJavascriptEnabled($isJavascriptEnabled)
879    {
880        $this->isJavascriptEnabled = $isJavascriptEnabled;
881        return $this;
882    }
883
884    /**
885     * @return boolean
886     */
887    public function getIsJavascriptEnabled()
888    {
889        return $this->isJavascriptEnabled;
890    }
891
892    /**
893     * @return boolean
894     */
895    public function isJavascriptEnabled()
896    {
897        return $this->getIsJavascriptEnabled();
898    }
899
900    /**
901     * @param boolean $isPhpEnabled
902     * @return $this
903     */
904    public function setIsPhpEnabled($isPhpEnabled)
905    {
906        $this->isPhpEnabled = $isPhpEnabled;
907        return $this;
908    }
909
910    /**
911     * @return boolean
912     */
913    public function getIsPhpEnabled()
914    {
915        return $this->isPhpEnabled;
916    }
917
918    /**
919     * @return boolean
920     */
921    public function isPhpEnabled()
922    {
923        return $this->getIsPhpEnabled();
924    }
925
926    /**
927     * @param boolean $isRemoteEnabled
928     * @return $this
929     */
930    public function setIsRemoteEnabled($isRemoteEnabled)
931    {
932        $this->isRemoteEnabled = $isRemoteEnabled;
933        return $this;
934    }
935
936    /**
937     * @return boolean
938     */
939    public function getIsRemoteEnabled()
940    {
941        return $this->isRemoteEnabled;
942    }
943
944    /**
945     * @return boolean
946     */
947    public function isRemoteEnabled()
948    {
949        return $this->getIsRemoteEnabled();
950    }
951
952    /**
953     * @param string $logOutputFile
954     * @return $this
955     */
956    public function setLogOutputFile($logOutputFile)
957    {
958        $this->logOutputFile = $logOutputFile;
959        return $this;
960    }
961
962    /**
963     * @return string
964     */
965    public function getLogOutputFile()
966    {
967        return $this->logOutputFile;
968    }
969
970    /**
971     * @param string $tempDir
972     * @return $this
973     */
974    public function setTempDir($tempDir)
975    {
976        $this->tempDir = $tempDir;
977        return $this;
978    }
979
980    /**
981     * @return string
982     */
983    public function getTempDir()
984    {
985        return $this->tempDir;
986    }
987
988    /**
989     * @param string $rootDir
990     * @return $this
991     */
992    public function setRootDir($rootDir)
993    {
994        $this->rootDir = $rootDir;
995        return $this;
996    }
997
998    /**
999     * @return string
1000     */
1001    public function getRootDir()
1002    {
1003        return $this->rootDir;
1004    }
1005}