Date: Mon, 3 Nov 2008 21:16:55 +0100 From: Martin Toft <none@mt--martintoft.dk.lh.bsd-dk.dk> To: bsd-dk@bsd-dk.dk Subject: Re: download pdf via php
On Mon, Nov 03, 2008 at 01:33:13PM +0100, Ebbe Hjorth wrote:
> Hej,
>
> Jeg mangler en mulighed for at download en pdf fil, via en dynamisk php
> side, altså ikke bare http://xxx/yyy.pdf men http://xxx/yyy.php?x=1&Y=2
>
> Hvis jeg skriver mulighed 2 i en browser, så bliver jeg smidt direkte over
> i en pdf, men hvis jeg prøver at downloade den med wget, eller pro
> versionen af samme, så får jeg bare en fejl. Nogen der har en ide til hvor
> jeg får trukket den i land? Jeg skal bagefter konvertere pdf filen til
> html, men klarer pdftohtml porten for mig.
>
> Mvh Ebbe
Hej Ebbe
Som Morten Winther skriver - sender serveren den korrekte Content-Type?
wget kan nemlig sagtens downloade en PDF fil fra den type URL, som du
har i mulighed 2, hvis Content-Type er korrekt.
En lille test:
$ cat getpdf.php
<?php
header('Content-type: application/pdf');
header('Content-Disposition: attachment; filename="testpdf.pdf"');
readfile('testpdf.pdf');
?>
$ file testpdf.pdf
testpdf.pdf: PDF document, version 1.4
$ wget 'http://obsd.dk/getpdf.php?ligegyldigvariabel1=1&ligegyldigvariabel2=2'
--2008-11-03 21:08:02-- http://obsd.dk/getpdf.php?ligegyldigvariabel1=1&ligegyldigvariabel2=2
Resolving obsd.dk... 87.230.33.7
Connecting to obsd.dk|87.230.33.7|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [application/pdf]
Saving to: `getpdf.php?ligegyldigvariabel1=1&ligegyldigvariabel2=2.1'
[ <=> ... ] 6,675 --.-K/s in 0.06s
2008-11-03 21:08:03 (114 KB/s) - `getpdf.php?ligegyldigvariabel1=1&ligegyldigvariabel2=2.1' saved [6675]
Med --content-disposition fås det korrekte filnavn:
$ wget --content-disposition 'http://obsd.dk/getpdf.php?ligegyldigvariabel1=1&ligegyldigvariabel2=2'
--2008-11-03 21:10:05-- http://obsd.dk/getpdf.php?ligegyldigvariabel1=1&ligegyldigvariabel2=2
Resolving obsd.dk... 87.230.33.7
Connecting to obsd.dk|87.230.33.7|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [application/pdf]
--2008-11-03 21:10:05-- http://obsd.dk/getpdf.php?ligegyldigvariabel1=1&ligegyldigvariabel2=2
Connecting to obsd.dk|87.230.33.7|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [application/pdf]
Saving to: `testpdf.pdf'
[ <=> ... ] 6,675 --.-K/s in 0.06s
2008-11-03 21:10:05 (117 KB/s) - `testpdf.pdf' saved [6675]
$ diff -s testpdf.pdf getpdf.php\?ligegyldigvariabel1=1\&ligegyldigvariabel2=2
Files testpdf.pdf and getpdf.php?ligegyldigvariabel1=1&ligegyldigvariabel2=2 are identical
Men bemærk, at den option er experimental [0]:
--content-disposition
If this is set to on, experimental (not fully-
functional) support for "Content-Disposition" headers
is enabled. This can currently result in extra round-
trips to the server for a "HEAD" request, and is known
to suffer from a few bugs, which is why it is not
currently enabled by default.
This option is useful for some file-downloading CGI
programs that use "Content-Disposition" headers to
describe what the name of a downloaded file should be.
Mvh.
Martin
[0] http://www.gnu.org/software/wget/manual/wget.html
This archive was generated by hypermail 2b30 : Sun 30 Nov 2008 - 23:00:02 CET