使用mPDF将JSON表转换为PDF

时间:2019-01-21 09:28:48

标签: php json mpdf

我正在尝试通过mPDF将JSON文件转换为PDF,但是我的问题是运行php后JSON表未显示在HTML中。仅显示一个空白的PDF页面。

编辑: 我更新了代码,因此几乎可以正常工作。该代码创建了表格,但并未显示所有的JSON数据。

新PHP

ob_start();
$json = file_get_contents($url);
$json_decoded= json_decode($json);

foreach ($json_decoded as $result) {
$html = '
  <!DOCTYPE html>
  <html>
  <head>
      <title>Convert JSON Data to HTML Table</title>
      <link href="style.css" rel="stylesheet">
      <meta  charset="UTF-8">
  </head>
  <body >
      <table>
          <tr>
              <th>driverno</th>
              <th>name</th>
              <th>objectno</th>
              <th>tagId</th>
              <th>lastScanDate</th>
          </tr>
          <tr>
            <td>'.$result->driverno.'</td>
            <td>'.$result->name.'</td>
            <td>'.$result->objectno.'</td>
            <td>'.$result->tagID.'</td>
            <td>'.$result->lastScanDate.'</td>
          </tr>
          <tr>
            <td>'.$result->driverno.'</td>
            <td>'.$result->name.'</td>
            <td>'.$result->objectno.'</td>
            <td>'.$result->tagID.'</td>
            <td>'.$result->lastScanDate.'</td>
          </tr>
      </table>
  </body>


  </html>

';

}

$mpdf->WriteHTML($html);
$mpdf->Output("demo.pdf", 'F');
$mpdf->Output();
?>

JSON

 {
  "driverno":1,
  "name":"Aragorn",
  "objectno":1,
  "tagId":1,
  "lastScanDate":"yesterday"   
 },
 {
  "driverno":2,
  "name":"Legolas",
  "objectno":2,
  "tagId":2,
  "lastScanDate":"today"  
 },
 {
  "driverno":3,
  "name":"Gimmli",
  "objectno":3,
  "tagId":3,
  "lastScanDate":"today"

 },
 {
  "driverno":4,
  "name":"Gandalf",
  "objectno":4,
  "tagId":4,
  "lastScanDate":"today" 
 }

我得到了没有tagID的JSON文件的最后数据。

1 个答案:

答案 0 :(得分:0)

mPDF目前不支持Javascript。

您必须直接在PHP中使用$table = json_decode($json, true)解析JSON,然后在foreach ($json as $row)上循环并自己构建HTML表标记。

请注意不要回显代码,而应将其构建为字符串形式的变量(see this SO answer)。

然后使用$mpdf->WriteHtml()将带有表HTML的字符串传递给mPDF。