Avatar billede prebenrunge Nybegynder
16. juni 2010 - 20:04 Der er 7 kommentarer og
1 løsning

Vis PDF fil med PHP, javascript og Ajax

Jeg har en html side der lister en masse pdf filer som jeg man skal kunne se ved klik på filen.
pdf filerne ligger på en extern disk som er mounted på apache serveren og som brugeren ikke har adgang til.
Jeg har fået php siden til at virke med denne kode hvis den køres alene (direkte):

<?php
$pdf =  $_GET["ordre"];
header('Content-type: application/pdf');
header('Content-Disposition: attachment; filename="'.$pdf.'"');
readfile($pdf);
?>

Filen "downloades" og vises i Acrobat reader

MEN jeg skal have det til at virke fra min hoved side hvor jeg har et link og et javacript med:
   
function VisPDF(str) {
    var ordrenr = str.id;
    var url="ressourcer/Vispdf.php?ordre="+ordrenr;
    url=url+"&sid="+Math.random();
    xmlHttp.onreadystatechange=statevispdf;
    //alert("URL: "+url)
    xmlHttp.open("GET",url,true);
    xmlHttp.send(null);
    }
   
    function statevispdf() {
        if (xmlHttp.readyState==4) {
            if(xmlHttp.status == 200) {
                //alert("Vi er nu i svaret")
                document.getElementById("Bund").innerHTML = xmlHttp.responseText;       
                //document.getElementById("adexpl").src= xmlHttp.responseText;               
            } else {
                // udsted en fejlmeddelelse for alle andre HTTP-svar
                alert("En fejl er opstået: " + xmlHttp.statusText);
            }
        }
    }

OG DET VIRKER IKKE SOM DET SKAL,
for jeg får koden fra pdf filen vist i stedet for "billedet" uanset om jeg bruger src eller ej.

HVAD GØR JEG FORKERT og hvordan får jeg vist selve pdf filen som et billed (lige som i acrobat)
Avatar billede majbom Novice
16. juni 2010 - 20:32 #1
skal den vises på samme side som link og javascript er?
Avatar billede prebenrunge Nybegynder
16. juni 2010 - 20:45 #2
ja, hoved siden med javascriptet kører på brugerens maskine og det er jo brugeren der skal se pdf filen. jeg har 2 php sider der kører på serverren. den første finder og lister alle pdf filerne som numre og dette virker perfekt. den anden skulle så vise den enkelte pdf fil ved klik. koden til at finde og vise pdf filen køre ok hvis jeg kalder den direkte (vispdf.php?ordrenr=123456, men når jeg kalder den via javascriptet (ajax) vises koden fra filen og ikke billedet af filen.
som her:
%PDF-1.4 %&#65533;&#65533;&#65533;&#65533; 4 0 obj <>stream H&#65533;l&#65533;&#65533;n&#65533;0&#485;y&#65533;9&#65533;&#65533;&#65533;&#65533;&#65533;|L6I&#65533;$[&#65533;Y&#65533;&#65533;&#65533;&#65533;Ed&#65533;h0&#65533;&#65533;&#65533;&#65533;w&#65533;3&#65533;&#65533;1&#65533;mEHx&#65533;c&#65533;&#65533;/&#1018;&#65533;1&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;[~&#65533;p(&#65533;w&#65533;y&#65533; &#65533;&#65533;&#65533;&#65533;&#1127;&#65533;3&#65533;1p&#65533;`E)d&#65533;&#65533;&#65533;&#65533;=Y&#65533;&#65533;&#65533;[&#65533;[&#65533;&#65533;&#65533;/&#65533;&#65533;&#65533;.&#65533;&#65533;&#65533;&#65533;&#65533;!&#65533;( ;&#65533;3M&#65533;&#65533;&#65533; &#65533;OUi&#65533;K&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;+&#65533;&#65533; &#65533;B&#65533;&#65533;&#65533;4.&b&#65533;Z2Z&#65533;&#1050;;u!2&#65533;&I&#65533;U&#65533;`e5&#65533;I&#65533; A&#65533;&#65533;S&#65533;&#65533;}7&#65533;$&#65533;FKZ(&#65533;X&#65533;)YB&#65533;&#65533;b!v&#65533;?&#65533;=p-4&#65533;!&#65533;Y&#703;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;$q&#65533;]$Ex8&#65533;&#409;;JJA&#65533;&#65533;&#65533;&#65533;&#65533;L&#65533;&#65533;\&#65533;O&#65533;g&#65533;&#65533;&#65533;n&#65533;&#65533;K&#65533;&#65533;&#65533;&#130;&#65533;U]
Avatar billede prebenrunge Nybegynder
16. juni 2010 - 20:47 #3
lige en ting mere: om filen vises i scr (images) eller om acrobat åbnes og viser pdf filen er faktisk ikke vigtigt, da alle mine brugere har acrobat reader installeret.
Avatar billede intenz Novice
16. juni 2010 - 21:19 #4
Jeg forstår ikke formålet med at åbne filen med ajax? Hvorfor er det ikke bare et alm. link man klikker på, der linker til vispdf.php?ordrenr=123456 ?
Avatar billede majbom Novice
16. juni 2010 - 21:24 #5
hmm jeg synes osse det virker som at gå over åen efter vand?
Avatar billede prebenrunge Nybegynder
16. juni 2010 - 21:34 #6
Du har da helt ret, det kan sagtens være et alm href - det har jeg lige prøvet og det virker selvfølgelig som det skal. - nogle gange er løsningen lige foran og man kan ikke se den. tak for hjælpen. smider du et svar ?
Avatar billede intenz Novice
16. juni 2010 - 22:36 #7
Mit er bare en kommentar, så jeg springer over.

En lille ekstra kommentar; husk når du laver et link til vispdf.php?ordrenr=123456 så vær sikker på, at brugeren har tilladelse til at se det ordrenr der henvises til.

Den kode du har vist til 'vispdf.php' antyder at man bare kan taste et ID nummer ind, og så får man vist PDF'en. Det er nemt lige at ændre nummeret, især hvis det bare løber fra 1 og op.
Avatar billede prebenrunge Nybegynder
18. juni 2010 - 09:35 #8
Du har ret, men her er det ikke så vigtigt, da det er på vores lukket intranet og alle må se alle de filer der findes hvis de vil.
Jeg lukker sagen som løst
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