【问题标题】:Wordpress & MDPF include external php file templateWordpress & MDPF 包含外部 php 文件模板
【发布时间】:2020-05-23 13:07:04
【问题描述】:

我第一次使用 mpdf 并将其与 Wordpress 集成。我目前在写出html的functions.php文件中设置了它,但我想使用一个单独的php文件作为pdf的模板,这可能吗?我在 mpdf 文档中找不到任何内容。

到目前为止,这是我的代码:

add_action('init', 'congres_redirect');

function congres_redirect() {
  if(isset($_GET['offer'])) {
    $restName = get_field('restaurant_name', $post->ID);
      view_conferinta();

  }
}
function view_conferinta() {
$post_id = false; // current post
$output = '<html>
<head><title>Voucher Download</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /></head>
<link rel="stylesheet" type="text/css" href="//fonts.googleapis.com/css?family=Open+Sans" />
<style>
body {
font-family: open sans, san-serif;
}
.voucher {
padding: 20px;
}

</style>
<body>';

 $output .= ' 

 <div class="voucher-content">
    <div class="inner-voucher">
        <h1>Voucher Title</h1>
        <p>Voucher Description</p>
        <p>Voucher Code: EL-200DEG07022020-123AB</p>
    </div>
 </div>


 ';


//$output .='<div class="voucher">Restaurant Name: '.$restName.'</div>';   
$output .= ' 
</body>
</html>';


require_once __DIR__ . '/mpdf/vendor/autoload.php';

$mpdf = new \Mpdf\Mpdf(['debug' => true]);
$mpdf->WriteHTML($output);
$mpdf->Output('my-voucher.pdf','I');
//$mpdf->Output($pdfheader.'.pdf', 'D');
exit;
}

【问题讨论】:

  • 如果库没有明确提供它作为选项 - 然后使用你已有的,$mpdf-&gt;WriteHTML($output); - 并找到一种方法来加载内容(或渲染输出,如果需要的话将模板文件的动态)转换为变量。

标签: php wordpress templates mpdf


【解决方案1】:

这有点奇怪…… 但有可能......出于安全目的,您需要将模板文件放入主题中。 然后,您需要获取该文件内容并将其用作 pdf 的输出。

// get contents of a file into a string
$filename = include get_stylesheet_directory() . '/template.php';
$handle = fopen($filename, "r");
$contents = fread($handle, filesize($filename));
require_once __DIR__ . '/mpdf/vendor/autoload.php';

$mpdf = new \Mpdf\Mpdf(['debug' => true]);
$mpdf->WriteHTML($contents);
$mpdf->Output('my-voucher.pdf','I');
//$mpdf->Output($pdfheader.'.pdf', 'D');
exit;

【讨论】:

  • 如果模板本身有编码,仅仅读取文件内容是不够的。 (看到显示的代码中有$output .='&lt;div class="voucher"&gt;Restaurant Name: '.$restName.'&lt;/div&gt;',虽然现在被注释掉了,我认为可以肯定地假设它最终会包含这样的东西。)
  • @04FS 我把我的 HTML 内容和你的标签放在一起,看起来不错。
  • 是的,对于静态内容,它会起作用。但很可能他们想要一个完全静态的模板,而是动态地向其中插入数据。
  • 亲爱的,我看到了静态内容,这就是我放置此代码的原因...如果内容变为动态,那么代码将有所不同。
  • 如果我想包含动态内容,我该怎么做,我目前在测试时将其设置为静态,但我想在以后添加动态内容。谢谢
猜你喜欢
  • 1970-01-01
  • 2015-07-08
  • 1970-01-01
  • 1970-01-01
  • 2023-03-16
  • 2018-10-05
  • 2018-10-26
  • 1970-01-01
相关资源
最近更新 更多