Thanks for the suggestions. I was thinking about storing it for later but this is something where it doesn't have to stick around for long. I was thinking that caching it for a day or two would be sufficient. Can I cache a .pdf file?
Justin Sherrard Burton wrote: > 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 > > ------------------------------------------------------------------------- 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