过去几天我一直在努力用PHP将表格导出为PDF格式的mpdf,我终于解决了大部分问题,但是,我只能创建pdf并将其存储在服务器文件打开页面时自动显示,而我希望只在按下按钮后创建pdf。这是我的代码:
<?php if ( have_posts() ) : while (have_posts() ) : the_post(); ?>
<h3><?php the_title() ?></h3>
<?php ob_start(); ?>
<div id="customers">
<table border='1'>
<thead>
<tr>
<td>
<h1 class="table2" >Periodo de Inversión</h1>
</td>
<td>
<h1 class="table2" >Saldo Inicial</h1>
</td>
<td>
<h1 class="table2" >Inversión en el Periodo</h1>
</td>
<td>
<h1 class="table2" >Interés Causado en el Periodo</h1>
</td>
<td>
<h1 class="table2" >Intereses Pagados</h1>
</td>
<td>
<h1 class="table2" >Intereses Reinvertidos</h1>
</td>
<td>
<h1 class="table2" >Saldo</h1>
</td>
</tr>
</thead>
<tbody>
<?php
if( have_rows('datos_especificos') ):
?>
<?php
while ( have_rows('datos_especificos') ) : the_row();
$icelpx = get_sub_field('interes_causado_en_el_periodo');
$cpx = get_sub_field('cantidad_pagada');
$crx = $icelpx-$cpx;
$sal1x = get_sub_field('saldo');
$ipx = get_sub_field('inversion_en_el_periodo');
$sal2x = $sal1x+$ipx+$crx;
$fech = get_sub_field('fecha');
$sal1 = get_sub_field('saldo');
$ielp = get_sub_field('inversion_en_el_periodo');
$icelp = get_sub_field('interes_causado_en_el_periodo');
$cp = get_sub_field('cantidad_pagada');
$cr = $icelp-$cp;
$crt = $crt+$cr;
$sal2 = $sal1+$ip+$cr;
$igalf = $igalf+$icelp;
$fech2 = $fech+100;
$ID= $the_query->ID;
?>
<tr>
<td>
<p class="table"> <?php the_sub_field('fecha') ?> </p>
</td>
<td>
<p class="table"> <?php the_sub_field('saldo') ?> </p>
</td>
<td>
<p class="table"> <?php the_sub_field('inversion_en_el_periodo') ?> </p>
</td>
<td>
<p class="table"> <?php the_sub_field('interes_causado_en_el_periodo'); ?> </p>
</td>
<td>
<p class="table"> <?php the_sub_field('cantidad_pagada'); ?> </p>
</td>
<td>
<p class="table"> <?php echo $crx; ?> </p>
</td>
<td>
<p class="table"> <?php echo $sal2x; ?> </p>
</td>
</tr>
<?php
endwhile;
else :
// no rows found
endif;
?>
</tbody>
</table>
</div>
<br>
<table>
<tr>
<td>
<p class="table"> Saldo Inicial <?php echo $fech; ?> </p>
</td>
<td>
<p class="table"> <?php echo $sal1; ?> </p>
</td>
</tr>
<td>
<p class="table"> Nuevas Inversiones </p>
</td>
<td>
<p class="table"> <?php echo $ielp; ?> </p>
</td>
<tr>
<td>
<p class="table"> Intereses Pagados </p>
</td>
<td>
<p class="table"> <?php echo $cp; ?> </p>
</td>
</tr>
<tr>
<td>
<p class="table"> Intereses Reinvertidos </p>
</td>
<td>
<p class="table"> <?php echo $crt; ?> </p>
</td>
</tr>
<tr>
<td>
<p class="table"> Total Intereses Generados a la fecha</p>
</td>
<td>
<p class="table"> <?php echo $igalf; ?> </p>
</td>
</tr>
<tr>
<td>
<p class="table"> Saldo Inicial <?php echo $fech2; ?> </p>
</td>
<td>
<p class="table"> <?php echo $sal2; ?> </p>
</td>
</tr>
</table>
<?php $tableVar = ob_get_contents();
$mpdf=new mPDF();
$stylesheet = file_get_contents(get_template_directory_uri() . 'style.css');
$mpdf->WriteHTML($stylesheet,1);
$mpdf->WriteHTML($tableVar,2);
$mpdf->Output('test8.pdf','F');
?>
<a href="" class="button">Generate pdf</a> //THIS BUTTON DOES NOTHING FOR NOW.
<hr>
<?php endwhile; else: ?>
<p>There are no posts or pages here</p>
<?php endif; ?>
答案 0 :(得分:2)
要进一步解释我的评论(这不一定是最好的方法),您可以更改此链接:
<a href="" class="button">Generate pdf</a>
到这样的形式:
<form method="post"><input type="submit" value="Generate pdf"/></form>
然后将PDF包装成这样的东西:
if( 'POST' === $_SERVER['REQUEST_METHOD'] )
{
$mpdf=new mPDF();
$stylesheet = file_get_contents(get_template_directory_uri() . 'style.css');
$mpdf->WriteHTML($stylesheet,1);
$mpdf->WriteHTML($tableVar,2);
$mpdf->Output('test8.pdf','F');
}
您可能需要考虑一些安全事项和边缘情况,但这是一个很好的基本开始