No.
This is wrong. It works only if the user just finished his form.
$this->data = JRequest::get('post');
REPLACE :
require(JPATH_COMPONENT.'/print/pdf_file.php');
BY :
require(JPATH_COMPONENT.'/print/pdf_file.php'); //same
//Then :
$pdf->InitVar($item); //Here you send your item to the class (below, to code to change in your PDF class)
$pdf->Output();
PDF Class :
class PDF extends FPDF {
private $surface='';
private $data='';
//When is called this function ? (At the contruct, or before Output() ?? VERY IMPORTANT)
//initialise les variables globales
function InitVar($item) {
$this->data = $item;
$this->surface = trim ($this->data->surface);
}