【问题标题】:Embedding PDF documents generated with DOCPDF in CodeIgniter在 CodeIgniter 中嵌入使用 DOCPDF 生成的 PDF 文档
【发布时间】:2016-02-20 20:34:26
【问题描述】:

我正在尝试转换设置一个可以获取 .docx 文档的 CodeIgniter 应用程序,并使用 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 标签中。非常感谢任何帮助!

提前谢谢!

【问题讨论】:

    标签: php html codeigniter pdf docx


    【解决方案1】:

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

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

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

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

    这是一个例子。

    $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 或其他内容记录到数据库表中,当该会话到期时,unlink() 创建的所有 PDF在那个会话下。

    【讨论】:

    • 感谢您的帮助。您是否知道可以直接嵌入 .docx 文件而无需先将其转换为 pdf 文件的方式?
    • 我不是 100% 肯定,但我敢猜测您可以使用相同的 元素,但 src 属性指向 docx 文件,而 type 属性反映了 docx mime类型。我在谷歌上快速搜索了一下,这可能是什么——尽管我持怀疑态度——它似乎是 type="application/vnd.openxmlformats-officedocument.wordprocessingml.document"
    • 再次感谢!最后一个快速问题,如果你不介意的话。在 object 标签的代码示例中,您的 data 属性等于 pdf 文件的位置,在描述我的第二个问题时,您说我应该将其加载为 src 属性。他们都做同样的事情吗?
    • src 属性只是服务器上文件的路径。所以是的,你可以有两个 元素,一个带有 PDF 文件的路径,一个带有 DOCX 文件的路径(显然,相应的 type 属性)。
    • 知道了。感谢您的帮助。
    猜你喜欢
    • 2014-05-12
    • 1970-01-01
    • 2011-06-29
    • 2011-02-14
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 2019-08-11
    相关资源
    最近更新 更多