Use a slash and then the filename.pdf.  So 
http://whatever/stuff.php?options/desired_filename.pdf would do it.  It's 
ok that you aren't linking to a real file, it doesn't matter.  Just the 
file that you want the .pdf document to be known as to the user's browser.

At 05:07 PM 2/26/2002 +0100, Sviss Cobazor wrote:
>Hmm in my case there is no file to link to. The pdf document doesn't exist,
>it's generated on-the-fly. Take this example:
>
>test.php contains:
>
><?
>function topdf($file, $options = "") {
>     header("Content-Type: application/pdf");
>     flush();
>  passthru("C:\htmldoc -t pdf14 --quiet --jpeg size A4 --webpage $options
>\"$file\"");
>}
>
>$url = "http://localhost/whatever.html";;
>
>topdf($url);
>?>
>
>So the idea was to write the address "http://localhost/test.php"; and the
>browser would load Acrobat Reader and show the pdf document generated from
>"whatever.html".
>
>So how do I get the ".pdf" added?
>By typing the address "http://localhost/test.php?.pdf"; ? Doesn't seem to
>work.
>
>"Mike Flynn" <[EMAIL PROTECTED]> wrote in message
>[EMAIL PROTECTED]">news:[EMAIL PROTECTED]...
> > Yes, this has been documented extensively on the web.  The fix is to put a
> > pdf extension at the end of the url call to your script that is returning
> > the pdf file.  You can use an arbitrary filename ending in .pdf, or you
>can
> > use the actual filename of the .pdf file, which would be preferable so
>that
> > if the user tries to save the .pdf file, the default filename is
> > correct.  So what this means is that the script that is linking to your
> > .pdf-returning script needs to know the filename/that it is a .pdf file,
> > ahead of time.  So you want to do something like this:
> >
> > <?php
> > $query  = 'SELECT strFileFilename FROM tblFiles ';
> > $query .= "WHERE intFileID=$id";
> > $filename = mysql_result(mysql_query($query), 0);
> > print "<a href=\"/stuff/getfile.php?id=$id/$filename\">Here's the
>PDF</a>\n";
> > ?>
> >
> > -Mike
> >
> > At 03:09 PM 2/26/2002 +0100, Sviss Cobazor wrote:
> > >However, sigh, IE seems to have a bug so that Acrobat Reader is only
>loaded
> > >when the URL ends with ".pdf" aka IE doesn't give a rats about the header
> > >sent to it.
> > >Using Telnet I can see that the pdf page is returned correctly but when
> > >using IE I still get a blank page due to the fact that no (pre-generated)
> > >pdf document is sent to it and therefore the URL doesn't contain a
> > >"whatever.pdf" ind the end and therefore doesn't load Acrobat Reader.
> > >Look at this example:
> > >
> > >header("Content-Type: application/pdf");
> > >flush();
> > >passthru("C:\htmldoc -t pdf14 --quiet --jpeg size A4 --webpage
> > >\"http://localhost/whatever.html\"";);
> > >
> > >This works fine with Telnet (where output is nonsense),
> > >but doesn't with IE (where the output would make sense).
> > >
> > >Does anyone have a solution to this?
> > >How to get IE to understand that the data sent to it is to be handled as
>a
> > >pdf document (as in load Acrobat Reader)?
> > >
> > >
> > >
> > >"Sviss Cobazor" <[EMAIL PROTECTED]> wrote in message
> > >[EMAIL PROTECTED]">news:[EMAIL PROTECTED]...
> > > > It seemed that it was Putty itself that wouldn't work for me (don't
>ask me
> > > > why).
> > > > So I used Telnet and it worked.
> > > > After having my advicor (this is a education project) visiting me we
>found
> > > > out why that passthru() function didn't work.
> > > > It's very simple really, passthru() doesn't allow spaces in paths so
> > > > "C:\program files\etc." becomes "C:\program" => false path.
> > > > Removing the application (htmldoc.exe) to "C:\" instead did the job.
> > > >
> > > > For anyone else having same problems this is the correct way to type
>it
> > >(my
> > > > example):
> > > >
> > > > <?
> > > > function topdf($filename, $options = "") {
> > > >     header("Content-Type: application/pdf");
> > > >     flush();
> > > >     passthru("C:\htmldoc -t pdf14 --quiet --jpeg size A4 --webpage
> > >$options
> > > > \"$filename\"");
> > > > }
> > > > ?>
> > > >
> > > > This function now works and sends the result pdf directly to the
>browser.
> > > >
> > > > Thanks for your time Court, I wouldn't have thought of using Telnet
>myself
> > > > :)
> > > >
> > > > ~ Sviss
> > > >
> > > > "Court Shrock" <[EMAIL PROTECTED]> wrote in message
> > > > [EMAIL PROTECTED]">news:[EMAIL PROTECTED]...
> > > > > To explain the 400 bad request, you most likely had a typo when you
> > >typed
> > > > in
> > > > > the HTTP request.  The request is case-sensitive and very
>particular.
> > > > Most
> > > > > likely, the "Host: localhost" portion of the request messed up
>somehow.
> > > > >
> > > > > When you get a "HTTP/1.1 200 OK" response, that means that the
>webserver
> > > > > accepted the request and will process your request.  In order to
>test
> > > > > whether or not the passthru function is doing things properly, you
>are
> > > > > verifying what is being sent to the browser by simulating what the
> > >browser
> > > > > would send to your webserver and then what the browser is getting in
> > > > > response.  It will all start to make sense when you start seeing
>your
> > > > files
> > > > > output--of course, in the request that I had you type, I assumed the
> > >file
> > > > > that returns the pdf is named "index.php" or whatever file your
> > >webserver
> > > > > will retrieve when it gets a root "/" request.  If this is not the
>case,
> > > > you
> > > > > need to replace the "GET / HTTP/1.1" line with "GET /yourfile.php
> > > > HTTP/1.1"
> > > > > or even "GET /yourfile.php?var1=whatever__yougettheidea HTTP/1.1".
> > > > >
> > > > > passthru is working properly if you see something like:
> > > > > HTTP/1.1 200 OK
> > > > > Date: Mon, 25 Feb 2002 23:20:35 GMT
> > > > > Server: Apache/1.3.20 (Unix) PHP/4.0.6 mod_ssl/2.8.4 OpenSSL/0.9.6
> > > > > X-Powered-By: PHP/4.0.6
> > > > > Transfer-Encoding: chunked
> > > > > Content-Type: application/pdf
> > > > >
> > > > > [lots of binary data]
> > > > >
> > > > > it isn't working if you see something like this:
> > > > > HTTP/1.1 200 OK
> > > > > Date: Mon, 25 Feb 2002 23:20:35 GMT
> > > > > Server: Apache/1.3.20 (Unix) PHP/4.0.6 mod_ssl/2.8.4 OpenSSL/0.9.6
> > > > > X-Powered-By: PHP/4.0.6
> > > > > Transfer-Encoding: chunked
> > > > > Content-Type: text/html
> > > > >
> > > > > <html>some stupid html, or nothing at all</html>
> > > > >
> > > > > in which case, I would try a different method to verify that data is
> > > > > properly passing between php and htmldoc.exe.
> > > > >
> > > > > I hope this has addressed some of the confusion.
> > > > > Court
> > > > >
> > > > > > -----Original Message-----
> > > > > > From: Sviss Cobazor [mailto:[EMAIL PROTECTED]]
> > > > > > Sent: Monday, February 25, 2002 5:12 PM
> > > > > > To: [EMAIL PROTECTED]
> > > > > > Subject: Re: [PHP-WIN] passthru() on Win98 ??
> > > > > >
> > > > > >
> > > > > > I followed your instructions and got:
> > > > > >
> > > > > > HTTP/1.1 400 bad request
> > > > > > > Date: Tue, 26 Feb 2002 01:05:57 GMT
> > > > > > > Server: Apache/1.3.20 (Win32)
> > > > > > > Connection: close
> > > > > > > Content-Type: text/html charset=iso-8859-1
> > > > > >
> > > > > > ... And then the same in html source ... (in the putty window)
> > > > > >
> > > > > > So I didn't get what was expected but either way I'm not sure
> > > > > > what to do if
> > > > > > I did.
> > > >
> > > >
> > >
> > >
> > >
> > >--
> > >PHP Windows Mailing List (http://www.php.net/)
> > >To unsubscribe, visit: http://www.php.net/unsub.php
> >
> >
> > -- Mike Flynn - Burlington, VT --
> >   mike @ mikeflynn.net
> >   http://www.mikeflynn.net/
> > home=>work=>home=>store=>home [adbusters]
> >
>
>
>
>--
>PHP Windows Mailing List (http://www.php.net/)
>To unsubscribe, visit: http://www.php.net/unsub.php


-- Mike Flynn - Burlington, VT --
  mike @ mikeflynn.net
  http://www.mikeflynn.net/
home=>work=>home=>store=>home [adbusters]


-- 
PHP Windows Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to