[PHP+GD2+PDF] Variabele image in PDF document werkt niet

Pagina: 1
Acties:

  • Dope-E
  • Registratie: Januari 2001
  • Laatst online: 11-07 12:42

Dope-E

The one and only Dope

Topicstarter
Ik heb een script waarmee ik plaatjes en opgemaakte tekstblokken in een PDF zet. De PDF is een A4 en bestaat uit een enkele pagina.

Gewone plaatjes en tekst werkt allemaal perfect, maar zodra er een variabel plaatje gegenereerd moet worden gaat t mis.
Ik krijg niet eens een foutmelding of wat dan ook, maar een "pagina kan niet worden weergegeven" melding! :/

Ik kan r dus met geen mogelijkheid achterkomen wat er nou misgaat.

Hieronder volgt de functie om een plaatje in de pagina te zetten:
($editable kan 1 of 0 zijn en wil zeggen of er een variabel plaatje gegenereerd moet worden)
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
50
51
52
53
function pdf_image($pdf,$editable,$source,$x,$y,$w,$h){
    if($editable){
        $font = realpath("../../fonts/verdana.ttf");
        $img = imagecreate($w,$h);
        $light = imagecolorallocate($img,229,228,232);
        $dark = imagecolorallocate($img,77,77,77);
        imagerectangle($img,0,0,$w-1,$h-1,$dark);
        imageline($img,1,1,$w-2,$h-2,$dark);
        imageline($img,1,$h-2,$w-2,1,$dark);
        $font_size = 0;
        $text1 = "variabele afbeelding:";
        $dxt = 0;
        $dyt = 0;
        while(($dxt < ($w - 50)) && ($dyt < 50)){
            $font_size++;
            $size = imagettfbbox($font_size,0,$font,$text1);
            $dxt = abs($size[2] - $size[0]);
            $dyt = abs($size[5] - $size[3]);
            $xt = (($w - $dxt) / 2) - 1;
            $yt = $dyt + 3;
        }
        imagettftext($img,$font_size,0,$xt,$yt,$dark,$font,$text1);
        $font_size = 0;
        $text2 = substr($source,strrpos($source,"=")+1);
        $dxt = 0;
        $dyt = 0;
        while(($dxt < ($wt - 50)) && ($dyt < ($h - 50))){
            $font_size++;
            $size = imagettfbbox($font_size,0,$font,$text2);
            $dxt = abs($size[2] - $size[0]);
            $dyt = abs($size[5] - $size[3]);
            $xt = (($w - $dxt) / 2) - 1;
        }
        imagettftext($img,$font_size,0,$xt,$h-10,$dark,$font,$text2);
        $pdfimage = pdf_open_memory_image($pdf, $img);
        imagedestroy($img);
        $scale = 1;
    }
    else{
        $strs = explode(".",$source);
        $extension = strtolower($strs[count($strs)-1]);
        if($extension=="jpg") $imagetype = "jpeg";
        else if($extension=="tif") $imagetype = "tiff";
        else $imagetype = $extension;
        $pdfimage = pdf_open_image_file($pdf, $imagetype, $source); 
        $size = getimagesize($source);
        $scale = $w / $size[0];
    }
    $x = $x - 11;
    $y = 842 - $y - $h + 10;
    pdf_place_image($pdf,$pdfimage,$x,$y,$scale);
    pdf_close_image($pdf,$pdfimage);
}

twitter.com/curly_sanders


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Professionele website nodig?


  • Dope-E
  • Registratie: Januari 2001
  • Laatst online: 11-07 12:42

Dope-E

The one and only Dope

Topicstarter
Ik heb nu error_log = syslog aangezet in php.ini en krijg nu wel foutmeldingen in mijn eventviewer te zien. Ik ga ze nu ff uitpluizen.

twitter.com/curly_sanders


  • Dope-E
  • Registratie: Januari 2001
  • Laatst online: 11-07 12:42

Dope-E

The one and only Dope

Topicstarter
De fout zit m in pdf_open_memory_image($pdf, $img).
In een oudere build van PHP bestond deze functie nog niet in de win32 release, nu zou die gewoon moeten werken.

De fout is als volgt: PHP Fatal error: Call to undefined function: pdf_open_memory_image() in ...

Ik gebruik Apache 2.0.46 / PHP 4.3.2 onder Windows XP

twitter.com/curly_sanders


  • Dope-E
  • Registratie: Januari 2001
  • Laatst online: 11-07 12:42

Dope-E

The one and only Dope

Topicstarter
Ik heb m maar veranderd. Nu wordt er een tijdelijk bestand weggeschreven en die geopend door pdf_open_image_file(). Dit werkt wel normaal.

twitter.com/curly_sanders