/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
fopen() - fread() på PDF fil
Fra : Chris


Dato : 17-07-04 19:32

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 ?

Hilsen Chris

 
 
Anders K. Madsen (17-07-2004)
Kommentar
Fra : Anders K. Madsen


Dato : 17-07-04 18:36



Tommy Ipsen (17-07-2004)
Kommentar
Fra : Tommy Ipsen


Dato : 17-07-04 18:52

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

Chris (18-07-2004)
Kommentar
Fra : Chris


Dato : 18-07-04 13:31

Tommy Ipsen wrote:

> 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);

Tak for informationen - jeg vil kaste mig ud i det og se om jeg kan få
det til at virke!

/Chris

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408929
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste