как поместить логотип в pdf-файл, сгенерированный php, когда путь запрашивается далеко внизу страницы?

Мой первый вопрос по php...

Я использую fpdf для создания файлов PDF. Первоначальная версия сайта, которую я делаю, использовала стандартное изображение на распечатке. Я хочу изменить это на изображение на основе идентификатора.

Моя проблема заключается в том, что заголовок с изображением объявляется до запуска запроса, который извлекает идентификатор. Вероятно, это легко исправить, но не с нулевым php-exp...

Вот мой код:

<?php
require('fpdf.php');
import_request_variables("GP", "rvar_");

$prn_con = mysql_connect('localhost', 'root', '');
mysql_select_db('db');

class PDF extends FPDF{
    function Header(){
        $this->Image('../../images/logo_generic.gif',170,8,30);
        }
    }

$pdf=new PDF();
$pdf->Open();
$tok = strtok($rvar_bestellkeys,",");

while ($tok){
    $result = mysql_query('SELECT * FROM bk WHERE bestellkey = "'.$tok.'"');
    $i = 0; 
    $fCount = mysql_num_fields($result);
    while($row=mysql_fetch_row($result)){
        while ($i < $fCount){
            $fName = mysql_field_name($result, $i); 
            $$fName = trim($row[$i]);
            $i++; 
            $strcont = strlen ($$fName);
            }
            $i=0; 
    }

Одним из результатов запроса является идентификатор, который я хочу включить в путь к логотипу header().

Вопрос:
Как я могу установить путь header() внутри моего while-loop? Цикл распечатывает документы (одностраничные/многостраничные), и каждая страница должна иметь логотип в правом верхнем углу.

Спасибо за помощь!

EDIT:
Вот весь php-скрипт:

<?php
require('fpdf.php');
import_request_variables("GP", "rvar_");

$prn_con = mysql_connect('localhost', 'root', '');
mysql_select_db('db');

$resultsprache = mysql_query("SELECT * FROM sprachen WHERE sprache = '".$rvar_sprache."'");
while($row=mysql_fetch_row($resultsprache)){
    $fName = trim($row[2]);
    $$fName = trim($row[3]);
    }

$FileN = $tx_bestellung. '_'.date("YmdHis").'.pdf';
$title = $tx_bestellung;

class PDF extends FPDF{
    function Header(){
        $this->Image('../../images/logo_klein.gif',170,8,30);
        }
    }

 $pdf=new PDF();
 $pdf->Open();
 $pdf->AliasNbPages();
 $pdf->AddPage();
 $pdf->SetTitle($title);
 $pdf->SetFont('Arial','',8);

 $tok = strtok($rvar_bestellkeys,",");

 while ($tok){
    $result = mysql_query('SELECT * FROM bK WHERE bestellkey = "'.$tok.'"');
    $i = 0; 
    $fCount = mysql_num_fields($result);
    while($row=mysql_fetch_row($result)){
        while ($i < $fCount){
            $fName = mysql_field_name($result, $i); 
            $$fName = trim($row[$i]);
            $i++; 
            $strcont = strlen ($$fName);
            }
        $i=0; 
    }
$pdf->Cell(190,7,$tx_bestellung. " " .$tx_nr. " " .$bestellkey,0,1,'L');
    $pdf->Ln(8);
$pdf->Cell(190,5,$tx_verkaeufer,0,1);
$pdf->Cell(30,4,'ILN/GLN:',0,0);
$pdf->Cell(65,4,$vk_iln,0,1);
$pdf->Cell(30,4,$tx_firma. ':',0,0);
$pdf->Cell(65,4,$vk_firma,0,0);
$pdf->Cell(30,4,$tx_bestellnummer. ':',0,0);
$pdf->Cell(65,4,$bestellkey,0,1);
$pdf->Cell(30,4,$tx_adresse. ':',0,0);
$pdf->Cell(65,4,$vk_adresse,0,0);
$pdf->Cell(30,4,$bestelldatum. ':',0,0);
    $bestelldatum = (substr($bestelldatum, 8,2)).'.'.(substr($bestelldatum, 5, -3)).'.'.(substr($bestelldatum, 0, -6));
$pdf->Cell(65,4,$bestelldatum,0,1);
$pdf->Cell(30,4,$tx_plz. ', ' .$tx_ort. ':',0,0);
$pdf->Cell(65,4,$vk_plz.' '.$vk_ort,0,0);
.... 
$i=0; 
$result = mysql_query('SELECT * FROM bP WHERE bestellkey = "'.$tok.'"');
$fCount = mysql_num_fields($result);
$pdf->Cell(9,8,$tx_pos,1,0,'C');
$pdf->Cell(23,8,"EAN/GTIN",1,0,'C');
$pdf->Cell(43,8,$tx_bezeichnung,1,0,'C');
$pdf->Cell(10,8,$tx_groesse,1,0,'C');
$pdf->Cell(10,8,$tx_farbe,1,0,'C');
$pdf->Cell(15,8,$tx_preis,1,0,'C');
$pdf->Cell(12,8,$tx_einheit,1,0,'C');
$pdf->Cell(15,8,$tx_menge,1,0,'C');
$pdf->Cell(15,8,$tx_menge. "\n" .$tx_bestaetigt,1,0,'C');
$pdf->Cell(18,8,$tx_summe,1,1,'C');
...

$tok = strtok(",");
if($tok != ""){
    $pdf->AddPage();
}
}

mysql_close($prn_con);
$pdf->Output($FileN, 'D');

?>

person frequent    schedule 30.07.2012    source источник
comment
Не могли бы вы выложить весь сценарий?   -  person Vitalii Zurian    schedule 30.07.2012
comment
Вы можете попробовать tcpdf   -  person Duniyadnd    schedule 30.07.2012
comment
сейчас не помогает. Я тоже читал, что было бы лучше, но пока я придерживаюсь того, что есть (к)   -  person frequent    schedule 30.07.2012


Ответы (1)


Быстро и довольно грязно, но должно работать:

    <?php
    require('fpdf.php');
    import_request_variables("GP", "rvar_");

    $prn_con = mysql_connect('localhost', 'root', '');
    mysql_select_db('db');

    $resultsprache = mysql_query("SELECT * FROM sprachen WHERE sprache = '".$rvar_sprache."'");
    while($row=mysql_fetch_row($resultsprache)){
        $fName = trim($row[2]);
        $$fName = trim($row[3]);
        }

    $FileN = $tx_bestellung. '_'.date("YmdHis").'.pdf';
    $title = $tx_bestellung;

    $tok = strtok($rvar_bestellkeys,",");

    while ($tok){
        $result = mysql_query('SELECT * FROM bK WHERE bestellkey = "'.$tok.'"');
        $i = 0; 
        $fCount = mysql_num_fields($result);
        while($row=mysql_fetch_row($result)){

            if ($something === true) {
                $my_magic_id = $row['my_magic_id_column'];
            }

            if (isset($my_magic_id) && !class_exists('PDF')) {
                class PDF extends FPDF{
                    function Header(){
                        global $my_magic_id;
                        $this->Image('../../images/logo_klein.gif',170,8,30);
                        }
                    }

                $pdf=new PDF();
                $pdf->Open();
                $pdf->AliasNbPages();
                $pdf->AddPage();
                $pdf->SetTitle($title);
                $pdf->SetFont('Arial','',8);

            }

            while ($i < $fCount){
                $fName = mysql_field_name($result, $i); 
                $$fName = trim($row[$i]);
                $i++; 
                $strcont = strlen ($$fName);
                }
            $i=0; 
        }
    $pdf->Cell(190,7,$tx_bestellung. " " .$tx_nr. " " .$bestellkey,0,1,'L');
        $pdf->Ln(8);
    $pdf->Cell(190,5,$tx_verkaeufer,0,1);
    $pdf->Cell(30,4,'ILN/GLN:',0,0);
    $pdf->Cell(65,4,$vk_iln,0,1);
    $pdf->Cell(30,4,$tx_firma. ':',0,0);
    $pdf->Cell(65,4,$vk_firma,0,0);
    $pdf->Cell(30,4,$tx_bestellnummer. ':',0,0);
    $pdf->Cell(65,4,$bestellkey,0,1);
    $pdf->Cell(30,4,$tx_adresse. ':',0,0);
    $pdf->Cell(65,4,$vk_adresse,0,0);
    $pdf->Cell(30,4,$bestelldatum. ':',0,0);
        $bestelldatum = (substr($bestelldatum, 8,2)).'.'.(substr($bestelldatum, 5, -3)).'.'.(substr($bestelldatum, 0, -6));
    $pdf->Cell(65,4,$bestelldatum,0,1);
    $pdf->Cell(30,4,$tx_plz. ', ' .$tx_ort. ':',0,0);
    $pdf->Cell(65,4,$vk_plz.' '.$vk_ort,0,0);
    .... 
    $i=0; 
    $result = mysql_query('SELECT * FROM bP WHERE bestellkey = "'.$tok.'"');
    $fCount = mysql_num_fields($result);
    $pdf->Cell(9,8,$tx_pos,1,0,'C');
    $pdf->Cell(23,8,"EAN/GTIN",1,0,'C');
    $pdf->Cell(43,8,$tx_bezeichnung,1,0,'C');
    $pdf->Cell(10,8,$tx_groesse,1,0,'C');
    $pdf->Cell(10,8,$tx_farbe,1,0,'C');
    $pdf->Cell(15,8,$tx_preis,1,0,'C');
    $pdf->Cell(12,8,$tx_einheit,1,0,'C');
    $pdf->Cell(15,8,$tx_menge,1,0,'C');
    $pdf->Cell(15,8,$tx_menge. "\n" .$tx_bestaetigt,1,0,'C');
    $pdf->Cell(18,8,$tx_summe,1,1,'C');
    ...

    $tok = strtok(",");
    if($tok != ""){
        $pdf->AddPage();
    }
    }

    mysql_close($prn_con);
    $pdf->Output($FileN, 'D');

    ?>
person MiDo    schedule 30.07.2012
comment
хм, я не очень понимаю, что вы делаете :-) - person frequent; 30.07.2012