【问题标题】:How do i generate more than 1 pdfs on click of a button如何在单击按钮时生成超过 1 个 pdf
【发布时间】:2015-07-06 00:14:18
【问题描述】:

我正在为教师创建一个组件,教师可以在其中为所有完成课程的学生生成 pdf。 检查所有学生和 pdf 应生成并保存在磁盘上。之后提供下载链接以下载生成的所有 pdf 的 zip。这就是我想要实现的。我正在使用 fpdf 生成 pdf。 有什么建议吗?

下面是张贴的表格和学生ID-

    <form
        action="<?php echo JRoute::_('index.php?option=com_mentor&view=download_certificate&cid=' . $cid . '&Itemid=529') ?>"
        name="download_certificate" method="post" id="download_certificate">
        <table class="adminlist" border="1" cellpadding="0" cellspacing="0"
               style="table-layout: fixed" id="content">
            <thead>
            <tr>
                <th class="nowrap" style="width: 35px">
                    <input type="checkbox" name="selectall" id="selectall">
                </th>
                <th class="nowrap" align="center">
                    <?php echo JText::_('COM_MENTOR_USER_NAME'); ?>
                </th>
                <th class="nowrap" style="width: 140px">
                    <?php echo JText::_('COM_MENTOR_COURSE_STATUS'); ?>
                </th>
                <th class="nowrap" style="width: 140px">
                    <?php echo JText::_('COM_MENTOR_ENROLLMENT_DATE'); ?>
                </th>
                <th class="nowrap" style="width: 140px">
                    <?php echo JText::_('COM_MENTOR_ACTIVITY'); ?>
                </th>
                <th class="nowrap" style="width: 50px">
                    <?php echo JText::_('COM_MENTOR_SCORE'); ?>
                </th>
                <th class="nowrap" style="width: 50px">
                    <?php echo JText::_('COM_MENTOR_RESULT'); ?>
                </th>
            </tr>
            </thead>
            <tbody>
            <?php
            //echo '<pre>';print_r($this->mentor_details); die;
            foreach ($this->mentor_details as $students) {
                $cid = $this->mentor_details['cid'];
                $i = 1;
                foreach ($students['students'] as $student) {
                    $userid = $student['id'];
//                echo '<pre>';
//                print_r($student);
//                die;
                    ?>
                    <tr class="status" id="<?php echo $userid ?>">
                        <td align="center">
                            <input type="checkbox" id="<?php echo $userid ?>" name="check[]" class="checkbox1"
                                   value="<?php echo $userid ?>">
                        </td>
                        <td>
                            <a href="<?php echo JRoute::_('index.php?option=com_mentor&view=grader&cid=' . $cid . '&uid='
                                . $userid . $itemid) ?>">
                                <?php echo $student['username']; ?>
                            </a>
                        </td>
                        <!--                    <td>
                        <?php// echo $student['email']; ?>
                    </td> -->
                        <td align="center">
                            <?php
                            $incomplete = $completed = $not_started = 0;
                            for ($k = 0; $k < count($student['elements']); $k++) {
                                foreach ($student['elements'] as $elements) {
                                    if ($elements['userid'] == $userid) {
//                                    echo '<pre>';print_r($elements); die;
                                        if ($elements['element']['cmi.core.lesson_status'] == 'incomplete') {
                                            $incomplete++;
                                        } else {
                                            $completed++;
                                        }
                                    }
                                }
                            }
                            if ($incomplete == 0 && $completed == 0) {
                                echo 'Not yet started';
                            } else {
                                if ($completed == count($student['elements'])) {
                                    echo 'Completed';
                                } else {
                                    echo 'Incomplete';
                                }
                            }
                            ?>
                        </td>
                        <td align="center">
                            <?php
                            if (!empty($student['timestart'])) {
                                $date = date('d-m-Y H:i', $student['timestart']);
                                echo $date;
                            } else {
                                echo "Not yet started";
                            } ?>
                        </td>
                        <td align="center">
                            <?php
                            if (!empty($student['activity']['lasttime']) && (!empty($student['activity']['starttime']))) {
                                $start_date = date('d-m-Y H:i', $student['activity']['starttime']);
                                $last_date = date('d-m-Y H:i', $student['activity']['lasttime']);
                                echo $start_date . '<br/>' . $last_date;
                            } else {
                                echo "-";
                            } ?>
                        </td>
                        <td align="center">
                            <?php
                            $grades = $student['grades'];
                            $total_grade = array();
                            $j = 0;
                            //for ($j = 0; $j < count($grades); $j++) {
                            //    $total_grade[$j] = $grades[$j]['finalgrade'];
                            //}
                            //print_r($total_grade);die;
                            if (!empty($grades)) {
                                //echo number_format(array_sum($total_grade), 2);
                                $total_grade[$j] = $grades[$j]['finalgrade'];
                                echo number_format($total_grade[$j], 2);
                            } else {
                                echo '-';
                            }
                            //echo '<pre>';
                            //print_r($student['grades']);
                            //die;
                            ?>
                        </td>
                        <td align="center">
                            <?php
                            //echo '<pre>';print_r($student);die;
                            if (!empty($student['scores'])) {
                                if (isset($grades[$j]['feedbacktext'])) {
                                    echo $grades[$j]['feedbacktext'];
                                } else {
                                    echo '-';
                                }
                            } else {
                                echo '-';
                            }
                            ?>
                        </td>
                    </tr>
                    <?php $i++;
                }
            } ?>
            </tbody>
        </table>
    </form>
<script>
function checked_value() {
        var checkedValue = [];
        var $len = $(".checkbox1:checked").length;

        if ($len == 0) {
            alert('Please select user');
        }
//        else if ($len > 1) {
//            alert('Please select a single user only.');
//        }
        else {
            $(".checkbox1").each(function () {
                var $this = $(this);
                if ($this.is(":checked")) {
                    checkedValue.push($this.attr("id"));
                }
            });

            $("#download_certificate").submit();
    </script>

点击图片标签时,表单会提交学生 ID,我正在获取学生数据、他的姓名、成绩、课程,

<img src="/components/com_mentor/images/certificate_blue.png" class="certificate-ico right"
             title="Download Certificate" onclick="checked_value();"/>

经过这个处理,页面被重定向到pdf.php页面

require_once('/wamp/opt/bitnami/apache2/htdocs/lms/lib/fpdf/fpdf.php');
$pdf = new FPDF(); $pdf->SetFont('times', '', 12);
$pdf->SetTextColor(50, 60, 100); $pdf->AddPage('L');
$pdf->SetDisplayMode(real, 'default'); $pdf->SetXY(10, 60);
$pdf->SetFontSize(12);
$pdf->Write(5, 'Dear Ms.XYX');
$filename = "test.pdf";
$dir = "/assets/";
$pdf->Output($dir . $filename, 'F');

【问题讨论】:

  • 请贴出相关代码部分。到目前为止,您尝试了什么?
  • 现在当我点击 pdf 的按钮时,只生成并保存了 1 个。但我要说10个学生。下面是我用来生成pdf的代码:require_once('/wamp/opt/bitnami/apache2/htdocs/lms/lib/fpdf/fpdf.php'); $pdf = new FPDF(); $pdf-&gt;SetFont('times', '', 12); $pdf-&gt;SetTextColor(50, 60, 100); $pdf-&gt;AddPage('L'); $pdf-&gt;SetDisplayMode(real, 'default'); $pdf-&gt;SetXY(10, 60); $pdf-&gt;SetFontSize(12); $pdf-&gt;Write(5, 'Dear Ms.XYX'); $filename = "test.pdf"; $dir = "/assets/"; $pdf-&gt;Output($dir . $filename, 'F');
  • 您上面的代码除了生成 PDF 的基本模板外,并没有显示太多内容。您是否编写了任何代码来为该老师提取特定学生的信息?如果没有,我建议先从那里开始。
  • 是的..我正在获取分配给老师的所有学生以及所有必需的数据..我只是停留在 pdf 部分,该部分正在为已完成的老师下的所有学生生成 pdf他们的课程
  • 好吧,来自 PHP 的 foreach 可以派上用场。如果您想要 10 个相同的 PDF,只需在更改的文件名上循环使用 $pdf-&gt;Output() 的部分。

标签: php pdf fpdf


【解决方案1】:

感谢大家的帮助.. 解决了我的问题。 循环通过 pdf 函数获取 n 号。用户数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-10
    • 2013-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-10
    相关资源
    最近更新 更多