Re: download pdf via php

From: Martin Toft (none@mt--martintoft.dk.lh.bsd-dk.dk)
Date: Mon 03 Nov 2008 - 21:16:55 CET


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