Avatar billede dadane Novice
02. juli 2004 - 19:00 Der er 8 kommentarer og
1 løsning

Lade php servere en PDF fil (direkte fra disken)?

Følgende lille script giver mig mit billede

<? include "pic.jpg"; ?>

Hvis man vil kan man så lave alle mulige sjove ting (sikre at folk er logget ind, lave sin egen logfil (hvis web hosten ikke understøtter adgang til log eller hvis man vil logge andre ting som PHP kan).

Det er fikst. MEN

Hvorfor duer følgende så ikke?

<? include "mydoc.pdf"; ?>

Tjaeh - forklaringen er nok den at der er et <? efterfulgt af noget den ikke fatter eller andet som får den til at kaste op. Jeg får i hvert fald følgende fejl:

Parse error: parse error, unexpected T_STRING in c:\apache\apache\htdocs\mydoc.pdf on line 232

Men hvad gør man så?
Avatar billede dmcn Praktikant
02. juli 2004 - 19:08 #1
Avatar billede jakoba Nybegynder
02. juli 2004 - 19:09 #2
både med billedet og pdf filen er det bedst at holde sig fra at include filer der ikke er af en .php type.

Når severen sender en fil sender den automatisk en header med der fortæller brovseren hvodan den fil skal fremvises. for filer der hedder .php fortæller headeren at det der sendes skal håndteres som HTML tekst.

men billeder og pdf filer er ikke html tekst, så de bør sendes som sig selv. fx med:
    <?php
    header( "location: mydoc.pdf" );
    exit();
    ?>
nå det script udføres fortæller php browseren at der i virkeligheden kommer en helt anden fil 'mydoc.pdf' og den fil bliver så sendt med sin korrekte header.

mvh JakobA
Avatar billede dmcn Praktikant
02. juli 2004 - 19:10 #3
Snippet fra manualen for header-funktionen:
<?php
// We'll be outputting a PDF
header('Content-type: application/pdf');

// It will be called downloaded.pdf
header('Content-Disposition: attachment; filename="downloaded.pdf"');

// The PDF source is in original.pdf
readfile('original.pdf');
?>
Avatar billede dadane Novice
02. juli 2004 - 19:16 #4
jakoba - duer ikke. Det afslører pdf'ens sande lokation (som iøvrigt ikke ligger så den kan tilgåes via web).

n0rmality. Ser spændende ud jeg er ikke helt færdig med at tjekke det ud, - men dit script virker. Vil dog ikke have den til download (skal faktisk igennem et fdf-formudfyldningsscript)
Avatar billede dmcn Praktikant
02. juli 2004 - 19:21 #5
I så fald skal du nok beskrive nærmere præcis hvad du vil med PDFen - skal den bare vises til brugeren direkte i browseren?
Avatar billede dadane Novice
02. juli 2004 - 19:34 #6
Hmm - det virker ikke rigtigt helt.

Hvis jeg har linjen

header('Content-Disposition: attachment; filename="downloaded.pdf"');

med så duer mit fdf-formudfyldningsscript ikke. Hvis ikke jeg har den med så får jeg bare en blank side. (Jeg har prøvet at hente den med wget og omdøbe den - og det er en perfekt PDF fil). Men det kan jeg nok ikke lokke mine brugere til.

Jeg kigger lidt på fdf-formudfyldningsscriptet og ser om jeg kan gøre noget bedre der.
Avatar billede dadane Novice
02. juli 2004 - 19:38 #7
n0rmality. Ja.

Jeg har et script som kan udfylde formfelter. Den kalder:

        $fdfdata .= "/F (" . $pdffile . ") >>";
        $fdfdata .= ">>\nendobj\ntrailer\n<<\n/Root 1 0 R\n>>\n";
        $fdfdata .= "%%EOF";
        header ("Content-Type: application/vnd.fdf");

så pdf filen (eller dvs. du får en fdf fil som indeholder en URL ($pdffile) hvor pdf filen skal være).

Og den skal så bare vises til brugeren (eller komme med en gem/vis popup - det er ikke så væsentligt).

Men hvis PDF'en selv laver popup'en så duer det ikke.
Avatar billede dadane Novice
19. oktober 2004 - 15:05 #8
Har ikke kunnet få noget af det til at virke :-(
Avatar billede dadane Novice
19. oktober 2004 - 15:06 #9
Lukket
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester