PHP 动态 HTML 到带有 mPDF 的 PDF 证书

PHP dynamic HTML to PDF certificate with mPDF

正在寻找一种方法将 PHP 动态 html 输出到一个看起来像证书的 PDF 文档中 - 我有 html 的证书看起来不错,但是当我使用 mPDF 来return 将 html 结果转换为 PDF,但我什么也没得到。我确定这是 html 存储在 php var 中的方式,脚本需要在 html 之外,但我不确定如何完成此操作?

<?php

$html = '
<HTML>
<HEAD>
<!-- saved from url=(0014)about:internet -->
<TITLE>Certificate</TITLE>

<SCRIPT>
var strTitle = "MIEMSS Course Title";

var g_arrMonths = new Array()

// Enter the month names below
try
{
g_arrMonths[0] = __MONTH_JAN__; 
g_arrMonths[1] = __MONTH_FEB__;
g_arrMonths[2] = __MONTH_MAR__;
g_arrMonths[3] = __MONTH_APR__;
g_arrMonths[4] = __MONTH_MAY__;
g_arrMonths[5] = __MONTH_JUN__;
g_arrMonths[6] = __MONTH_JUL__;
g_arrMonths[7] = __MONTH_AUG__;
g_arrMonths[8] = __MONTH_SEP__;
g_arrMonths[9] = __MONTH_OCT__;
g_arrMonths[10] = __MONTH_NOV__;
g_arrMonths[11] = __MONTH_DEC__;

// Enter the column headers
var g_strDateTime       = __DATE_TIME__;
var g_strStudentScore   = __STUDENT_SCORE__;
var g_strPassingScore   = __PASSING_SCORE__;
var g_strResult1        = __RESULT__;
var g_strQuestion       = __QUESTION__;
var g_strCorrectAns     = __CORRECT_ANS__;
var g_strResult2        = __RESULT__;
var g_strStudentAns     = __STUDENT_ANS__;
var g_strPointsAwarded  = __POINTS_AWARD__;
var g_strNeutral        = __NEUTRAL__;
var g_strCorrect        = __CORRECT__;
var g_strIncorrect      = __INCORRECT__;
}
catch(e)
{
g_arrMonths[0] = "January"; 
g_arrMonths[1] = "February";
g_arrMonths[2] = "March";
g_arrMonths[3] = "April";
g_arrMonths[4] = "May";
g_arrMonths[5] = "June";
g_arrMonths[6] = "July";
g_arrMonths[7] = "August";
g_arrMonths[8] = "September";
g_arrMonths[9] = "October";
g_arrMonths[10] = "November";
g_arrMonths[11] = "December";

// Enter the column headers
var g_strDateTime = "Date / Time";
var g_strStudentScore = "Student Score";
var g_strPassingScore = "Passing Score";
var g_strResult1 = "Result";
var g_strQuestion = "Question";
var g_strCorrectAns = "Correct Answer";
var g_strResult2 = "Result";
var g_strStudentAns = "Student Answer";
var g_strPointsAwarded = "Points Awarded";
var g_strNeutral = "Neutral";
var g_strCorrect = "Correct";
var g_strIncorrect = "Incorrect";
}

</SCRIPT>

<STYLE>

TD {
font-size:10pt;
font-family:arial;
text-align: center;
width: 12.5%;
}

.CORRECT {
font-size:10pt;
font-family:arial;
color: #008800;
}

.INCORRECT {
font-size:10pt;
font-family:arial;
color: #880000;
}

.NEUTRAL {
font-size:10pt;
font-family:arial;
color: #000088;
}

.QUESTION {
font-size:10pt;
font-family:arial;
text-align: left;
width: 46.25%;  
}

.NUMBER {
font-size:10pt;
font-family:arial;
text-align: center;
width: 3.75%;
}

.DATE {
font-size:10pt;
font-family:arial;
text-align: center;

}

.DATETIME {
font-size:10pt;
font-family:arial;
margin-top: 0;
margin-bottom: 0;
}

.SUMMARY {
font-size:10pt;
font-family:arial;
text-align: center;
}

H1 {
font-size:14pt;
font-family:arial;
text-align: center;
}

TH {
font-size:12pt;
font-family:arial;
}

.image { 
   position: relative; 
   width: 100%; /* for IE 6 */
}

H2 {
font-size:14pt;
font-family:arial;
text-align: center;
position: absolute; 
top: 200px; 
left: 0; 
width: 100%; 
}

</STYLE>

<SCRIPT>
var g_oContentResults = window.opener.g_oContentResults;
var g_listQuizzes = window.opener.g_listQuizzes;
var g_oPrintOptions = window.opener.g_oPrintOptions;

var player = GetPlayer()
    //var myscore = player.GetVar("g_strStudentScore");
var scoreTotal = player.GetVar("userScore").toString();

function FormatDate(dtmDate)
{
var strResult = "";
var nHours = dtmDate.getHours();
var strAM = "am";
var nMinutes = dtmDate.getMinutes();
var strMinutes = "" + nMinutes;

if (nMinutes < 10)
{
    strMinutes = "0" + nMinutes;
}

if (nHours == 12)
{
    strAM = "pm";
}

if (nHours > 12)
{
    nHours -= 12;
    strAM = "pm";
}


strResult += "<P>"
strResult += g_arrMonths[dtmDate.getMonth()] + " ";
strResult += dtmDate.getDate() + ", ";
strResult += dtmDate.getFullYear() + "  ";
strResult += nHours + ":";
strResult += strMinutes + " ";
strResult += strAM;
strResult += "</P>"
return strResult;
}

</SCRIPT>

</HEAD>
<BODY>
<center>
<img src="quizimages/cert.png">
</center>
<p>
<SCRIPT>

//document.write("<P><H1>" + strTitle + "</H1></P>");

if (g_oPrintOptions.strName)
{
if (g_oPrintOptions.strName.length > 0)
{
    document.write("<H2><CENTER><I>This certifies:</I></br></br>");
    document.write("" + g_oPrintOptions.strName + "</br></br>");
    document.write("<I>has completed the course:</I></br></br>");
    document.write("" + strTitle + "</br></br>");
    document.write("</br></br>");
    document.write( FormatDate(g_oContentResults.dtmFinished));
    document.write("Score: " + g_listQuizzes[g_oPrintOptions.strMainQuizId].nPtScore + "</br></br></H2>" );     
    document.write('<center> <input type=button onClick="window.print()" value="Print This Page"/> </center>');
}
}


    document.write("USER SCORE: "+scoreTotal+""); 

    document.write("<H2><CENTER><I>This certifies:</I></br></br>");
    document.write("" + g_oContentResults.strName + "</br></br>");
    document.write("<I>has completed the course:</I></br></br>");
    document.write("" + strTitle + "</br></br>");
    document.write("</br></br>");
    document.write( FormatDate(g_oContentResults.dtmFinished));
    document.write("Score: " + g_listQuizzes[g_oContentResults.strMainQuizId].nPtScore + "</br></br></H2>" );       
    document.write('<center> <input type=button onClick="window.print()" value="Print This Page"/> </center>');


</SCRIPT>
</BODY>
</HTML>
';


//==============================================================
//==============================================================
//==============================================================

include("../mpdf/mpdf.php");
$mpdf=new mPDF('c'); 

$mpdf->WriteHTML($html);
$mpdf->Output();
exit;

//==============================================================
//==============================================================
//==============================================================


?>

html 中的 javascript 变量在绘制 php 页面后加载。 javascript var 需要通过 POST、GET 或查询字符串传递给 php var,并在刷新或新页面中获取 - $html 因此需要只是 html 而不是包含脚本。