[PHP / PDFlib] pdf_open_image_file kan file niet vinden*

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • willem-alex
  • Registratie: December 2001
  • Laatst online: 18-05-2024

willem-alex

you don't wanna know ...

Topicstarter
PDFlib is behoorlijk ondervertegenwoordigd hier op GoT en ook elders op internet vandaar dat ik mijn antwoord nog niet heb kunnen vinden.

Ik heb de volgende code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php

$pdf = pdf_new();
if (!pdf_open_file($pdf, "")) {  print error;  exit; }

pdf_begin_page($pdf, 595, 842);

$image = pdf_open_image_file($pdf, "jpeg", "test.jpg", "", 1);
pdf_place_image($pdf, $image, 15, 400, .4);

pdf_end_page($pdf);

pdf_close($pdf);

$buf = pdf_get_buffer($pdf);
$len = strlen($buf);

header("Content-type: application/pdf");
header("Content-Length: $len");
header("Content-Disposition: attachment; filename=test.pdf");
print $buf;

pdf_delete($pdf);

?>

Deze werkt bij mij lokaal perfect, maar zodra ik hem online gooi, krijg ik de volgende melding:
[25-Jul-2005 12:20:26] PHP Fatal error: pdf_open_image_file(): [1016]
PDF_open_image_file: Couldn't open JPEG file 'test.jpg' for reading (file not found) in ******************\pdftest\pdf.php on line 8
Ik weet overigens zeker dat dat bestand daar wel staat. Iemand een idee?

(Er zijn meer mensen met hetzelfde probleem zo te zien: http://forum.de.selfhtml.org/archiv/2004/6/t82592/)

[ Voor 11% gewijzigd door willem-alex op 25-07-2005 12:56 ]


Acties:
  • 0 Henk 'm!

  • scan
  • Registratie: Augustus 2000
  • Laatst online: 00:08
Heeft je provider wel ondersteuning voor pdflib ?


Anders misschien als pad "./test.jpg" ?

[ Voor 33% gewijzigd door scan op 25-07-2005 13:01 ]

Een pc is net een brommer. je kan hem wel opvoeren maar het blijft nog steeds een brommer


Acties:
  • 0 Henk 'm!

  • Eskimootje
  • Registratie: Maart 2002
  • Laatst online: 15:26
Misschien moet je het volledige server path aangeven.

Acties:
  • 0 Henk 'm!

  • willem-alex
  • Registratie: December 2001
  • Laatst online: 18-05-2024

willem-alex

you don't wanna know ...

Topicstarter
Ja, als ik het plaatje eruit haal krijg ik wel keurig een pagina te zien. Het lijkt echt puur aan de functie pdf_open_image_file te liggen.

Acties:
  • 0 Henk 'm!

  • willem-alex
  • Registratie: December 2001
  • Laatst online: 18-05-2024

willem-alex

you don't wanna know ...

Topicstarter
Volledig path werkt ook niet. Hij geeft in de error trouwens ook al keurig het volledige pad weer.

Acties:
  • 0 Henk 'm!

  • [ti]
  • Registratie: Februari 2000
  • Niet online
Heeft de webserver (dus de user waaronder de webserver draait) wel toegang tot het plaatje (security/read access e.d.)?

Acties:
  • 0 Henk 'm!

  • willem-alex
  • Registratie: December 2001
  • Laatst online: 18-05-2024

willem-alex

you don't wanna know ...

Topicstarter
Ik denk het wel, het plaatje staat gewoon in dezelfde map en ik kan hem ook oproepen vanuit een simpel html bestand in die map. Is dat wat je bedoelt?

Mocht iemand zich geroepen voelen om het zelf eens te testen:
http://rapidshare.de/files/3337231/pdftest.zip.html

Acties:
  • 0 Henk 'm!

Verwijderd

kan je niet beter gewoon een pdf class downloaden.

http://www.fpdf.org

deze doet het altijd

Acties:
  • 0 Henk 'm!

Verwijderd

Zelf gebruik ik ook PDFLib in mijn applicaties en dit is de regel die ik gebruik voor het includen van afbeeldingen.

PHP:
1
pdf_open_image_file($pdf,"gif","logo.gif");


Ik zie dat de laatste 2 parameters bij mij niet voorkomen.
Misschien helpt het als je die bij jou ook weglaat?

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

Verwijderd schreef op maandag 25 juli 2005 @ 13:16:
kan je niet beter gewoon een pdf class downloaden.

http://www.fpdf.org

deze doet het altijd
FPDF is een stuk eenvoudiger, maar ook minder snel en heeft een stuk minder functionaliteit. Wil je simpele dingen dan zou ik zeker FPDF gebruiken.. scheelt je uren zoeken in bergen ondoorzichtige PDFLib documentatie..

edit

Heb je script geprobeerd (letterlijk). Doet ie prima.. inclusief de afbeelding. Gewoon test.jpg in dezelfde map als het script.

Je werkt blijkbaar (aan het pad te zien) op een Windows server. Staan de paden daar allemaal goed ingesteld?

[ Voor 55% gewijzigd door Bosmonster op 25-07-2005 13:24 ]


Acties:
  • 0 Henk 'm!

  • willem-alex
  • Registratie: December 2001
  • Laatst online: 18-05-2024

willem-alex

you don't wanna know ...

Topicstarter
@ Par0xysm:
Nu nog switchen van PDF generator is helaas geen optie. Ik heb al diverse gecompliceerde PDF's gemaakt, maar dit is een heel vervelend probleem waar ik helaas steeds tegenaan loop.

@ Schutje:
Ik denk dat jij een oudere versie van PDFlib gebruikt. In versie 6 zegt ie dit:
Uncaught exception 'PDFlibException' with message 'pdf_open_image_file() expects exactly 5 parameters, 3 given'
@ Bosmonster:
Wat bedoel je precies met:
Staan de paden daar allemaal goed ingesteld?
En verder: welke versie van PHP en PDFlib draai jij? Kan het daar aan liggen?

[ Voor 10% gewijzigd door willem-alex op 25-07-2005 14:05 ]


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

willem-alex schreef op maandag 25 juli 2005 @ 14:03:


@ Bosmonster:
Wat bedoel je precies met:

[...]

En verder: welke versie van PHP en PDFlib draai jij? Kan het daar aan liggen?
Daar bedoel ik include paths mee.. blijkbaar kan die het bestand simpelweg niet vinden in de map van je script (mag aannemen dat je hem daar ingezet hebt en het script niet include vanuit een andere map..).

Ik draai PHP 4.3.9, PDFLib 5.0.3 volgens phpinfo op FreeBSD.

Acties:
  • 0 Henk 'm!

  • willem-alex
  • Registratie: December 2001
  • Laatst online: 18-05-2024

willem-alex

you don't wanna know ...

Topicstarter
Ik gebruik helemaal geen includes bij dit voorbeeld. Ik heb gewoon test.php en test.jpg in dezelfde map zijn en ik roep test.php rechtstreeks aan.

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

willem-alex schreef op maandag 25 juli 2005 @ 16:06:
Ik gebruik helemaal geen includes bij dit voorbeeld. Ik heb gewoon test.php en test.jpg in dezelfde map zijn en ik roep test.php rechtstreeks aan.
En voor het zoeken van het bestand gebruikt ie mogelijk het include-path (waar 'huidige dir' gewoon onderdeel van is)

Maar het was maar een idee ;)

Je foutmelding zegt 'file not found'.. dus dat ie hem niet kan vinden lijkt me vrij duidelijk. Aangezien ik heb probleem met exact hetzelfde voorbeeld niet heb lijkt me ook zeggen dat het iets moet zijn in je instellingen.

Al heb ik het niet op een windows bak geprobeerd.

Acties:
  • 0 Henk 'm!

  • willem-alex
  • Registratie: December 2001
  • Laatst online: 18-05-2024

willem-alex

you don't wanna know ...

Topicstarter
In dat geval zou ie het in de root wel moeten doen?

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

kijk eens met get_include_path() waar je include path op staat.

Volgens mijn zit '.' daar standaard al in overigens..

Ik vind het een vreemd probleem :)

Anders kun je nog een volledig pad proberen als (op windows)

C:\serverroot\blabla\blopblop\test.jpg

Gebruik je trouwens PHP 4 of 5?

Probeer ook eens van die laatst 1 een 0 te maken (standaard, je hebt maar 1 pagina in het voorbeeld)

[ Voor 37% gewijzigd door Bosmonster op 25-07-2005 16:27 ]


Acties:
  • 0 Henk 'm!

  • willem-alex
  • Registratie: December 2001
  • Laatst online: 18-05-2024

willem-alex

you don't wanna know ...

Topicstarter
Inderdaad:
.;c:\php4\pear
Ik gebruik overigens lokaal versie 5.0.4 en op de server staat 4.4.0.
Je zou haast denken dat het daar aan ligt dan.

Bij mij is de include path overigens:
.;c:\php5\pear
Oja, en volledig path had ik ook al geprobeerd maar helaas geen succes...

...

En 0 of 1 ook niet :(

[ Voor 19% gewijzigd door willem-alex op 25-07-2005 16:32 ]


Acties:
  • 0 Henk 'm!

  • willem-alex
  • Registratie: December 2001
  • Laatst online: 18-05-2024

willem-alex

you don't wanna know ...

Topicstarter
Ik heb inmiddels op een andere pc PHP 4.4.0 geïnstalleerd maar daar draait het script ook als een zonnetje. Aan de PHP versie lijkt het dus niet te ligggen...

Overigens nu ook alle PHP instellingen overgenomen en nog steeds werkt het.

Ik heb ondertussen wel zitten nadenken over deze opmerking van [ti]:
[ti] schreef op maandag 25 juli 2005 @ 13:06:
Heeft de webserver (dus de user waaronder de webserver draait) wel toegang tot het plaatje (security/read access e.d.)?
Zou het misschien zo kunnen zijn dat de user waaronder de webserver draait geen tijdelijke bestanden op de server mag zetten? Want dat is volgens mij wat er gebeurt in de code:
code:
1
2
$image = pdf_open_image_file($pdf, "jpeg", "test.jpg", "", 1);
pdf_place_image($pdf, $image, 15, 400, .4);

Eerst open je hem en daarna zet je hem erin. Of is dat niet hetzelfde als een tijdelijk bestand aanmaken?

[ Voor 72% gewijzigd door willem-alex op 25-07-2005 18:22 ]


Acties:
  • 0 Henk 'm!

  • willem-alex
  • Registratie: December 2001
  • Laatst online: 18-05-2024

willem-alex

you don't wanna know ...

Topicstarter
OPGELOST! :*)

Vraag me niet waarom maar het moest toch met een volledig pad. Ik moest alleen geen backslashes gebruiken maar forward slashes... en dat op een Win2k3 bak 8)7

Bedankt voor jullie hulp!
Pagina: 1