[dokuwiki] Re: pdf export

  • From: Guy Sheffer <guysoft@xxxxxxxxxx>
  • To: dokuwiki@xxxxxxxxxxxxx
  • Date: Wed, 30 Aug 2006 18:03:49 +0300

Hi Heikko,
I tried here to fiddle about with this code,

for a start the script "destination.prodownload.class.php"
doesn't seem to be present. I only found
"destination.download.class.php".

I seem to have got it all running with the folowing configuration in the
config file:

// Path to Ghostscript executable
define('GS_PATH','/usr/bin/gs');

// Path to font metric files (AFM files). 
// NOTE: Trailing backslash required
define('TYPE1_FONTS_REPOSITORY',"/usr/share/fonts/type1/gsfonts/");


However it only returned a blank pdf page.

Guy

On Wed, 2006-08-30 at 12:18 +0300, Heikko Ellermaa wrote:
> Hi!
> 
> I created a simple (well, more or less) solution to get the wiki
content 
> into a pdf file. Now I'm asking for comments, suggestions and a
second 
> opinion.
> 
> Here's what worked for me:
> 1) I donwloaded the "html2ps and html2pdf" PHP library from 
> http://www.tufat.com/script19.htm. It worked amazingly vell for
almost 
> every html page I tested it with (has image support, loads of options 
> and so on)
> 
> 2) Based on the samples in html2pdf I created the attached
url2pdf.php 
> script into 'samples' directory of html2pdf and configured the whole 
> thing work in my webserver.
> 
> 3) Now we reach the connection to dokuwiki. In the main.php I added 
> manually a PDF button (I really could not find a way to create the 
> button automagically with dokuwiki scripts as these allowed only
posting 
> to dokuwiki itself). So here's the listing of the PDF button code
which 
> I placed right after the History button:
> 
>         <form class="button" method="get" 
> action="http://localhost/html2pdf/samples/url2pdf.php";><div 
> class="no"><input type="hidden" name="url" value="<?= 
>
"http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'] ?>" /><input 
> type="submit" value="Save as PDF" class="button" title="ALT+F" 
> accesskey="f" /></div></form>
> 
> 4) The result - I have button which prompts me of saving the page as 
> PDF. Very useful. And quite clean.
> 
> So it's kind of a hack, and I am writing because if there's a better
way 
> to create the button and to know the _real_ _absolute_ url for the 
> current wiki page then please let me know. If you find it any other
way 
> useful or someone can import this to be a dokuwiki feature then this 
> would be even nicer.
> 
> 
> best regards,
> Heikko
> 
> 
> 
> IMPORTANT: The contents of this email and any attachments are
confidential. They are intended for the named recipient(s) only.
> If you have received this email in error, please notify the system
manager or the sender immediately and do not disclose the contents to
anyone or make copies thereof.
> *** PineApp scanned this email for viruses, vandals, and malicious
content. *** 
> 
>  
> HTML document attachment (url2pdf.php)
> 'print',                   'renderimages' => true,
> 'renderforms'  => true,                   'renderlinks'  => true,
> 'mode'         => 'html',                   'debugbox'     => false,
> 'draw_page_border' => false                   ); $media =
> Media::predefined('A4'); $media->set_landscape(false);
> $media->set_margins(array('left'   => 10,
> 'right'  => 10,                           'top'    => 10,
> 'bottom' => 10)); $media->set_pixels(1024); $g_px_scale =
> mm2pt($media->width() - $media->margins['left'] -
> $media->margins['right']) / $media->pixels; $g_pt_scale = $g_px_scale
> * 1.43;  $pipeline = new Pipeline; $pipeline->fetchers[]     = new
> FetcherURL; $pipeline->data_filters[] = new DataFilterDoctype();
> $pipeline->data_filters[] = new DataFilterUTF8("");
> $pipeline->data_filters[] = new DataFilterHTML2XHTML;
> $pipeline->parser         = new ParserXHTML;
> $pipeline->pre_tree_filters = array(); $pipeline->layout_engine  = new
> LayoutEngineDefault; $pipeline->post_tree_filters = array();
> $pipeline->output_driver  = new OutputDriverFPDF(); $time = time();
> $pipeline->destination = new DestinationDownload($url);
> $pipeline->process($url, $media);    $message = sprintf("
> Processing of '%s' completed in %u seconds", $url, time() - $time);
> error_log($message);   flush(); $time = time(); ?>
-- 
42
-- 
42

Other related posts: