Anders K. Madsen wrote:
> On Sat, 17 Jul 2004 19:32:21 +0100
> Chris <csv72@netscape.net> wrote:
>
>
>>Hej,
>>
>>Jeg vil gerne have indholdet af en PDF fil gemt i en string variabel
>>(til senere udskrivn. el. gemme i db). Jeg bruger fopen() og fread()
>>funktionerne på filen men output er volapyk. Med en html side virker
>>det fint. Kan man ikke lave dette nummer med en pdf fil ligesom man
>>f.eks. kan med en html fil ?
>
>
> Nej, den går ikke... PDF er et binært format (det såkaldte "volapük"),
> så du kan enten håbe på at du kan konvertere den til noget indeholdende
> ren ASCII-tekst, eller også droppe det.
> Beklager. :(
Det burde fint kunne lade sig gøre - da fread() godt kan læse binære
filer. Det er også relativt nemt at gemme det i db'en, men kan godt være
problematisk at streame det til browseren, hvor du vha. bl.a. header()
skal fortælle browseren, hvilket output den skal forvente. Selve koden
for header-kald er vist noget i retning:
header("Content-Type: application/pdf");
header("Content-Length: " . $length);
header("Content-Disposition: inline; filename=" . $filename);
Der, hvor problemerne så primært optræder er i forb. med IE, der (endnu
engang) ikke overholder standarderne, men i stedet ignorerer
Content-Type og kun kigger på filnavn for at afgøre, hvad den skal gøre
med det den modtager. Der er vist en del fiks-fakserier for at få IE til
at fungere efter hensigten og for at det skal være rigtigt træls
afhænger det vist også af hvilken IE du kører! Du skal dog også passe på
at andre browsere stadig modtager de rigtige header-informationer, da de
ikke fungerer med IE's specialinformation.
Hvis du vil sidde og "lege" med ovenstående og teste det i IE, skal du
desuden være opmærksom på at IE også har nogle caching "features"
(læs:bugs) som ikke umiddelbart kan omgås og det kan derfor anbefales at
lukke alle IE instanser, manuelt slette alle offline IE filer og
derefter åbne IE og prøve igen - hvis du altså vil se effekten af nogle
kodeændringer.
Held og lykke - og sørg for at få det testet på ie 5, 5.5 og 6.0
versionerne.
Mvh Tommy
|