-->

与DOMPDF处理动态PHP可变输出(Processing dynamic PHP variable

2019-10-19 21:57发布

我一直工作在一个脚本,其中我应该从一个页面动态创建的数据创建一个PDF文件。 经过一番研究,我已经决定使用DOMPDF。 我目前使用笨作为我的框架,所以我想出了这个教程 。 所以从这个教程中,我得到了以下一组的控制器代码。

控制器:dompdf_test.php - 这将被用于生成基于所加载的视图的实际PDF。

class Dompdf_test extends CI_Controller {

    public function index() {   
        // Load all views as normal
        $this->load->view('summary/index');
        // Get output html
        $html = $this->output->get_output();

        // Load library
        $this->load->library('dompdf_gen');

        // Convert to PDF
        $this->dompdf->load_html($html);
        $this->dompdf->render();
        $this->dompdf->stream("SavedData.pdf");
    }
}

控制器:dompdf_view.php - 这仅仅是页面被访问,将被转换为PDF

class Dompdf_view extends CI_Controller {
    public function index()
    {
        $this->load->view('summary/index');
    }
}

图书馆:dompdf_gen.php - 位于应用程序/库

class Dompdf_gen {

    public function __construct() {

        require_once APPPATH.'third_party/dompdf/dompdf_config.inc.php'; //this is where the whole dompdf plugin is located

        $pdf = new DOMPDF();
        $CI =& get_instance();
        $CI->dompdf = $pdf;
    }
}

所以这里有云:我要转换为PDF页面产生由用户操作的数据。 产生的数据无法从数据库中,但基于用户选择什么真实。 例如,用户选择作为女性性别。 那个“女”字将被添加到摘要选项卡(在同一页上)。 在汇总标签的所有数据将包括在PDF文件。 我想这些数据传递到另一个PHP文件,因为该页面包括PDF格式保存了很多不相关的数据,并DOMPDF不支持某些CSS语法(如果我的理解是正确的)的。 在提到文件传递的数据将是一个简单的PDF模板表的基础。

现在,这里的问题。 我用这个非常简单的代码上传递的数据:

查看:摘要/ sourceData.php - 样本页面,在这里我需要输入数据。 所有输入的数据将汇总/索引视图中进行传递。

<form method="post" action="http://siteURL/dompdf_view"> //dompdf_view is simply the summary/index page
 <input type="text" name="name0" placeholder="Add text"/><br/>
 <input type="text" name="name1" placeholder="Add text"/><br/>
 <input type="text" name="name2" placeholder="Add text"/><br/>
 <input type="text" name="name3" placeholder="Add text"/><br/> 
 <input type="text" name="name4" placeholder="Add text"/><br/>
<input type="submit" name="submit" value="Pass Variable"/>

</form>

总结/ index.php文件 - 这是数据传递。

 <?php 

$name0 = isset($_POST['name0']) ? $_POST['name0'] : "";
$name1 = isset($_POST['name1']) ? $_POST['name1'] : "";
$name2 = isset($_POST['name2']) ? $_POST['name2'] : "";
$name3 = isset($_POST['name3']) ? $_POST['name3'] : "";
$name4 = isset($_POST['name4']) ? $_POST['name4'] : "";

    echo $name0.'<br/><br/>'; 
    echo $name1.'<br/><br/>'; 
    echo $name2.'<br/><br/>'; 
    echo $name3.'<br/><br/>'; 
    echo $name4.'<br/><br/>';

    ?>

    <a href="<http://siteURL/dompdf_test>">Save as PDF</a>  

从汇总/ sourceData.php数据传递给汇总/ index.php文件,但是当我尝试保存汇总/ index.php文件为PDF格式,这样可以节省,但没有得到任何数据。 这只是除了字另存为PDF空白的PDF文档。

我研究并尝试添加,但仍没有运气。

无法读取DOMPDF PHP的echo文件? 如果不是,怎么样?

我不知道我还如何能够将这些数据保存为PDF。 或者,有另一种方式来传递这些数据?

注:上面的代码工作,如果该网页是静态的。 但是,当我添加动态数据,它不读取从PDF文件中该页面的PHP结果。

任何帮助/建议将不胜感激。

Answer 1:

我们想出了一个解决我的问题。 提交的数据并没有传递到,这就是为什么它是空白的控制器。 我们所做的是,我们通过输入后提交的数据,并添加控制器的情况如下:

$html = $this->load->view('summary/index', $data, true);

感谢所有帮助! :)



Answer 2:

当你通过点击链接生成的PDF“保存为PDF”你触发从观点汇总/索引视图一个新的请求没有任何POST参数。 然后你的控制器所生成的PDF被称为服务器端渲染生成PDF摘要索引视图,但现在没有任何职位的参数。 这就是为什么你的PDF是空的。 您可以更换

<a href="<http://siteURL/dompdf_test>">Save as PDF</a> 

有:

  if($_POST['submit']!='Save as PDF'){
    ?>
      <form method="post" action="http://siteURL/dompdf_test"> 
        <input type="hidden" name="name0" value="<?php echo htmlspecialchars($name0,ENT_COMPAT,'UTF-8')?>"/><br/>
        <input type="hidden" name="name1" value="<?php echo htmlspecialchars($name1,ENT_COMPAT,'UTF-8')?>" /><br/>
        <input type="hidden" name="name2" value="<?php echo htmlspecialchars($name2,ENT_COMPAT,'UTF-8')?>"/><br/>
        <input type="hidden" name="name3" value="<?php echo htmlspecialchars($name3,ENT_COMPAT,'UTF-8')?>"/><br/> 
        <input type="hidden" name="name4" value="<?php echo htmlspecialchars($name4,ENT_COMPAT,'UTF-8')?>"/><br/>
        <input type="submit" name="submit" value="Save as PDF"/>
      </form>
    <?php
  }


Answer 3:

这应该给你DOMPDF如何工作的提示。

        //File when you gererate $html
        $dir = dirname(__FILE__);
        require_once($dir.'/file_to_generate_html_from_php.php');  
        // Load the dompdf files  
        require_once($dir.'/include/dompdf/dompdf_config.inc.php');  

        $dompdf = new DOMPDF(); // Create new instance of dompdf  
        $dompdf->load_html($html); // Load the html  
        $dompdf->render(); // Parse the html, convert to PDF  
        $pdf_content = $dompdf->output(); // Put contents of pdf into variable for later

file_to_generate_html_from_php.php -应该是这个样子。

$html = '
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <html lang="sv">
</head>
<body>';
$html .='<h2>Report</h2>';
$html .='
</body>
</html>';

您还可以运行PHP代码来生成HTML $里面file_to_generate_html_from_php.php

$SQLQUERY= mysql_query("SELECT * FROM table WHERE Column = '$variable'") or die(mysql_error());

while($row = mysql_fetch_array( $SQLQUERY)) {
                                                // echo out the contents of each row into a table
                                                if(empty($row['Column'])){
                                                $html .= '<p>No results!</p>';
                                                }
                                                else{
                                                $html .= '<pre>Yes we found this: '.$row['Column'].'</pre>';
                                                }
                                        }


文章来源: Processing dynamic PHP variable output with domPDF