【问题标题】:How to print directly from printer with Yii?如何使用 Yii 直接从打印机打印?
【发布时间】:2012-12-08 22:24:32
【问题描述】:

如何直接从打印机打印?

这是一个 Intranet Web 应用程序。用户将使用此应用程序,他们将从其部门的打印机(不同部门,不同的打印机)打印出报告。我正在谷歌搜索直接从打印机打印出来,但我找不到任何地方。我正在使用 Yii 框架 1.11。

我该怎么做?可以直接从打印机打印出来吗?怎么样?

【问题讨论】:

  • 可以通过将其添加到您的视图中<script>window.print();</script> 这是一个选项吗?并作为旁注:除了打印机之外,您还可以直接打印什么 :)
  • 是的 window.print 将打印整个网页。现在,客户只想打印出 .xls(csv) 或 pdf 格式的报告。但他们不想让保存到员工电脑,只打印。

标签: php printing yii network-printers


【解决方案1】:

你可以试试这个:-

$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);

【讨论】:

  • 不应定义打印机。不同部门有不同的打印机。(至少1个部门有2台打印机。)其中一台打印机损坏时可以更换为其他全新的打印机。
【解决方案2】:

对于网络应用程序,所有印刷作品都依赖于您的浏览器。您必须使用特殊的 Html 和 css 为打印视图创建一个页面或弹出窗口。

【讨论】:

  • 特殊的 HTML 和 CSS 是什么意思?
  • 你能帮我怎么办吗?
【解决方案3】:

至少我找到了最好的方法。我从以下站点获得了 js。

http://www.position-absolute.com/articles/printing-web-pages-a-new-jquery-printing-plugin/

我的视图(索引或其他内容)

    <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,
...)); ?>

我的控制器

public function actionPrint() {
        $d = $_SESSION['all'];
        $this->renderPartial('print',array('d'=>$d),false,true);
}

我的模型

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;
    }

我的观点(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>

【讨论】:

  • 我收到未定义索引的错误:全部。为什么会这样?
  • @ Femme Fatale,上面的答案不是我的代码,但我查看了该代码并看到了您的问题。我认为错误来自这行代码 $_SESSION['all']。我认为是因为您没有使用参数“all”设置会话。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-10
  • 1970-01-01
  • 1970-01-01
  • 2011-06-24
  • 1970-01-01
  • 2021-02-22
相关资源
最近更新 更多