打开自动创建的pdf php javascript时获取奇怪的语法

打开自动创建的pdf php javascript时获取奇怪的语法,javascript,php,tcpdf,Javascript,Php,Tcpdf,我正在尝试建立一个网站,用户可以制作pdf。当我按下“创建工作表”时,我想在按钮旁边直接显示pdf。我试着用javascript和php来实现它,但我在iframe中得到了一个奇怪的语法,而不是实际的pdf。有人知道这样做的正确方法吗 <?php $titel = "TITLE"; require_once('tcpdf/tcpdf.php'); $obj_pdf = new TCPDF('P', PDF_UNIT, PDF_PAGE_FORMA

我正在尝试建立一个网站,用户可以制作pdf。当我按下“创建工作表”时,我想在按钮旁边直接显示pdf。我试着用javascript和php来实现它,但我在iframe中得到了一个奇怪的语法,而不是实际的pdf。有人知道这样做的正确方法吗

<?php    
    $titel = "TITLE";
      require_once('tcpdf/tcpdf.php');  
      $obj_pdf = new TCPDF('P', PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);  
      $obj_pdf->SetCreator(PDF_CREATOR);  
      $obj_pdf->SetTitle("educationworksheet.com");  
      $obj_pdf->SetHeaderData('', '', PDF_HEADER_TITLE, PDF_HEADER_STRING);  
      $obj_pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));  
      $obj_pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));  
      $obj_pdf->SetDefaultMonospacedFont('helvetica');  
      $obj_pdf->SetFooterMargin(PDF_MARGIN_FOOTER);  
      $obj_pdf->SetMargins(PDF_MARGIN_LEFT, '5', PDF_MARGIN_RIGHT);  
      $obj_pdf->setPrintHeader(false);  
      $obj_pdf->setPrintFooter(false);  
      $obj_pdf->SetAutoPageBreak(TRUE, 10);  
      $obj_pdf->SetFont('helvetica', '', 12);  
      $obj_pdf->AddPage();  
      $content .= '  
      <h3 align="center">TITLE</h3><br /><br />
      <h4 align="left">This is what we are gonne do '.$titel.'</h4><br /><br /><h4 align = "left">Name:____________________________</h4>
      ';      
      $obj_pdf->writeHTML($content); 
      $obj_pdf->Output('sample.pdf', 'I');  
?>


函数loadDoc(){
var xhttp=newXMLHttpRequest();
xhttp.onreadystatechange=函数(){
if(this.readyState==4&&this.status==200){
document.getElementById(“pdf_查看器”).srcdoc=this.responseText;
}
};
open(“GET”,“/test2.php”,true);
xhttp.send();
}
创建工作表

首先,问题是浏览器不会以这种方式将PDF数据解释为PDF<代码>srcdoc被视为原始HTML

有两种不同的方法可以实现“点击生成”功能:

1) 您可以完全放弃AJAX,只需使用HTML表单标记即可完成此任务。使用表单元素上的
target
属性以PDF查看器iframe为目标

  <body>
    <!-- Set up our form to target the PDF viewer iframe.-->
    <!-- Note: This will work with both GET and POST methods -->
    <form action="/test2.php" method="get" target="pdf_viewer">
      <input type="text" name="titel">
      <button height="10px" width="30px" type="submit" name="create_pdf_btn" value="create worksheet">create worksheet</button>
    </form>
    <!-- Initially, frame is blank, will update to PDF generation URL on form submit. 
  I created a special empty HTML file for this purpose. -->
    <iframe name="pdf_viewer" id="pdf_viewer" src="blank.html"></iframe>
  </body>

创建工作表
然后,在
test2.php
中,您只需按原样内联生成PDF即可

2) 在服务器上生成文件,并使用AJAX响应传递保存的PDF所在的位置。下面的回答将打开一个带有
窗口的新窗口。打开
但您可以简单地替换该
窗口。打开
行,使用新URL更新
document.getElementById('pdf_viewer')。src

3) 返回Base64并使用冗长的数据URL。有关该示例,请参见此处:


可能重复—这不是重复,我希望通过单击按钮进行ik,而不是页面加载。他那样做是不可能的。
  <body>
    <!-- Set up our form to target the PDF viewer iframe.-->
    <!-- Note: This will work with both GET and POST methods -->
    <form action="/test2.php" method="get" target="pdf_viewer">
      <input type="text" name="titel">
      <button height="10px" width="30px" type="submit" name="create_pdf_btn" value="create worksheet">create worksheet</button>
    </form>
    <!-- Initially, frame is blank, will update to PDF generation URL on form submit. 
  I created a special empty HTML file for this purpose. -->
    <iframe name="pdf_viewer" id="pdf_viewer" src="blank.html"></iframe>
  </body>