在CodeIgniter视图

时间:2015-11-19 19:27:57

标签: php html codeigniter pdf docx

最终,我想要做的是获取.docx文件,将其转换为HTML,然后将该HTML转换为PDF并在我的视图中嵌入该PDF。我想在不将PDF保存到文件的情况下完成所有操作,而是立即在我的视图中显示它。

到目前为止,我已经能够将.docx转换为HTML,然后将其转换为pdf。但是,我现在仍然坚持如何在我的视图中显示该pdf字符串。目前,我正在尝试将包含pdf标题的视图加载到变量中,然后将该变量发送到我的视图以显示在标记中。它不起作用。

这是我到目前为止所拥有的......

我的控制器:

$doc = new Docx_reader();
$doc->setFile('testDoc3.docx');

$plain_text = $doc->to_plain_text();
$html = $doc->to_html();

$pdf = pdf_create($html, 'testDoc4', false);
$data['pdfx'] = $pdf;
$data['pdf'] = $this->load->view('test_pdf_view', $data, TRUE);
$this->load->view('results/test_viewer', $data);

test_pdf_view:

$len = strlen($pdfx);
header("Content-type: application/pdf");
header("Content-Length:" . $len);
header("Content-Disposition: inline; filename=Resume.pdf");
print $pdfx;

我的test_viewer视图的相关部分:

<object data="<?php echo $pdf; ?>" width="600" height="775" type="application/pdf"> PDF Plugin Not Available </object>

pdf_create函数:

function pdf_create($html, $filename='', $stream=TRUE)
{
    require_once("system/helpers/dompdf/dompdf_config.inc.php");

    $dompdf = new DOMPDF();
    $dompdf->load_html($html);
    $dompdf->render();
    if ($stream) {
        $dompdf->stream($filename.".pdf");
    } else {
        return $dompdf->output();
    }
}

我尝试做的甚至可能吗?我知道我可以将pdf保存到文件或数据库,然后显示该pdf文件,最终删除或取消链接该文件,但由于一些原因,这不是我想要的方向。任何想法或帮助表示赞赏!

谢谢!

1 个答案:

答案 0 :(得分:1)

尝试这种方式,创建一个新方法来生成PDF,而不是使用用于加载视图的相同方法。然后使用该方法作为对象标记的data-src。

例如:

生成pdf并将其流式传输到浏览器的功能

function generate_pdf()
{
    $doc = new Docx_reader();
    $doc->setFile('testDoc3.docx');

    $plain_text = $doc->to_plain_text();
    $html = $doc->to_html();

    $pdf = pdf_create($html, 'testDoc4', false);
    $len = strlen($pdf);
    header("Content-type: application/pdf");
    header("Content-Length:" . $len);
    header("Content-Disposition: inline; filename=Resume.pdf");
    print $pdf;
} 

加载视图的功能:

function load_view()
{
    $this->load->view('results/test_viewer');
}

test_viewer文件:

<object data="<?php echo  base_url('YOUR_CONTROLLER/generate_pdf' ?>" width="100%" height="500px" type="application/pdf"> PDF Plugin Not Available </object>