使用DOCPDF生成的PDF文档嵌入CodeIgniter中

时间:2015-11-18 22:07:45

标签: php html codeigniter pdf docx

我正在尝试转换设置CodeIgniter应用程序,该应用程序可以获取.docx文档,并使用DOCPDF(https://github.com/dompdf/dompdf),将其转换为pdf,并将该pdf文件嵌入到我的视图中。在我的控制器中,我已经可以转换.docx文档,但是,我能做到的唯一方法就是让它生成一个自动下载的文件。

有没有办法可以将文件发送到我的视图以便嵌入?或者,暂时将文件保留在缓冲区或其他内容中,然后我可以将其用作我视图中嵌入标记的来源?我对这一切都很陌生,所以我觉得我可能会错过一些简单的事情。

这是我到目前为止所尝试的......

我使用的控制器方法:

public function resume_viewer()
{
    error_reporting(E_ALL);
    $pageSettings['module'] = 4;
    $pageSettings['subModule'] = 0;
    $data['pageSettings'] = $pageSettings;

    $this->load->library('docx_reader');
    $this->load->helper(array('dompdf', 'file'));

    $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['html'] = $html;
    $testEvents = explode("'", $this->input->post('testEventIds'));

    $data['testEvents'] = $testEvents;

    $this->load->view('results/resume_viewer', $data);
}

视图中的我的HTML:

<div id="magazine" class="text-center">
    <div>
        <h1 style="margin-left: -350px;">Gerald Cunningham</h1>
        <embed src="my-pdf-file-here" width="600" height="775" alt="pdf" pluginspage="http://www.adobe.com/products/acrobat/readstep2.html">
    </div>
</div>

我不知道如何将转换后的pdf文件转换为embed标记。非常感谢任何帮助!

提前致谢!

1 个答案:

答案 0 :(得分:1)

我认为你有两个问题。首先,据我所知,你应该使用的元素是<object>元素,而不是<embed>元素。

<object data="my-pdf-file-here.pdf" type="application/pdf" width="100%" height="100%">

  PDF Plugin Not Available

</object>

仅供参考,元素中的文本仅在浏览器无法显示PDF文件时显示。

您的第二个问题是您确实需要保存PDF,然后将其作为src元素的<object>属性加载。

这是一个例子。

$dompdf = new DOMPDF();
$dompdf->load_html($pdf);
$dompdf->render();
$output = $dompdf->output();
file_put_contents('path/to/file/my-pdf-file.pdf', $output);

如果您担心正在创建大量PDF,您可以随时将PDF的名称和路径与session / user_id或其他内容一起记录到数据库表中,并在会话到期时{{1}在该会话下创建的所有PDF。