How do I print directly from printer?
This is a intranet web application. The user will use this application and they will print out the report from the printer of their department (different department, different printer). I'm Googling to print out directly from printer, but I can't find anywhere. I'm using Yii Framework 1.11.
How can I do this? Is it possible to print out directly from printer? How?
You can try this:-
$fhandle = fopen("test.php","rb");
$contents = fread($fhandle, filesize("test.php"));
$output = eval($contents);
$handle = printer_open("Dell Laser Printer M5200");
printer_set_option($handle,PRINTER_MODE,"raw");
printer_write($handle,$output);
printer_close($handle);
For web application all print works has dependency with your browser. You have to create a page or popup window just for print view with special Html and css.
AT least I fount the best way. I got the js from following site.
http://www.position-absolute.com/articles/printing-web-pages-a-new-jquery-printing-plugin/
My View (index or something)
<p align="right">
<?php
echo CHtml::link('New Job',array('create'),array('class'=>'btn btn-info'));
echo CHtml::link('Print',array('print'),array('class'=>'btnPrint btn btn-info', 'style'=>'margin-left: 10px;'));
?>
</p>
<?php $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'job-grid',
'dataProvider'=>$jobs->search(),
'filter'=>$jobs,
...)); ?>
My Controller
public function actionPrint() {
$d = $_SESSION['all'];
$this->renderPartial('print',array('d'=>$d),false,true);
}
My model
public function search()
{
// Warning: Please modify the following code to remove attributes that
// should not be searched.
$criteria=new CDbCriteria;
$criteria->compare('id',$this->id,true);
$criteria->compare('name',$this->name,true);
$criteria->compare('date',$this->date,true);
$criteria->compare('department_id',$this->department_id);
$criteria->compare('section_id',$this->section_id);
$criteria->compare('team_id',$this->team_id);
$criteria->compare('created_date',$this->created_date,true);
$criteria->compare('updated_date',$this->updated_date,true);
$data = new CActiveDataProvider(get_class($this), array(
'criteria'=>$criteria,
'pagination'=>false,
));
$_SESSION['all'] = $data;
$data = new CActiveDataProvider(get_class($this), array(
'pagination'=>array('pageSize'=> Yii::app()->user->getState('pageSize',
Yii::app()->params['defaultPageSize']),),
'criteria'=>$criteria,
));
$_SESSION['limited'] = $data;
return $data;
}
My view (print.php)
<div id="summary">
<table width="100%" border="1">
<tr>
<th>No.</th>
<th>Job No.</th>
<th>Date</th>
<th>Department</th>
<th>Section</th>
<th>Team</th>
</tr>
<?php
$i=1;
foreach($d->data as $item)
{
?>
<tr>
<td><?php echo $i;?></td>
<td><?php echo $item->name; ?></td>
<td><?php echo $item->date; ?></td>
<td><?php echo $item->departmentsdep->name; ?></td>
<td><?php echo $item->departmentssec->name; ?></td>
<td><?php echo $item->departmentstea->name; ?></td>
</tr>
<?php
$i++;
}
?>
</table>
</div>