Re: Save results on web page to doc or txt
by derby (Abbot) on Jul 13, 2004 at 11:56 UTC
|
Well ... you don't say whether the word doc will look different (graphics, fonts sizes, etc) from the TXT doc so I'll assume they dont.
Just generate the plain text page and then set the content-type (CGI header method) to text/plain or application/ms-word. MS-Word will open and display the plain text just fine.
The only caveat being that some browsers (and we all know there really doesn't need to be an s on the end of browsers) totally ignores the content-type so you may have to also changed the extension of the file being delivered (.txt or .doc).
There are ways to do this (mod-perl, re-directs, etc) but get the content-type approach working first and then jump the hoops only if you have to).
Update: I'm also assuming, you don't want the user to just use the File->Save As function of the browser after your results page is delivered to the browser - that would really be the easiest approach. | [reply] |
|
|
| [reply] |
|
|
#!/usr/bin/perl -wT
use strict;
use CGI;
$CGI::HEADERS_ONCE = 1;
use constant BUF_SIZE => 4096;
# Unbuffer the output stream:
$| = 1;
# Set the environment for Taint mode:
BEGIN {
$ENV{PATH} = "/bin:/usr/bin";
delete @ENV{qw (IFS CDPATH ENV BASH_ENV)};
}
my $q = new CGI;
my $source = &get_file_name($q);
# IE is funky, doesn't seem to understand
# "-type => 'text/octet-stream'",
# wants a .whatever filename
my $save_as_name = &get_saveas_name($source);
if (open(IN, $source)) {
print $q->header(
-type => 'text/octet-stream',
-attachment => $save_as_name
);
my $buffer;
binmode STDOUT;
while (read(IN, $buffer, BUF_SIZE)) {
print $buffer;
}
close IN;
} else {
print &get_error_page($q, $save_as_name, $!);
}
...
| [reply] [d/l] |
|
|
Re: Save results on web page to doc or txt
by tomhukins (Curate) on Jul 13, 2004 at 12:09 UTC
|
It's not clear what you're trying to do here: it would help if you broke the problem down into small parts and told us where you're stuck, maybe sharing some of the things you have tried. You might find How to ask questions the smart way. helpful for getting the most out of this site.
Here's my guess at what you want to do:
- Display an HTML form to the user.
- Process the user's input.
- Generate feedback as plain text or a Word document.
- Return this feedback to the user somehow.
Assuming I've guessed correctly, you can perform each of these stages as follows:
- Use a templating system (you mention Embperl) to generate the form, filling in data as required. Alternatively, use CGI's HTML output features.
- Write a handler using CGI, mod_perl or whatever you use.
- You will find plain text easier and more widely supported. If you want prettier layout, use RTF or PDF instead. Only use Word documents if you absolutely must: in general you'll find RTF an acceptable, better supported substitute.
- Either return the document directly from your handler, setting the appropriate MIME type in the Content-type HTTP header field, or write the file to disk and reference it with a hyperlink. If you reference the file, you should write a cron job to clear up old files.
| [reply] |
|
|
| [reply] |
Re: Save results on web page to doc or txt
by Joost (Canon) on Jul 13, 2004 at 12:00 UTC
|
I'd recommend using plain txt over ms-word, because it's a lot easer. You don't have to save your results to a file first, because you can print the output directly "to the browser" as it were. Just use the text/plain content type instead of the usual text/html:
#!/usr/bin/perl -wT
# some processing of calculations here
print "Content-type: text/plain\n\n"; # set content type to plain text
print "Result 1 = $result1\n";
print "Result 2 = $result2\n";
| [reply] [d/l] |
Re: Save results on web page to doc or txt
by Happy-the-monk (Canon) on Jul 13, 2004 at 11:35 UTC
|
| [reply] |
|
|
| [reply] |
Re: Save results on web page to doc or txt
by Scarborough (Hermit) on Jul 13, 2004 at 15:55 UTC
|
If you wont to future engineer your web page use XML. Then Word, Excel can read it and soon database servers will too. Not to mention other applications. Where I work everything is now being done in XML and very easy and useful it is too.
| [reply] |
|
|
| [reply] |