]> BookStack Code Mirror - bookstack/blob - app/Config/dompdf.php
Added 404 response for non-existing setting categories
[bookstack] / app / Config / dompdf.php
1 <?php
2
3 /**
4  * DOMPDF configuration options.
5  *
6  * Changes to these config files are not supported by BookStack and may break upon updates.
7  * Configuration should be altered via the `.env` file or environment variables.
8  * Do not edit this file unless you're happy to maintain any changes yourself.
9  */
10 $dompdfPaperSizeMap = [
11     'a4'     => 'a4',
12     'letter' => 'letter',
13 ];
14
15 return [
16
17     'show_warnings' => false,   // Throw an Exception on warnings from dompdf
18     'orientation'   => 'portrait',
19     'defines'       => [
20         /**
21          * The location of the DOMPDF font directory.
22          *
23          * The location of the directory where DOMPDF will store fonts and font metrics
24          * Note: This directory must exist and be writable by the webserver process.
25          * *Please note the trailing slash.*
26          *
27          * Notes regarding fonts:
28          * Additional .afm font metrics can be added by executing load_font.php from command line.
29          *
30          * Only the original "Base 14 fonts" are present on all pdf viewers. Additional fonts must
31          * be embedded in the pdf file or the PDF may not display correctly. This can significantly
32          * increase file size unless font subsetting is enabled. Before embedding a font please
33          * review your rights under the font license.
34          *
35          * Any font specification in the source HTML is translated to the closest font available
36          * in the font directory.
37          *
38          * The pdf standard "Base 14 fonts" are:
39          * Courier, Courier-Bold, Courier-BoldOblique, Courier-Oblique,
40          * Helvetica, Helvetica-Bold, Helvetica-BoldOblique, Helvetica-Oblique,
41          * Times-Roman, Times-Bold, Times-BoldItalic, Times-Italic,
42          * Symbol, ZapfDingbats.
43          */
44         'font_dir' => storage_path('fonts/'),  // advised by dompdf (https://github.com/dompdf/dompdf/pull/782)
45
46         /**
47          * The location of the DOMPDF font cache directory.
48          *
49          * This directory contains the cached font metrics for the fonts used by DOMPDF.
50          * This directory can be the same as DOMPDF_FONT_DIR
51          *
52          * Note: This directory must exist and be writable by the webserver process.
53          */
54         'font_cache' => storage_path('fonts/'),
55
56         /**
57          * The location of a temporary directory.
58          *
59          * The directory specified must be writeable by the webserver process.
60          * The temporary directory is required to download remote images and when
61          * using the PFDLib back end.
62          */
63         'temp_dir' => sys_get_temp_dir(),
64
65         /**
66          * ==== IMPORTANT ====.
67          *
68          * dompdf's "chroot": Prevents dompdf from accessing system files or other
69          * files on the webserver.  All local files opened by dompdf must be in a
70          * subdirectory of this directory.  DO NOT set it to '/' since this could
71          * allow an attacker to use dompdf to read any files on the server.  This
72          * should be an absolute path.
73          * This is only checked on command line call by dompdf.php, but not by
74          * direct class use like:
75          * $dompdf = new DOMPDF();  $dompdf->load_html($htmldata); $dompdf->render(); $pdfdata = $dompdf->output();
76          */
77         'chroot' => realpath(public_path()),
78
79         /**
80          * Whether to use Unicode fonts or not.
81          *
82          * When set to true the PDF backend must be set to "CPDF" and fonts must be
83          * loaded via load_font.php.
84          *
85          * When enabled, dompdf can support all Unicode glyphs. Any glyphs used in a
86          * document must be present in your fonts, however.
87          */
88         'unicode_enabled' => true,
89
90         /**
91          * Whether to enable font subsetting or not.
92          */
93         'enable_fontsubsetting' => false,
94
95         /**
96          * The PDF rendering backend to use.
97          *
98          * Valid settings are 'PDFLib', 'CPDF' (the bundled R&OS PDF class), 'GD' and
99          * 'auto'. 'auto' will look for PDFLib and use it if found, or if not it will
100          * fall back on CPDF. 'GD' renders PDFs to graphic files. {@link * Canvas_Factory} ultimately determines which rendering class to instantiate
101          * based on this setting.
102          *
103          * Both PDFLib & CPDF rendering backends provide sufficient rendering
104          * capabilities for dompdf, however additional features (e.g. object,
105          * image and font support, etc.) differ between backends.  Please see
106          * {@link PDFLib_Adapter} for more information on the PDFLib backend
107          * and {@link CPDF_Adapter} and lib/class.pdf.php for more information
108          * on CPDF. Also see the documentation for each backend at the links
109          * below.
110          *
111          * The GD rendering backend is a little different than PDFLib and
112          * CPDF. Several features of CPDF and PDFLib are not supported or do
113          * not make any sense when creating image files.  For example,
114          * multiple pages are not supported, nor are PDF 'objects'.  Have a
115          * look at {@link GD_Adapter} for more information.  GD support is
116          * experimental, so use it at your own risk.
117          *
118          * @link http://www.pdflib.com
119          * @link http://www.ros.co.nz/pdf
120          * @link http://www.php.net/image
121          */
122         'pdf_backend' => 'CPDF',
123
124         /**
125          * PDFlib license key.
126          *
127          * If you are using a licensed, commercial version of PDFlib, specify
128          * your license key here.  If you are using PDFlib-Lite or are evaluating
129          * the commercial version of PDFlib, comment out this setting.
130          *
131          * @link http://www.pdflib.com
132          *
133          * If pdflib present in web server and auto or selected explicitely above,
134          * a real license code must exist!
135          */
136         //"DOMPDF_PDFLIB_LICENSE" => "your license key here",
137
138         /**
139          * html target media view which should be rendered into pdf.
140          * List of types and parsing rules for future extensions:
141          * http://www.w3.org/TR/REC-html40/types.html
142          *   screen, tty, tv, projection, handheld, print, braille, aural, all
143          * Note: aural is deprecated in CSS 2.1 because it is replaced by speech in CSS 3.
144          * Note, even though the generated pdf file is intended for print output,
145          * the desired content might be different (e.g. screen or projection view of html file).
146          * Therefore allow specification of content here.
147          */
148         'default_media_type' => 'print',
149
150         /**
151          * The default paper size.
152          *
153          * North America standard is "letter"; other countries generally "a4"
154          *
155          * @see CPDF_Adapter::PAPER_SIZES for valid sizes ('letter', 'legal', 'A4', etc.)
156          */
157         'default_paper_size' => $dompdfPaperSizeMap[env('EXPORT_PAGE_SIZE', 'a4')] ?? 'a4',
158
159         /**
160          * The default font family.
161          *
162          * Used if no suitable fonts can be found. This must exist in the font folder.
163          *
164          * @var string
165          */
166         'default_font' => 'dejavu sans',
167
168         /**
169          * Image DPI setting.
170          *
171          * This setting determines the default DPI setting for images and fonts.  The
172          * DPI may be overridden for inline images by explictly setting the
173          * image's width & height style attributes (i.e. if the image's native
174          * width is 600 pixels and you specify the image's width as 72 points,
175          * the image will have a DPI of 600 in the rendered PDF.  The DPI of
176          * background images can not be overridden and is controlled entirely
177          * via this parameter.
178          *
179          * For the purposes of DOMPDF, pixels per inch (PPI) = dots per inch (DPI).
180          * If a size in html is given as px (or without unit as image size),
181          * this tells the corresponding size in pt.
182          * This adjusts the relative sizes to be similar to the rendering of the
183          * html page in a reference browser.
184          *
185          * In pdf, always 1 pt = 1/72 inch
186          *
187          * Rendering resolution of various browsers in px per inch:
188          * Windows Firefox and Internet Explorer:
189          *   SystemControl->Display properties->FontResolution: Default:96, largefonts:120, custom:?
190          * Linux Firefox:
191          *   about:config *resolution: Default:96
192          *   (xorg screen dimension in mm and Desktop font dpi settings are ignored)
193          *
194          * Take care about extra font/image zoom factor of browser.
195          *
196          * In images, <img> size in pixel attribute, img css style, are overriding
197          * the real image dimension in px for rendering.
198          *
199          * @var int
200          */
201         'dpi' => 96,
202
203         /**
204          * Enable inline PHP.
205          *
206          * If this setting is set to true then DOMPDF will automatically evaluate
207          * inline PHP contained within <script type="text/php"> ... </script> tags.
208          *
209          * Enabling this for documents you do not trust (e.g. arbitrary remote html
210          * pages) is a security risk.  Set this option to false if you wish to process
211          * untrusted documents.
212          *
213          * @var bool
214          */
215         'enable_php' => false,
216
217         /**
218          * Enable inline Javascript.
219          *
220          * If this setting is set to true then DOMPDF will automatically insert
221          * JavaScript code contained within <script type="text/javascript"> ... </script> tags.
222          *
223          * @var bool
224          */
225         'enable_javascript' => false,
226
227         /**
228          * Enable remote file access.
229          *
230          * If this setting is set to true, DOMPDF will access remote sites for
231          * images and CSS files as required.
232          * This is required for part of test case www/test/image_variants.html through www/examples.php
233          *
234          * Attention!
235          * This can be a security risk, in particular in combination with DOMPDF_ENABLE_PHP and
236          * allowing remote access to dompdf.php or on allowing remote html code to be passed to
237          * $dompdf = new DOMPDF(, $dompdf->load_html(...,
238          * This allows anonymous users to download legally doubtful internet content which on
239          * tracing back appears to being downloaded by your server, or allows malicious php code
240          * in remote html pages to be executed by your server with your account privileges.
241          *
242          * @var bool
243          */
244         'enable_remote' => env('ALLOW_UNTRUSTED_SERVER_FETCHING', false),
245
246         /**
247          * A ratio applied to the fonts height to be more like browsers' line height.
248          */
249         'font_height_ratio' => 1.1,
250
251         /**
252          * Enable CSS float.
253          *
254          * Allows people to disabled CSS float support
255          *
256          * @var bool
257          */
258         'enable_css_float' => true,
259
260         /**
261          * Use the more-than-experimental HTML5 Lib parser.
262          */
263         'enable_html5parser' => true,
264
265     ],
266
267 ];
Morty Proxy This is a proxified and sanitized view of the page, visit original site.