.... more quick than dirty!
Poi affinatelo voi, prendetelo come un'idea per chi non sa come fare.
Io l'ho fatto ad un amico in amministrazione ma non dovrebbe essere diverso farlo anche lato site...
Prima cosa scaricare una classe per pdf, io ho usato TCPDF.
La cartella che scaricate contiene un sacco di roba inutile al momento della messa online ma quello lo vedete sul sito dello sviluppatore della classe, così come la sua conf e struttura che nulla ha a che fare con joomla e queste due righe di tutorial.
Io solitamente uso una cartella "assets" all'interno della cartella del mio componente, quindi com_xxxx/assets/tcpdf/
Nella vista lista (s) del componente, nel template, creiamo il pulsante per il bootstrap
$html = '<a href="'.JRoute::_('index.php?option=com_xxxx&task=xxxxs.printpdf&tmpl=component&xid='.$item->id).'" class="btn btn-micro hasTooltip active" title="'.JText::_('PDF').'"><i class="icon-print"></i></a>';
Il bottone chiama una task "printpdf" del controller (s) che andiamo a scrivere:
public function printpdf(){
$xid = JFactory::getApplication()->input->get('xid', 0, 'int');
// Get the model
$model = $this->getModel();
$model->makePDF($xid);
// Close the application
JFactory::getApplication()->close();
}
ATTENZIONE: se guardate in alto al controller se non passo il model, di default il model è quello dell'item non della list come uno si aspetterebbe... è un modo di joomla per lavorare con entrambi i model...
quindi il metodo makePDF($xid); andrà implementato nel model item... infatti è un item che a noi serve recuperare dal db,
public function makePDF($pk){
$pdfdata = $this->getItem($pk);
require_once JPATH_COMPONENT.'/assets/tcpdf/config/lang/eng.php';
require_once JPATH_COMPONENT.'/assets/tcpdf/tcpdf.php';
//----------------------------------------------------------------------------
ESEMPIO TCPDF QUI - EXAMPLE TCPDF FILE HERE
or
require_once JPATH_COMPONENT.'/helpers/Tuo_Helper.php';
//----------------------------------------------------------------------------
}
... ecco, la parte più dirty è questa perchè non ho voglia di fare altro ma in quel punto potete mettere una metodo statico che lascia più pulito il codice del model e fare tutto nel metodo statico (passando ovviamente i dati dell'item
Aprite un file qualsiasi..io ho usato il 48... e copiate il codice dove indicato, TRALASCIANDO ovviamente il tag php e i due include che ho indicato gia sopra (occhio alla path)
Basta, funziona ora abbellimenti, miglioramenti ... roba vostra