[php] PDF error

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb een scriptje gemaakt dat een PDF file moet produceren. PDF lib staat aan en de directory heeft read/write acces. Toch krijg ik de volgende error, die normaal betekent dat er een read/write error is. Terwijl dat dus niet het geval is. Iemand enig idee hoe dit kan?
Fatal error: Uncaught exception 'PDFlibException' with message 'Function must not be called in 'object' scope' in C:\Inetpub\vhosts\kickoff-ak.nl\httpdocs\tickets\pdf.php:17 Stack trace: #0 C:\Inetpub\vhosts\kickoff-ak.nl\httpdocs\tickets\pdf.php(17): pdf_begin_page(Resource id #2, 595, 842) #1 {main} thrown in C:\Inetpub\vhosts\kickoff-ak.nl\httpdocs\tickets\pdf.php on line 17
PHP:
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<?php
// create handle for new PDF document
$pdf = pdf_new();

// open a file
pdf_open_file($pdf, "ticket-kickoff-party.pdf");

// start a new page (A4)
pdf_begin_page($pdf, 595, 842);

// set document information
pdf_set_info_author($pdf, "KICKOFF-AK.NL");
pdf_set_info_creator($pdf, "KICKOF-AK.NL");

// get and use a font object
$verdana = pdf_findfont($pdf, "Verdana", "host", 1); pdf_setfont($pdf, $verdana, 10);

// print text
pdf_show_xy($pdf, "Ticket-id:",50, 750); 
pdf_show_xy($pdf, "Achternaam:", 50, 730);
pdf_show_xy($pdf, "Voornaam:", 50, 710);
pdf_show_xy($pdf, "Studentnummer:", 50, 680);
pdf_show_xy($pdf, "Leerjaar", 50, 650);

//image bg
$image = pdf_open_image_file($pdf, "jpeg", "_style/img/ticket.jpg");
pdf_place_image($pdf, $image, 50, 650, 0.25);

// end page
pdf_end_page($pdf);

// close and save file
pdf_close($pdf);
?>

</body>
</html>

Acties:
  • 0 Henk 'm!

Verwijderd

Op Google staan ook hele andere oorzaken, bijv. een verouderde library...

Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 00:16

Matis

Rubber Rocket

Het lijkt of dat je de module niet mag/kunt gebruiken (of installeren).

Ik heb voor het genereren van pdf's. Cpdf http://www.ros.co.nz/pdf gebruikt.

Misschien niet helemaal het antwoord waar je naar opzoek bent, maar het werkt zeer eenvoudig en mooi object geörienteerd!

[ Voor 16% gewijzigd door Matis op 15-06-2009 10:50 ]

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 17:04

Creepy

Tactical Espionage Splatterer

En wat heb je nu zelf al geprobeerd? Wat lukte daar niet mee? In je vorige topic werd je gewezen op zelf debuggen. Dus als je dat al hebt gedaan: wat heb je dan gedaan? En als je dat nog niet hebt gedaan: begin daar eerst eens mee.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
@ Creepy: Het scrip valt (nog) weinig aan te debuggen. Het gaat namelijk mis bij het aanroepen van de 2e pdf functie. Het script opzich klopt (heb ik laten testen), dus dat is het probleem niet. Ik heb met de hostprovider gesproken en die heeft de PDFlib netjes aangezet. Volgens de php info file werkt dat ook naar behoren.

@Matis Ik ga het zeker overwegen, als dit niet werkt. Leukste is natuurlijk als ik gewoon kan gebruiken wat native hoort te werken. Desondanks bedankt. Maar waar baseer je op de dat ik de module niet zou mogen gebruiken? Ik krijg de volgende gegevens, wat er goed uitziet:
PDF Support enabled
PDFlib GmbH Version 5.0.3
PECL Version 2.1.6-dev
Revision $Revision: 1.157 $

Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 00:16

Matis

Rubber Rocket

Verwijderd schreef op maandag 15 juni 2009 @ 12:14:
@Matis Ik ga het zeker overwegen, als dit niet werkt. Leukste is natuurlijk als ik gewoon kan gebruiken wat native hoort te werken. Desondanks bedankt. Maar waar baseer je op de dat ik de module niet zou mogen gebruiken? Ik krijg de volgende gegevens, wat er goed uitziet:

[...]
De phpinfo ziet er goed uit, maar misschien wil je een eigenschap aanpassen of een bestand schrijven waar je helemaal geen rechten toe hebt.
Wat je daarvoor kunt doen is http://nl.php.net/passthru gebruiken. Dat genereert een bestand in RAM, zonder dat je hoeft te schrijven naar de harddisk!

Edit: Ik neem aan dat je de documentatie van de maker ook gelezen hebt: http://www.pdflib.com/

[ Voor 6% gewijzigd door Matis op 15-06-2009 12:21 ]

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 13:47

MueR

Admin Tweakers Discord

is niet lief

Verwijderd schreef op maandag 15 juni 2009 @ 12:14:
Het scrip valt (nog) weinig aan te debuggen. Het gaat namelijk mis bij het aanroepen van de 2e pdf functie. Het script opzich klopt (heb ik laten testen), dus dat is het probleem niet. Ik heb met de hostprovider gesproken en die heeft de PDFlib netjes aangezet. Volgens de php info file werkt dat ook naar behoren.
Hoe heb je dat getest? Werkt het op een andere server wel? Zo ja, dan ligt het aan de server waar je je code op draait en kunnen we er verder weinig mee. Gezien deze code vrijwel letterlijk uit de manual komt, zou dat inderdaad moeten werken, dus kom je al snel bij andere dingen zoals de server uit. Tenzij je natuurlijk hier een andere testcase neerzet dan waar je mee werkt.

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 17:04

Creepy

Tactical Espionage Splatterer

Aka: debuggen is meer dan alleen je code checken ;) Server configuratie e.d. hoort daar ook bij! Je zou niet de eerst zijn die roept "Nee hoor, mijn code is perfect, op mijn systeem draait het prima" ;)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
@Matis: bedankt, dat commando kende ik nog niet. Ik heb één voor één het passthru stukje ingevoegd wanneer er een error werd gegeven voor een regel. Nu krijg ik geen errors meer (ook niet met error reporting aan), maar een blanco scherm. Dat vind ik vreemd. Als ik wil debuggen wil ik wel IETS te zien krijgen wat ik KAN debuggen. De code ziet er nu als volgt uit:

PHP:
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<?php
error_reporting(E_ALL | E_STRICT); 
// create handle for new PDF document
$pdf = pdf_new();

// open a file
pdf_open_file($pdf, "ticket-kickoff-party.pdf");

// start a new page (A4)
$beginpage='pdf_begin_page($pdf, 595, 842)';
passthru($beginpage);

// get and use a font object
$verdana = 'pdf_findfont($pdf, "Verdana", "host", 1); pdf_setfont($pdf, $verdana, 10)';
passthru($verdana);

// print text
$printtext='
pdf_show_xy($pdf, "Ticket-id:",50, 750); 
pdf_show_xy($pdf, "Achternaam:", 50, 730);
pdf_show_xy($pdf, "Voornaam:", 50, 710);
pdf_show_xy($pdf, "Studentnummer:", 50, 680);
pdf_show_xy($pdf, "Leerjaar", 50, 650);';
passthru($printtext);

//image bg
$image = 'pdf_open_image_file($pdf, "jpeg", "_style/img/ticket.jpg", "", 0);
pdf_place_image($pdf, $image, 50, 650, 0.25)';
passthru($image);

// end page
$endpage='pdf_end_page($pdf)';
passthru($endpage);

// close and save file
$close='pdf_close($pdf)';
passthru($close);
?>

</body>
</html>


@Muer Ik denk dat ik mezelf wat verkeerd verwoord hebt, ik heb het inderdaad vrijwel letterlijk uit een manual gehaald en daaruit concludeer ik dat het script in orde zou moeten zijn. Ik weet niet zo goed hoe ik er verder achter kan komen waar het aan de serverside misgaat, aangezien phpinfo juist lijkt te zijn.

Acties:
  • 0 Henk 'm!

  • Patriot
  • Registratie: December 2004
  • Laatst online: 16-09 13:49

Patriot

Fulltime #whatpulsert

Verwijderd schreef op maandag 15 juni 2009 @ 12:56:
@Matis: bedankt, dat commando kende ik nog niet. Ik heb één voor één het passthru stukje ingevoegd wanneer er een error werd gegeven voor een regel. Nu krijg ik geen errors meer (ook niet met error reporting aan), maar een blanco scherm. Dat vind ik vreemd. Als ik wil debuggen wil ik wel IETS te zien krijgen wat ik KAN debuggen. De code ziet er nu als volgt uit:

PHP:
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<?php
error_reporting(E_ALL | E_STRICT); 
// create handle for new PDF document
$pdf = pdf_new();

// open a file
pdf_open_file($pdf, "ticket-kickoff-party.pdf");

// start a new page (A4)
$beginpage='pdf_begin_page($pdf, 595, 842)';
passthru($beginpage);

// get and use a font object
$verdana = 'pdf_findfont($pdf, "Verdana", "host", 1); pdf_setfont($pdf, $verdana, 10)';
passthru($verdana);

// print text
$printtext='
pdf_show_xy($pdf, "Ticket-id:",50, 750); 
pdf_show_xy($pdf, "Achternaam:", 50, 730);
pdf_show_xy($pdf, "Voornaam:", 50, 710);
pdf_show_xy($pdf, "Studentnummer:", 50, 680);
pdf_show_xy($pdf, "Leerjaar", 50, 650);';
passthru($printtext);

//image bg
$image = 'pdf_open_image_file($pdf, "jpeg", "_style/img/ticket.jpg", "", 0);
pdf_place_image($pdf, $image, 50, 650, 0.25)';
passthru($image);

// end page
$endpage='pdf_end_page($pdf)';
passthru($endpage);

// close and save file
$close='pdf_close($pdf)';
passthru($close);
?>

</body>
</html>


@Muer Ik denk dat ik mezelf wat verkeerd verwoord hebt, ik heb het inderdaad vrijwel letterlijk uit een manual gehaald en daaruit concludeer ik dat het script in orde zou moeten zijn. Ik weet niet zo goed hoe ik er verder achter kan komen waar het aan de serverside misgaat, aangezien phpinfo juist lijkt te zijn.
Je hebt volgens mij niet helemaal gelezen wat passthru doet (of wel, en je hebt onjuist aangenomen dat $command een stukje PHP-code moet zijn). Je gebruikt het in ieder geval hélemaal verkeerd. Het is handiger om even te kijken naar de documentatie van de pdf_* functies die je gebruikt. Zo zie ik bij pdf_open_file() dat deze deprecated is, en je pdf_begin_document moet gebruiken. Kijk zo ook eens de andere functies na, en gebruik functies waarvan het gebruik word afgeraden niet.

Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 13:47

MueR

Admin Tweakers Discord

is niet lief

Ik zou eens beginnen met wat meer structuur en regelmaat in je manier van programmeren aan te leren. Misschien wat diepgaandere kennis ook. Je hebt momenteel 2 topics lopen waarin je heel basale fouten maakt. Je hoort de klok wel luiden maar kan de klokkentoren niet echt vinden. Matis geeft je een hint mbt passthru en ineens ga je php commands in passthru gooien? Passthru(), exec() en soortgelijken moet je echt heel minimaal gebruiken, en alleen als je HEEL ERG ZEKER weet wat je er in gaat gooien.

Anyone who gets in between me and my morning coffee should be insecure.

Pagina: 1