Compatible with DokuWiki
Similar to bookcreator, html2pdf, pdfbook, pdfex
Download and install the plugin using the Plugin Manager using the URL given above. Refer to Plugins on how to install plugins manually.
The plugin can't be installed through the plugin manager currently, because it's too big1). Please install it manually and make sure the installed directory is named dw2pdf.
The goal of this plugin was to provide a simple, ready to go PDF converter that almost faithfully replicates the screen view of your wiki pages (i.e. doesn't convert them to a print-document format like the latex plugin). It also bundles the necessary fonts and libraries (hence the 12M size) so that you should not need to do any configuration to get it up and running as quickly as possible.
To use the plugin, you simply need to call the page passing it a ”do=export_pdf” PHP argument. The easiest way to implement this is to add a button or similar somewhere in your template design.
Use the following to add another button in the upper or bottom button row of the default template2)
<form class="button" method="get" action="<?php wl($ID)?>">
<div class="no">
<input type="submit" value="Export to PDF" class="button" />
<input type="hidden" name="do" value="export_pdf" />
<input type="hidden" name="id" value="<?php echo $ID?>" />
</div>
</form>
Or use this for a simple 16×16 icon somewhere in your template:
<a href="<?php echo exportlink($ID, 'pdf')?>"><img src="<?php echo DOKU_BASE?>lib/images/fileicons/pdf.png" alt="PDF Export" /></a>
You can mix the 2 previous methods, and get a button with an image inside, with this code:
<form class="button" method="get" action="<?php wl($ID)?>">
<div class="no">
<button type="submit" class="button">
<img src="<?php echo DOKU_BASE?>lib/images/fileicons/pdf.png" alt="PDF Export" />
Export to PDF
</button>
<input type="hidden" name="do" value="export_pdf" />
<input type="hidden" name="id" value="<?php echo $ID?>" />
</div>
</form>
When using the template ”monobook for DokuWiki”, to have an Export PDF tab, in /user/tabs.php, use this code
//PDF plugin: export tab if (file_exists(DOKU_PLUGIN."dw2pdf/action.php") && !plugin_isdisabled("dw2pdf")){ $_monobook_tabs["tab-export-pdf"]["text"] = $lang["monobook_tab_exportpdf"]; $_monobook_tabs["tab-export-pdf"]["href"] = wl(getID(), array("do" => "export_pdf"), false, "&"); }
Add translation to file /lib/tpl/monobook/lang/en/lang.php
$lang["monobook_tab_exportpdf"] = "Export as PDF";
When using the typo template, add this code in lib/tpl/typo/tpl_functions.php just before print ' </ul>' . DOKU_LF;
print '<li>'.tpl_link(wl($ID,'do=export_pdf'), 'Export PDF', 'class="action export_pdf" rel="nofollow"',1).'</li>'.DOKU_LF
The plugin provides a few configuration settings that can be configured in the Configuration Manager.
The output option controls if PDF should be opened within the Browser (when a PDF plugin is installed) or should always be downloaded.
By default, generated PDFs are cached. This includes embedded images. This means the ACLs for embedded images will not be rechecked when a user requests a cached PDF. If this is a problem, you should disable caching.
Chose which PDF template (see below) should be used by default. The template can be overridden with the tpl request variable.
By default the plugin generates PDF bookmarks for each headline in the source page. You can lower the number here to include only higher level headlines in the bookmarks. Set it 0 to disable bookmarks all together.
The plugin automatically uses print.css and pdf.css files of installed 3rd party plugins to style plugin content. Often plugins do not provide such styles or you may actually prefer their screen styles. In that case list the names of these plugins here.
Templates define the design of the created PDF files and are a good way to easily customize them to your Corporate Identity.
To create a new template, just create a new folder within the plugin's tpl folder and put your header, footers and style definitions in it. See lib/plugins/dw2pdf/tpl/default for an example.
The following files can be created and will be used to set headers and footers on odd or even pages. Special headers/footers can be used on the first page of a document. If a file is does not exist the next more generic one will be tried. Eg. if You don't differ between even and odd pages, just the header.html is used.
header_odd.html – Header for odd pagesheader_even.html – Header for even pagesheader_first.html – Header for the first pageheader.html – Header for all pagesfooter_odd.html – Footer for odd pagesfooter_even.html – Footer for even pagesfooter_first.html – Footer for the first pagefooter.html – Footer for all pagescitation.html – Citationbox to be printed after each articleYou can use all HTML that is understood by mpdf (See http://mpdf1.com/manual/index.php?tid=256)
If you reference image files, be sure to prefix them with the @TPLBASE@ parameter (See Replacements below).
The following replacement patterns can be used within the header and footer files.
@PAGE@ – current page number in the PDF@PAGES@ – number of all pages in the PDF@ID@ – The article's pageID@TITLE@ – The article's title@PAGEURL@ – URL to the article@WIKI@ – The wiki's title@WIKIURL@ – URL to the wiki@UPDATE@ – Time of the last update of the article@DATE@ – time when the PDF was created (might be in the past if cached)@BASE@ – the wiki base directory@TPLBASE@ – the PDF template base directory (use to reference images)@QRCODE@ – QR code image pointing to the original page urlCustom stylings can be provided in the following file of your template:
You can use all the CSS that is understood by mpdf (See http://mpdf1.com/manual/index.php?tid=34)
If you're a plugin developer and want to make your syntax plugin compatible with the PDF export, here are a few tips:
print.css and PDF export will probably work out of the boxpdf.css
If you want to provide custom HTML for the PDF export you should check if the renderer is a renderer_plugin_dw2pdf when rendering xhtml.
function render($mode, &$renderer, $data){ if($mode == 'xhtml') { if(is_a($renderer,'renderer_plugin_dw2pdf')){ // this is the PDF export, render simple HTML here }else{ // this is normal XHTML for Browsers, be fancy here } return true; } return false; }
By default, dw2pdf will fetch embedded images via HTTP. If you want to embed local image files without going through HTTP, you can give their location by writing an img tag using the dw2pdf pseudo protocol:
$R->doc .= '<img src="dw2pdf:///full/path/to/some/image.png">';
Please report issues and requests in the issue tracker linked at the top.