Javascript 使用TCPDF保存PDF时没有输出
我已在服务器中安装了tcpdf。我已经检查了文件的存在。在javascript函数中,我通过ajax调用print.phpJavascript 使用TCPDF保存PDF时没有输出,javascript,php,ajax,tcpdf,Javascript,Php,Ajax,Tcpdf,我已在服务器中安装了tcpdf。我已经检查了文件的存在。在javascript函数中,我通过ajax调用print.php onclick = "savepdf();" javascript功能(在启动ajax之后)是: 这是print.php,我从它的股票示例中复制了它 <?php header("Content-Type: application/octet-stream"); require_once('/tcpdf/tcpdf.php'); $text
onclick = "savepdf();"
javascript功能(在启动ajax之后)是:
这是print.php,我从它的股票示例中复制了它
<?php
header("Content-Type: application/octet-stream");
require_once('/tcpdf/tcpdf.php');
$text = $_POST['content'];
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
$pdf->SetCreator(PDF_CREATOR);
$pdf->SetAuthor('SOMEONE');
$pdf->SetTitle('Report');
$pdf->SetSubject('Report');
$pdf->setPrintHeader(false);
$pdf->setPrintFooter(false);
$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
$pdf->setFontSubsetting(true);
$pdf->SetFont('dejavusans', '', 10, '', true);
$pdf->AddPage();
$html = $text;
$pdf->writeHTML($html, true, false, true, false, '');
$pdf->Output($_SERVER['DOCUMENT_ROOT'] . '/temp/output.pdf', 'F');
$file = $_SERVER['DOCUMENT_ROOT'] . '/temp/output.pdf';
header('Content-Disposition: attachment; filename="'.$file.'"');
header('Content-Length: ' . filesize($file));
header("Cache-control: private"); //use this to open files directly
readfile($file);
?>
该文件以物理方式保存在服务器上,但不下载。如何排除故障?您不能通过AJAX请求强制用户下载文件。您需要将浏览器重定向到生成的文件(如果不是私有文件),或者重定向到将输出该文件的php脚本。请参见此处的讨论:
您不能通过AJAX请求强制用户下载文件。您需要将浏览器重定向到生成的文件(如果不是私有文件),或者重定向到将输出该文件的php脚本。请参见此处的讨论:
在没有ajax的情况下调用print.pdf是否有效?你在哪里创建你的
$pdf
对象?我最初没有粘贴那一行,而是编辑了它。是的,直接调用时会创建PDF,但没有提交的文本。您可以尝试setRequestHeader('Content-Type','application/PDF')
或setRequestHeader('Content-Type','application/force-download')
?在没有ajax的情况下调用print.PDF时,它能工作吗?你在哪里创建你的$pdf
对象?我最初没有粘贴那一行,而是编辑了它。是的,直接调用时会创建PDF,但没有提交的文本。您可以尝试setRequestHeader('Content-Type','application/PDF')
或setRequestHeader('Content-Type','application/force download')
?这是一个有缺陷的概念。我放弃了。取而代之的是,我制作了一个表单,它成功地提交了内容并生成了PDF。这是一个有缺陷的概念。我放弃了。相反,我制作了一个表单,它提交了内容并成功生成了PDF。
<?php
header("Content-Type: application/octet-stream");
require_once('/tcpdf/tcpdf.php');
$text = $_POST['content'];
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
$pdf->SetCreator(PDF_CREATOR);
$pdf->SetAuthor('SOMEONE');
$pdf->SetTitle('Report');
$pdf->SetSubject('Report');
$pdf->setPrintHeader(false);
$pdf->setPrintFooter(false);
$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
$pdf->setFontSubsetting(true);
$pdf->SetFont('dejavusans', '', 10, '', true);
$pdf->AddPage();
$html = $text;
$pdf->writeHTML($html, true, false, true, false, '');
$pdf->Output($_SERVER['DOCUMENT_ROOT'] . '/temp/output.pdf', 'F');
$file = $_SERVER['DOCUMENT_ROOT'] . '/temp/output.pdf';
header('Content-Disposition: attachment; filename="'.$file.'"');
header('Content-Length: ' . filesize($file));
header("Cache-control: private"); //use this to open files directly
readfile($file);
?>