2016-01-31 12:53:30 -05:00
|
|
|
<?php
|
|
|
|
|
2018-12-23 11:26:39 -05:00
|
|
|
/**
|
2024-04-22 11:40:42 -04:00
|
|
|
* Export configuration options.
|
2018-12-23 11:26:39 -05:00
|
|
|
*
|
|
|
|
* Changes to these config files are not supported by BookStack and may break upon updates.
|
|
|
|
* Configuration should be altered via the `.env` file or environment variables.
|
|
|
|
* Do not edit this file unless you're happy to maintain any changes yourself.
|
|
|
|
*/
|
2022-09-17 20:25:20 -04:00
|
|
|
|
2024-04-22 11:40:42 -04:00
|
|
|
$snappyPaperSizeMap = [
|
|
|
|
'a4' => 'A4',
|
|
|
|
'letter' => 'Letter',
|
|
|
|
];
|
|
|
|
|
2022-01-30 12:40:42 -05:00
|
|
|
$dompdfPaperSizeMap = [
|
2022-01-31 09:16:56 -05:00
|
|
|
'a4' => 'a4',
|
2022-01-30 12:40:42 -05:00
|
|
|
'letter' => 'letter',
|
|
|
|
];
|
|
|
|
|
2024-04-22 11:40:42 -04:00
|
|
|
$exportPageSize = env('EXPORT_PAGE_SIZE', 'a4');
|
|
|
|
|
2017-02-25 09:59:56 -05:00
|
|
|
return [
|
2016-01-31 12:53:30 -05:00
|
|
|
|
2024-04-22 11:40:42 -04:00
|
|
|
// Set a command which can be used to convert a HTML file into a PDF file.
|
|
|
|
// When false this will not be used.
|
|
|
|
// String values represent the command to be called for conversion.
|
|
|
|
// Supports '{input_html_path}' and '{output_pdf_path}' placeholder values.
|
|
|
|
// Example: EXPORT_PDF_COMMAND="/scripts/convert.sh {input_html_path} {output_pdf_path}"
|
|
|
|
'pdf_command' => env('EXPORT_PDF_COMMAND', false),
|
|
|
|
|
|
|
|
// 2024-04: Snappy/WKHTMLtoPDF now considered deprecated in regard to BookStack support.
|
|
|
|
'snappy' => [
|
2024-04-24 10:13:44 -04:00
|
|
|
'pdf_binary' => env('WKHTMLTOPDF', false),
|
|
|
|
'options' => [
|
|
|
|
'print-media-type' => true,
|
|
|
|
'outline' => true,
|
|
|
|
'page-size' => $snappyPaperSizeMap[$exportPageSize] ?? 'A4',
|
2024-04-22 11:40:42 -04:00
|
|
|
],
|
|
|
|
],
|
2022-07-17 09:01:59 -04:00
|
|
|
|
2024-04-22 11:40:42 -04:00
|
|
|
'dompdf' => [
|
2016-01-31 12:53:30 -05:00
|
|
|
/**
|
2021-06-26 11:23:15 -04:00
|
|
|
* The location of the DOMPDF font directory.
|
2016-01-31 12:53:30 -05:00
|
|
|
*
|
|
|
|
* The location of the directory where DOMPDF will store fonts and font metrics
|
|
|
|
* Note: This directory must exist and be writable by the webserver process.
|
|
|
|
* *Please note the trailing slash.*
|
|
|
|
*
|
|
|
|
* Notes regarding fonts:
|
|
|
|
* Additional .afm font metrics can be added by executing load_font.php from command line.
|
|
|
|
*
|
|
|
|
* Only the original "Base 14 fonts" are present on all pdf viewers. Additional fonts must
|
|
|
|
* be embedded in the pdf file or the PDF may not display correctly. This can significantly
|
|
|
|
* increase file size unless font subsetting is enabled. Before embedding a font please
|
|
|
|
* review your rights under the font license.
|
|
|
|
*
|
|
|
|
* Any font specification in the source HTML is translated to the closest font available
|
|
|
|
* in the font directory.
|
|
|
|
*
|
|
|
|
* The pdf standard "Base 14 fonts" are:
|
|
|
|
* Courier, Courier-Bold, Courier-BoldOblique, Courier-Oblique,
|
|
|
|
* Helvetica, Helvetica-Bold, Helvetica-BoldOblique, Helvetica-Oblique,
|
|
|
|
* Times-Roman, Times-Bold, Times-BoldItalic, Times-Italic,
|
|
|
|
* Symbol, ZapfDingbats.
|
|
|
|
*/
|
2021-08-31 15:22:42 -04:00
|
|
|
'font_dir' => storage_path('fonts/'), // advised by dompdf (https://github.com/dompdf/dompdf/pull/782)
|
2016-01-31 12:53:30 -05:00
|
|
|
|
|
|
|
/**
|
2021-06-26 11:23:15 -04:00
|
|
|
* The location of the DOMPDF font cache directory.
|
2016-01-31 12:53:30 -05:00
|
|
|
*
|
|
|
|
* This directory contains the cached font metrics for the fonts used by DOMPDF.
|
|
|
|
* This directory can be the same as DOMPDF_FONT_DIR
|
|
|
|
*
|
|
|
|
* Note: This directory must exist and be writable by the webserver process.
|
|
|
|
*/
|
2021-08-31 15:22:42 -04:00
|
|
|
'font_cache' => storage_path('fonts/'),
|
2016-01-31 12:53:30 -05:00
|
|
|
|
|
|
|
/**
|
|
|
|
* The location of a temporary directory.
|
|
|
|
*
|
|
|
|
* The directory specified must be writeable by the webserver process.
|
|
|
|
* The temporary directory is required to download remote images and when
|
|
|
|
* using the PFDLib back end.
|
|
|
|
*/
|
2021-08-31 15:22:42 -04:00
|
|
|
'temp_dir' => sys_get_temp_dir(),
|
2016-01-31 12:53:30 -05:00
|
|
|
|
|
|
|
/**
|
2021-06-26 11:23:15 -04:00
|
|
|
* ==== IMPORTANT ====.
|
2016-01-31 12:53:30 -05:00
|
|
|
*
|
|
|
|
* dompdf's "chroot": Prevents dompdf from accessing system files or other
|
|
|
|
* files on the webserver. All local files opened by dompdf must be in a
|
|
|
|
* subdirectory of this directory. DO NOT set it to '/' since this could
|
|
|
|
* allow an attacker to use dompdf to read any files on the server. This
|
|
|
|
* should be an absolute path.
|
|
|
|
* This is only checked on command line call by dompdf.php, but not by
|
|
|
|
* direct class use like:
|
2019-09-15 13:29:51 -04:00
|
|
|
* $dompdf = new DOMPDF(); $dompdf->load_html($htmldata); $dompdf->render(); $pdfdata = $dompdf->output();
|
2016-01-31 12:53:30 -05:00
|
|
|
*/
|
2021-10-09 13:06:08 -04:00
|
|
|
'chroot' => realpath(public_path()),
|
2016-01-31 12:53:30 -05:00
|
|
|
|
|
|
|
/**
|
2022-07-23 06:36:37 -04:00
|
|
|
* Protocol whitelist.
|
2016-01-31 12:53:30 -05:00
|
|
|
*
|
2022-07-17 09:01:59 -04:00
|
|
|
* Protocols and PHP wrappers allowed in URIs, and the validation rules
|
|
|
|
* that determine if a resouce may be loaded. Full support is not guaranteed
|
|
|
|
* for the protocols/wrappers specified
|
|
|
|
* by this array.
|
2016-01-31 12:53:30 -05:00
|
|
|
*
|
2022-07-17 09:01:59 -04:00
|
|
|
* @var array
|
2016-01-31 12:53:30 -05:00
|
|
|
*/
|
2022-07-17 09:01:59 -04:00
|
|
|
'allowed_protocols' => [
|
2022-07-23 06:36:37 -04:00
|
|
|
'file://' => ['rules' => []],
|
|
|
|
'http://' => ['rules' => []],
|
|
|
|
'https://' => ['rules' => []],
|
2022-07-17 09:01:59 -04:00
|
|
|
],
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @var string
|
|
|
|
*/
|
|
|
|
'log_output_file' => null,
|
2016-01-31 12:53:30 -05:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Whether to enable font subsetting or not.
|
|
|
|
*/
|
2024-04-22 11:40:42 -04:00
|
|
|
'enable_font_subsetting' => false,
|
2016-01-31 12:53:30 -05:00
|
|
|
|
|
|
|
/**
|
2021-06-26 11:23:15 -04:00
|
|
|
* The PDF rendering backend to use.
|
2016-01-31 12:53:30 -05:00
|
|
|
*
|
|
|
|
* Valid settings are 'PDFLib', 'CPDF' (the bundled R&OS PDF class), 'GD' and
|
|
|
|
* 'auto'. 'auto' will look for PDFLib and use it if found, or if not it will
|
2021-06-26 11:23:15 -04:00
|
|
|
* fall back on CPDF. 'GD' renders PDFs to graphic files. {@link * Canvas_Factory} ultimately determines which rendering class to instantiate
|
2016-01-31 12:53:30 -05:00
|
|
|
* based on this setting.
|
|
|
|
*
|
|
|
|
* Both PDFLib & CPDF rendering backends provide sufficient rendering
|
|
|
|
* capabilities for dompdf, however additional features (e.g. object,
|
|
|
|
* image and font support, etc.) differ between backends. Please see
|
|
|
|
* {@link PDFLib_Adapter} for more information on the PDFLib backend
|
|
|
|
* and {@link CPDF_Adapter} and lib/class.pdf.php for more information
|
|
|
|
* on CPDF. Also see the documentation for each backend at the links
|
|
|
|
* below.
|
|
|
|
*
|
|
|
|
* The GD rendering backend is a little different than PDFLib and
|
|
|
|
* CPDF. Several features of CPDF and PDFLib are not supported or do
|
|
|
|
* not make any sense when creating image files. For example,
|
|
|
|
* multiple pages are not supported, nor are PDF 'objects'. Have a
|
|
|
|
* look at {@link GD_Adapter} for more information. GD support is
|
|
|
|
* experimental, so use it at your own risk.
|
|
|
|
*
|
|
|
|
* @link http://www.pdflib.com
|
|
|
|
* @link http://www.ros.co.nz/pdf
|
|
|
|
* @link http://www.php.net/image
|
|
|
|
*/
|
2021-08-31 15:22:42 -04:00
|
|
|
'pdf_backend' => 'CPDF',
|
2016-01-31 12:53:30 -05:00
|
|
|
|
|
|
|
/**
|
2021-06-26 11:23:15 -04:00
|
|
|
* PDFlib license key.
|
2016-01-31 12:53:30 -05:00
|
|
|
*
|
|
|
|
* If you are using a licensed, commercial version of PDFlib, specify
|
|
|
|
* your license key here. If you are using PDFlib-Lite or are evaluating
|
|
|
|
* the commercial version of PDFlib, comment out this setting.
|
|
|
|
*
|
|
|
|
* @link http://www.pdflib.com
|
|
|
|
*
|
|
|
|
* If pdflib present in web server and auto or selected explicitely above,
|
|
|
|
* a real license code must exist!
|
|
|
|
*/
|
|
|
|
//"DOMPDF_PDFLIB_LICENSE" => "your license key here",
|
|
|
|
|
|
|
|
/**
|
|
|
|
* html target media view which should be rendered into pdf.
|
|
|
|
* List of types and parsing rules for future extensions:
|
|
|
|
* http://www.w3.org/TR/REC-html40/types.html
|
|
|
|
* screen, tty, tv, projection, handheld, print, braille, aural, all
|
|
|
|
* Note: aural is deprecated in CSS 2.1 because it is replaced by speech in CSS 3.
|
|
|
|
* Note, even though the generated pdf file is intended for print output,
|
|
|
|
* the desired content might be different (e.g. screen or projection view of html file).
|
|
|
|
* Therefore allow specification of content here.
|
|
|
|
*/
|
2021-08-31 15:22:42 -04:00
|
|
|
'default_media_type' => 'print',
|
2016-01-31 12:53:30 -05:00
|
|
|
|
|
|
|
/**
|
|
|
|
* The default paper size.
|
|
|
|
*
|
|
|
|
* North America standard is "letter"; other countries generally "a4"
|
|
|
|
*
|
|
|
|
* @see CPDF_Adapter::PAPER_SIZES for valid sizes ('letter', 'legal', 'A4', etc.)
|
|
|
|
*/
|
2024-04-22 11:40:42 -04:00
|
|
|
'default_paper_size' => $dompdfPaperSizeMap[$exportPageSize] ?? 'a4',
|
2016-01-31 12:53:30 -05:00
|
|
|
|
2022-07-17 09:01:59 -04:00
|
|
|
/**
|
|
|
|
* The default paper orientation.
|
|
|
|
*
|
|
|
|
* The orientation of the page (portrait or landscape).
|
|
|
|
*
|
|
|
|
* @var string
|
|
|
|
*/
|
2022-07-23 06:36:37 -04:00
|
|
|
'default_paper_orientation' => 'portrait',
|
2022-07-17 09:01:59 -04:00
|
|
|
|
2016-01-31 12:53:30 -05:00
|
|
|
/**
|
2021-06-26 11:23:15 -04:00
|
|
|
* The default font family.
|
2016-01-31 12:53:30 -05:00
|
|
|
*
|
|
|
|
* Used if no suitable fonts can be found. This must exist in the font folder.
|
2021-06-26 11:23:15 -04:00
|
|
|
*
|
2016-01-31 12:53:30 -05:00
|
|
|
* @var string
|
|
|
|
*/
|
2021-08-31 15:22:42 -04:00
|
|
|
'default_font' => 'dejavu sans',
|
2016-01-31 12:53:30 -05:00
|
|
|
|
|
|
|
/**
|
2021-06-26 11:23:15 -04:00
|
|
|
* Image DPI setting.
|
2016-01-31 12:53:30 -05:00
|
|
|
*
|
|
|
|
* This setting determines the default DPI setting for images and fonts. The
|
|
|
|
* DPI may be overridden for inline images by explictly setting the
|
|
|
|
* image's width & height style attributes (i.e. if the image's native
|
|
|
|
* width is 600 pixels and you specify the image's width as 72 points,
|
|
|
|
* the image will have a DPI of 600 in the rendered PDF. The DPI of
|
|
|
|
* background images can not be overridden and is controlled entirely
|
|
|
|
* via this parameter.
|
|
|
|
*
|
|
|
|
* For the purposes of DOMPDF, pixels per inch (PPI) = dots per inch (DPI).
|
|
|
|
* If a size in html is given as px (or without unit as image size),
|
|
|
|
* this tells the corresponding size in pt.
|
|
|
|
* This adjusts the relative sizes to be similar to the rendering of the
|
|
|
|
* html page in a reference browser.
|
|
|
|
*
|
|
|
|
* In pdf, always 1 pt = 1/72 inch
|
|
|
|
*
|
|
|
|
* Rendering resolution of various browsers in px per inch:
|
|
|
|
* Windows Firefox and Internet Explorer:
|
|
|
|
* SystemControl->Display properties->FontResolution: Default:96, largefonts:120, custom:?
|
|
|
|
* Linux Firefox:
|
|
|
|
* about:config *resolution: Default:96
|
|
|
|
* (xorg screen dimension in mm and Desktop font dpi settings are ignored)
|
|
|
|
*
|
|
|
|
* Take care about extra font/image zoom factor of browser.
|
|
|
|
*
|
|
|
|
* In images, <img> size in pixel attribute, img css style, are overriding
|
|
|
|
* the real image dimension in px for rendering.
|
|
|
|
*
|
|
|
|
* @var int
|
|
|
|
*/
|
2021-08-31 15:22:42 -04:00
|
|
|
'dpi' => 96,
|
2016-01-31 12:53:30 -05:00
|
|
|
|
|
|
|
/**
|
2021-06-26 11:23:15 -04:00
|
|
|
* Enable inline PHP.
|
2016-01-31 12:53:30 -05:00
|
|
|
*
|
|
|
|
* If this setting is set to true then DOMPDF will automatically evaluate
|
|
|
|
* inline PHP contained within <script type="text/php"> ... </script> tags.
|
|
|
|
*
|
|
|
|
* Enabling this for documents you do not trust (e.g. arbitrary remote html
|
|
|
|
* pages) is a security risk. Set this option to false if you wish to process
|
|
|
|
* untrusted documents.
|
|
|
|
*
|
|
|
|
* @var bool
|
|
|
|
*/
|
2021-08-31 15:22:42 -04:00
|
|
|
'enable_php' => false,
|
2016-01-31 12:53:30 -05:00
|
|
|
|
|
|
|
/**
|
2021-06-26 11:23:15 -04:00
|
|
|
* Enable inline Javascript.
|
2016-01-31 12:53:30 -05:00
|
|
|
*
|
|
|
|
* If this setting is set to true then DOMPDF will automatically insert
|
|
|
|
* JavaScript code contained within <script type="text/javascript"> ... </script> tags.
|
|
|
|
*
|
|
|
|
* @var bool
|
|
|
|
*/
|
2021-08-31 15:22:42 -04:00
|
|
|
'enable_javascript' => false,
|
2016-01-31 12:53:30 -05:00
|
|
|
|
|
|
|
/**
|
2021-06-26 11:23:15 -04:00
|
|
|
* Enable remote file access.
|
2016-01-31 12:53:30 -05:00
|
|
|
*
|
|
|
|
* If this setting is set to true, DOMPDF will access remote sites for
|
|
|
|
* images and CSS files as required.
|
|
|
|
* This is required for part of test case www/test/image_variants.html through www/examples.php
|
|
|
|
*
|
|
|
|
* Attention!
|
|
|
|
* This can be a security risk, in particular in combination with DOMPDF_ENABLE_PHP and
|
|
|
|
* allowing remote access to dompdf.php or on allowing remote html code to be passed to
|
|
|
|
* $dompdf = new DOMPDF(, $dompdf->load_html(...,
|
|
|
|
* This allows anonymous users to download legally doubtful internet content which on
|
|
|
|
* tracing back appears to being downloaded by your server, or allows malicious php code
|
|
|
|
* in remote html pages to be executed by your server with your account privileges.
|
|
|
|
*
|
|
|
|
* @var bool
|
|
|
|
*/
|
2021-08-31 15:22:42 -04:00
|
|
|
'enable_remote' => env('ALLOW_UNTRUSTED_SERVER_FETCHING', false),
|
2016-01-31 12:53:30 -05:00
|
|
|
|
|
|
|
/**
|
2021-06-26 11:23:15 -04:00
|
|
|
* A ratio applied to the fonts height to be more like browsers' line height.
|
2016-01-31 12:53:30 -05:00
|
|
|
*/
|
2021-08-31 15:22:42 -04:00
|
|
|
'font_height_ratio' => 1.1,
|
2016-01-31 12:53:30 -05:00
|
|
|
|
|
|
|
/**
|
2022-07-23 06:36:37 -04:00
|
|
|
* Use the HTML5 Lib parser.
|
2022-07-17 09:01:59 -04:00
|
|
|
*
|
|
|
|
* @deprecated This feature is now always on in dompdf 2.x
|
2022-07-23 06:36:37 -04:00
|
|
|
*
|
2022-07-17 09:01:59 -04:00
|
|
|
* @var bool
|
2016-01-31 12:53:30 -05:00
|
|
|
*/
|
2022-07-23 06:36:37 -04:00
|
|
|
'enable_html5_parser' => true,
|
2017-02-25 09:59:56 -05:00
|
|
|
],
|
|
|
|
];
|