PHP / FPDF - значение переменных класса не отображается в верхнем и нижнем колонтитуле - PullRequest
1 голос
/ 07 сентября 2011

У меня проблемы с настройкой верхнего и нижнего колонтитула PDF-файла, который я создаю с помощью FPDF.Как указано в руководстве по FPDF (http://www.fpdf.org/),, я создал новый класс (PDF), который расширяет FPDF, чтобы я мог создать свой верхний и нижний колонтитулы. Код для класса PDF следующий:

<?php
require('fpdf.php');

class PDF extends FPDF
{

var $primeiroNome;
var $ultimoNome;

function changeName($firstName, $lastName) {
 $this->primeiroNome = $firstName;
 $this->ultimoNome = $lastName;
}
// Cabeçalho
function Header()
{
 // Cor do texto
 $this->SetTextColor(0, 0, 0);
 // Logo
 $this->Image('Imagens/manviaPdf.png',110,6);
 // Tipo de letra
 if($this->page == 1) {
  $this->SetFont('Arial','B',15);
  // Titulo
  $this->Cell(30,10,'Currículo institucional de:',0,0,'L');
  // Quebra de linha
  $this->Ln(10);
  // Nome colaborador
  $this->Cell(30,10, $primeiroNome . ' ' . $ultimoNome,0,0,'L');
 }
 // Line break
 $this->Ln(12);
}

// Rodapé
function Footer()
{
 // Cor do texto
 $this->SetTextColor(0, 0, 0);
 // Posicionar o cabeçalho a 1,5 centimetros do fim da página
 $this->SetY(-15);
 // Tipo de letra
 $this->SetFont('Arial','I',8);
 // Número da página
 $this->Cell(0,10,'Pag '.$this->PageNo().'/{nb}',0,0,'L');
 // Informação adicional
 $this->Cell(0,10,'Curriculum Vitae de ' . $ultimoNome . ', ' . $primeiroNome . ' | MANVIA, S.A', 0, 0, 'R');
}

}
?> 

Переменные $ primeiroNome и $ ultimoNome, несмотря на то, что они установлены с помощью функции changeName (и я подтвердил, что переменные сохраняют значение, использовав эхо в конце changeName), не отображаются при печати PDF, хотяостальное содержимое заголовка появляется. Я также пытался использовать $ GLOBALS, но безуспешно.

Объект PDF создается с использованием следующего кода:

$link = mysql_connect('localhost', 'user', 'password'); 
if (!$link) {
 die("A ligação ao servidor não foi possível!");
}
$bd_escolhida = mysql_select_db('criadorcv',$link);
if(!$bd_escolhida) {
 die("Não é possível escolher a base de dados definida");
}

$queryString = "SELECT primeiroNome, ultimoNome FROM cartaovisita WHERE id=" . $value; 
$query = mysql_query($queryString) or die ("Problema ao obter os dados do colaborador");
$row = mysql_fetch_array($query);

$pdf = new PDF();
$pdf->changeName($row['primeiroNome'], $row['ultimoNome']);

mysql_free_result($query);

$pdf->AliasNbPages();
$pdf->AddPage();
$pdf->AddFont('Garamond', '', 'GARA.php');
$pdf->SetFont('Arial','B',15);
$pdf->SetFillColor(174, 38, 22);
$pdf->SetTextColor(255, 255, 255);
$pdf->Cell(0,10,'Cartão de Visita',1, 0, 'L', true);
$pdf->SetTextColor(0, 0, 0);
.....

Любая помощь будет оценена.

1 Ответ

2 голосов
/ 07 сентября 2011

Перечисленные вами переменные являются свойствами класса, а не локальными переменными методов, поэтому вы должны использовать префикс $this->.Вместо этого:

$this->Cell(0,10,'Curriculum Vitae de ' . $ultimoNome . ', ' . $primeiroNome . ' | MANVIA, S.A', 0, 0, 'R');
}

... сделать это:

$this->Cell(0,10,'Curriculum Vitae de ' . $this->ultimoNome . ', ' . $this->primeiroNome . ' | MANVIA, S.A', 0, 0, 'R');
}

Вы сохраняете их правильно, но называете их неправильно:)

...