[PHP] PDF header

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Er zijn honderden topics van, ik weet het.
Maar ik krijg echt mijn headers niet goed en natuurlijk heb ik alle mogelijke headers geprobeerd die ik tegen gekomen ben.

Ik heb het volgende:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$fullPath    = getcwd()."/bestanden/".$aRow["file"];

$fd = fopen ($fullPath, "rb");
$fsize = filesize($fullPath);
$fname = basename ($fullPath);

header("Pragma: ");
header("Cache-Control: ");
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"".$fname."\"");
header("Content-length: $fsize");

fpassthru($fd);

exit;


Dit werkt prima, maar dan wordt er een download venster geopend. En dat wil ik niet.
De PDF moet in het venster geopend worden.

Zodra ik in de header "attachment" verander in "inline" krijg ik een error bij het openen van de pdf.
Adobe Acrobat geeft de volgende error:
Adobe Acrobat kan 'pa0318001.fdf' niet openen omdat enz....

Het bestand heet 'test.pdf' :?

Is dit een bestand wat in het geheugen gecreerd is ofzo??
Heeft iemand enig idee wat ik fout doe?

Acties:
  • 0 Henk 'm!

  • Johnny
  • Registratie: December 2001
  • Laatst online: 14:39

Johnny

ondergewaardeerde internetguru

waarom geeft je dan ook niet application/pdf als Content-Type?

Aan de inhoud van de bovenstaande tekst kunnen geen rechten worden ontleend, tenzij dit expliciet in dit bericht is verwoord.


Acties:
  • 0 Henk 'm!

  • Onno
  • Registratie: Juni 1999
  • Niet online
Een PDF heeft application/pdf als MIME-type, terwijl jij (waarom eigenlijk?) application/octet-stream gebruikt. Verder geef je met "Content-Disposition: attachment" expliciet aan dat je een bestand dat opgeslagen moet worden teruggeeft. Nogal onhandig als je wilt dat ie in de browser geopend wordt. ;)

Acties:
  • 0 Henk 'm!

  • Radiant
  • Registratie: Juli 2003
  • Niet online

Radiant

Certified MS Bob Administrator

PHP:
1
header("Content-type: application/octet-stream");

Dat klopt niet. Het MIME type van een pdf is application/pdf.

edit: ik ben traag :P

[ Voor 19% gewijzigd door Radiant op 05-04-2005 12:11 ]


Acties:
  • 0 Henk 'm!

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 12:54
Ff ik mijn source gespit en je moet natuurlijk een andere content type gebruiken.

Source snipplet.
PHP:
1
2
3
4
5
    header("Content-type: application/pdf");
    header("Cache-Control: no-store, no-cache, must-revalidate");
  //  header('Content-Disposition: attachment; filename="downloaded.pdf"');
    cpdf_output_buffer($this->cpdf);
    cpdf_close($this->cpdf);


edit:

Zo traag als dikke poep door een trechter weer eens.

Maar waarom heb je de PHP manual niet benadered? Die staat boordevol van dit soort informatie, daar had je dit vraagstuk/antwoord ook kunnen vinden.

[ Voor 29% gewijzigd door Sybr_E-N op 05-04-2005 12:14 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Onno schreef op dinsdag 05 april 2005 @ 12:10:
Een PDF heeft application/pdf als MIME-type, terwijl jij (waarom eigenlijk?) application/octet-stream gebruikt.
Natuurlijk heb ik als eerste application/pdf geprobeert, maar dan hou ik hetzelfde probleem.
Onno schreef op dinsdag 05 april 2005 @ 12:10:Verder geef je met "Content-Disposition: attachment" expliciet aan dat je een bestand dat opgeslagen moet worden teruggeeft. Nogal onhandig als je wilt dat ie in de browser geopend wordt. ;)
Lees aub de ts, daar staat vermeld dat ik graag inline wil gebruiken ;)

[ Voor 9% gewijzigd door Verwijderd op 05-04-2005 12:31 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Als je de content-type al niet goed krijgt, hoe denk je dan de source goed te kunnen krijgen? Gebruik gewoon de eZpdf-class. Persoonlijk heb ik nog nooit zo'n gebruiksvriendelijke en goed gedocumenteerde vrij beschikbare PHP-class gezien!

Acties:
  • 0 Henk 'm!

  • stappel_
  • Registratie: Augustus 2000
  • Laatst online: 20:41
Verwijderd schreef op dinsdag 05 april 2005 @ 12:07:
Zodra ik in de header "attachment" verander in "inline" krijg ik een error bij het openen van de pdf.
Adobe Acrobat geeft de volgende error:
Adobe Acrobat kan 'pa0318001.fdf' niet openen omdat enz....
Is het somes een HTTPS:// pagina? Dan gebruik je vast ook nog IE om te testen. IE heeft grote problemen met secure pagina's. Ik gebruik de volgende code
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php

$temp_header_date = date("Ymd_His");
$temp_header_name = "generated_output_$ps_temp_header_date.pdf";

header("Expires: Sat, 01 Jan 2000 00:00:00 GMT");
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Description: File Transfer");

session_cache_limiter("must-revalidate");
header("Content-Type: application/pdf");
header("Content-Disposition: attachment; filename=\"" . $temp_header_name."\"");

de volgorde van headers en session is heel erg van belang voor IE.

Ubero: #2, Euler: #1, GOT: #1, Des: #1, Zeta: #1, Eon: #3, OGR-24: #3, OGR-25: #7,
LM: #7, AP: #5, DF: #19, D2OL: #37, SOB: #50, TSC: #63, RC5: #96

Pagina: 1