fwiw, you might also want to think about a "store and serve" system, depending on how much volume you'll be handling or how much processing it takes to produce each pdf.
we use a similar system for dynamic images using a PerlHandler. basically, the first time an image is requested, we generate it and save it to a file. from then on we just serve the file. but at the mason level you could use something like this: <%init> my $file_name = ($r->filename =~ /.*?\/pdfs\/(.*?)\.pdf/gi); generate_and_save_pdf($file_name); my $fh; open ( $fh, $file_name ); $m->clear_buffer(); $r->content_type ( 'application/pdf' ); $r->send_http_header; $r->send_fd ( $fh ); close ( $fh); return; </%init> and since this code is in the dhandler, the ( ! -e $file_name ) is a given. i'm assuming from your earlier code that you already have a scheme for encoding the pertinent information into the url/file name. one thing i like better about this approach is that it uses an apache internal instead of having to read and handle binary data in a scalar, which i think can be troublesome because of charsets and input/output record seperators. and remember, watch the whitespace. J Cook wrote: > I found the problem, it was in my session_handler.pl, which is pretty > much a stock version that I got off of masonhq.com for use with > MasonX::Request::WithApacheSession. I commented out: > > # return -1 if $r->content_type && $r->content_type !~ m|^text/|io; > > out of my handler sub. Now it works fine but I'm wondering if this is > the best way to handle it - it seems this line is here to restrict my > mason app from serving anything other than a text/(html|plain) document. > Will commenting this out cause any problems? > > Justin > Sherrard Burton wrote: > >>john is right about the whitespace, but a 404 would have nothing to do >>with whether the content is generated on the fly or served from >>somewhere else on the filesystem. >> >>my guess is that something is not quite right with your mason setup. i >>would break it down to a simple test case where you have a dhandler that >>just dumps the apache headers or something simple like that, because it >>doesn't look like your dhandler is actually getting called. you could >>also create the same kind of test component in an actual file with a >>.html or .pdf extension to see if they are served and parsed by mason. >> >> >> >>John Williams wrote: >> >> >>>You have carriage returns before and after <% $output %> which could be >>>messing up your pdf, and which would definitely mess up a gif or jpeg. >>> >>>Try putting the output inside the <%init> section and abort when you are >>>done, like this: >>> >>><%init> >>># ... generate pdf ... >>>$r->content_type('application/pdf'); >>>$m->clear_buffer; >>>$m->print($output); >>>$m->abort; >>></%init> >>> >>>~ John Williams >>> >>> >>>On Tue, 11 Jul 2006, J Cook wrote: >>> >>> >>> >>> >>>>Hi, >>>> >>>>I have a module that generates a pdf file on the fly that I want to use >>>>with Mason. So I have a directory named /pdfs and a dhandler that looks >>>>like: >>>> >>>><%init> >>>>my $file_name = ($r->filename =~ /.*?\/pdfs\/(.*?)\.pdf/gi); >>>>$r->content_type('application/pdf'); >>>>my $output = generate_pdf($file_name); >>>></%init> >>>> >>>><% $output %> >>>> >>>><%flags> >>>>inherit => undef >>>></%flags> >>>> >>>>And I have in httpd.conf I have: >>>> >>>> <FilesMatch "(\.html|.pdf)$"> >>>> SetHandler perl-script >>>> PerlHandler MyApp::Mason >>>> </FilesMatch> >>>> >>>>First off the file_name must match a database row, so generate_pdf can >>>>use that info to make the pdf. So when I call something like: >>>>http://example.com/pdfs/12345.pdf >>>>I want to see a pdf pop up, but all I get is a 404 'Not Found' error. On >>>>masonhq.com in the FAQs I read: >>>> >>>>"Use mod_perl's $r->content_type function to set the appropriate MIME >>>>type. This will allow you to output, for example, a GIF file, even if >>>>your component is called dynamicImage.html." >>>> >>>>Does this mean that Mason cannot serve a pdf file that is generated on >>>>the fly like this? Do I need to name it with a .html extension and hope >>>>this doesn't break in certain browsers? Or is it something in my code >>>>above that is wrong? >>>> >>>>Justin >>>> >>>> >>>>------------------------------------------------------------------------- >>>>Using Tomcat but need to do more? Need to support web services, security? >>>>Get stuff done quickly with pre-integrated technology to make your job >>>>easier >>>>Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo >>>>http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 >>>>_______________________________________________ >>>>Mason-users mailing list >>>>Mason-users@lists.sourceforge.net >>>>https://lists.sourceforge.net/lists/listinfo/mason-users >>>> >>>> >>> >>> >>>------------------------------------------------------------------------- >>>Using Tomcat but need to do more? Need to support web services, security? >>>Get stuff done quickly with pre-integrated technology to make your job easier >>>Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo >>>http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 >>>_______________________________________________ >>>Mason-users mailing list >>>Mason-users@lists.sourceforge.net >>>https://lists.sourceforge.net/lists/listinfo/mason-users >>> >> >> >>------------------------------------------------------------------------- >>Using Tomcat but need to do more? Need to support web services, security? >>Get stuff done quickly with pre-integrated technology to make your job easier >>Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo >>http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 >>_______________________________________________ >>Mason-users mailing list >>Mason-users@lists.sourceforge.net >>https://lists.sourceforge.net/lists/listinfo/mason-users >> >> > > > > > ------------------------------------------------------------------------- > Using Tomcat but need to do more? Need to support web services, security? > Get stuff done quickly with pre-integrated technology to make your job easier > Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo > http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 > _______________________________________________ > Mason-users mailing list > Mason-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/mason-users ------------------------------------------------------------------------- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 _______________________________________________ Mason-users mailing list Mason-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/mason-users