https://github.com/kiklop74/moodle-local_dompdf
Provides DomPdf library for Moodle
https://github.com/kiklop74/moodle-local_dompdf
moodle moodle-local moodle-plugin php
Last synced: 25 days ago
JSON representation
Provides DomPdf library for Moodle
- Host: GitHub
- URL: https://github.com/kiklop74/moodle-local_dompdf
- Owner: kiklop74
- License: gpl-3.0
- Created: 2019-06-03T16:37:17.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2024-07-17T16:07:45.000Z (almost 2 years ago)
- Last Synced: 2025-11-27T15:16:51.081Z (7 months ago)
- Topics: moodle, moodle-local, moodle-plugin, php
- Language: PHP
- Size: 4.29 MB
- Stars: 1
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Dompdf
======
**Dompdf is an HTML to PDF converter**
At its heart, dompdf is (mostly) a [CSS 2.1](http://www.w3.org/TR/CSS2/) compliant
HTML layout and rendering engine written in PHP. It is a style-driven renderer:
it will download and read external stylesheets, inline style tags, and the style
attributes of individual HTML elements. It also supports most presentational
HTML attributes.
## Requirements
* PHP 7.1+
* Moodle 3.5+
* MBString extension
### Recommendations
* OPcache (OPcache, XCache, APC, etc.): improves performance
* IMagick or GMagick extension: improves image processing performance
Visit the wiki for more information:
https://github.com/dompdf/dompdf/wiki/Requirements
### Internal settings
By default whenever a PDF is generated systems uses `$CFG->localcachedir/dompdf` to store temporary data.
### Usage
To create new instance of the PDF class use following code:
$pdf = \local_dompdf\api\pdf::createnew();
This gives you an instance of `\Dompdf\Dompdf` class and you just use it as outlined in the
official [library documentation](https://github.com/dompdf/dompdf/wiki).
#### Images stored in Moodle HTML editor.
In case you want to convert to PDF HTML that does contain images coming from Moodle internal file systems you
need to employ the image recoding for each specific field.
For example if you have a place where you can set the image in HTML editor when you retrieve it from database
to display it on screen you use this code:
$rawtext = $DB->get_field('sometable', 'somefield', ['id' => 123]);
$options = [
'noclean' => true, 'para' => false, 'filter' => true,
'context' => $context, 'overflowdiv' => true
];
$intro = file_rewrite_pluginfile_urls(
$rawtext, 'pluginfile.php', $context->id, $component, $filearea, $itemid
);
$value = format_text($intro, $format, $options, null);
For Dmpdf this does not work. There is a specific rewrite method that encode's images directly into html
and makes them usable by library:
$rawtext = $DB->get_field('sometable', 'somefield', ['id' => 123]);
$options = [
'noclean' => true, 'para' => false, 'filter' => true,
'context' => $context, 'overflowdiv' => true
];
$intro = \local_dompdf\api\pdf::file_rewrite_image_urls(
$rawtext, $itemid, $filearea, $contextid, $component
);
$value = format_text($intro, $format, $options, null);
### Examples
Examples are located in examples directory of the plugin.