0

我已经设置了一个以某种方式使用前端控制器的应用程序。我遇到了一个名为html2pdf的库。该库将 html 转换为 pdf。

像这样:

<?php
    $content = "
     <page>
      <h1>Exemple d'utilisation</h1>
      <br>
      Ceci est un <b>exemple d'utilisation</b>
      de <a href='http://html2pdf.fr/'>HTML2PDF</a>.<br>
     </page>";

   require_once(dirname(__FILE__).'/html2pdf/html2pdf.class.php');
   $html2pdf = new HTML2PDF('P','A4','fr');
   $html2pdf->WriteHTML($content);
   $html2pdf->Output('exemple.pdf');
?>

如您所见,该库可以将该 html 转换为 pdf。它甚至可以读取 html 文件并将其转换为 pdf。

好的,这是我的控制器的设置。

class TestController extends Controller {
    private $template;

    public function __construct(View $view = null) {
        parent::__construct($view);
        $this->template = 'test'; // replace this
    }

    public function index() {
        $this->view->data['someinfo'] = 'information about me';
        $this->view->render($this->template);
    }
}

我的想法是,不要将模板渲染出来,而是将$someinfo变量替换为,information about me因为我使用了extractphp.ini 的功能。

我可以只替换变量,然后将输出保存为 html,这样我就可以使用 html2pdf 将其转换为 pdf?

是否已经实施了这一点?还是有更有效的解决方案,而不是创建和转换 html 文件?

谢谢你。

4

1 回答 1

0

在 ZendFramework MVC 中,您可能会在控制器中执行以下操作:

function toPdfAction()  { 
   // I need a different layout 
   $this->getHelper('layout')->setLayout('pdf-layout'); 
   $this->_helper->layout->disableLayout(); 

   // we need to do renderering ourselves.   
   $this->getHelper('viewRenderer')->setNoRender(); 

   /* @var $layout Zend_Layout */ 
   $layout = $this->_helper->layout->getLayoutInstance(); 
   $layout->assign('content', $this->view->render('mycontroller/myaction.tpl')); 

   $output = $layout->render(); 

   // now we still need to ensure that the rendering is not sent to the browser 
   $this->getResponse()->clearBody(); 

   // now do something with $ouput like convert it to PDF and stream it back
} 

但是,答案是针对特定于 MVC 实现的。如果您不使用 Zend,那可能对您不起作用。您使用的是什么 MVC 框架?

于 2013-04-01T16:15:05.757 回答