在 CodeIgniter 中嵌入使用 DOCPDF 生成的 PDF 文档
Embedding PDF documents generated with DOCPDF in CodeIgniter
我正在尝试转换设置一个可以获取 .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文件放到那里的嵌入标签中。非常感谢任何帮助!
提前致谢!
我认为你有两个问题。首先,据我所知,您应该使用的元素是 <object>
元素,而不是 <embed>
元素。
<object data="my-pdf-file-here.pdf" type="application/pdf" width="100%" height="100%">
PDF Plugin Not Available
</object>
仅供参考,元素中的文本仅在浏览器无法显示 PDF 文件时显示。
您的第二个问题是您确实需要保存 PDF,然后将其作为 <object>
元素的 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 或其他内容一起记录到数据库 table 以及该会话的时间过期,unlink()
在该会话下创建的所有 PDF。
我正在尝试转换设置一个可以获取 .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文件放到那里的嵌入标签中。非常感谢任何帮助!
提前致谢!
我认为你有两个问题。首先,据我所知,您应该使用的元素是 <object>
元素,而不是 <embed>
元素。
<object data="my-pdf-file-here.pdf" type="application/pdf" width="100%" height="100%">
PDF Plugin Not Available
</object>
仅供参考,元素中的文本仅在浏览器无法显示 PDF 文件时显示。
您的第二个问题是您确实需要保存 PDF,然后将其作为 <object>
元素的 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 或其他内容一起记录到数据库 table 以及该会话的时间过期,unlink()
在该会话下创建的所有 PDF。