在 CodeIgniter 视图中的 <object> 标签中显示 PDF
Displaying a PDF in <object> tag in CodeIgniter view
最终,我想要做的是获取一个 .docx 文件,将其转换为 HTML,然后将 HTML 转换为 PDF 并将该 PDF 嵌入我的视图中。我想在不将 PDF 保存到文件的情况下完成这一切,而是立即在我的视图中显示它。
到目前为止,我已经能够将 .docx 转换为 HTML,然后将其转换为 pdf。但是,我现在陷入了如何在我的视图中显示该 pdf 字符串的问题。目前,我正在尝试将一个具有 headers 的 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 文件,并最终删除或取消链接该文件,但出于某些原因,这不是我想要的方向。任何想法或帮助表示赞赏!
谢谢!
尝试这种方式,创建一个新方法来生成 PDF,而不是使用与加载视图相同的方法。然后使用该方法作为对象标签的数据源。
例如:
生成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>
最终,我想要做的是获取一个 .docx 文件,将其转换为 HTML,然后将 HTML 转换为 PDF 并将该 PDF 嵌入我的视图中。我想在不将 PDF 保存到文件的情况下完成这一切,而是立即在我的视图中显示它。
到目前为止,我已经能够将 .docx 转换为 HTML,然后将其转换为 pdf。但是,我现在陷入了如何在我的视图中显示该 pdf 字符串的问题。目前,我正在尝试将一个具有 headers 的 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 文件,并最终删除或取消链接该文件,但出于某些原因,这不是我想要的方向。任何想法或帮助表示赞赏!
谢谢!
尝试这种方式,创建一个新方法来生成 PDF,而不是使用与加载视图相同的方法。然后使用该方法作为对象标签的数据源。
例如:
生成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>