打开自动创建的 pdf php javascript 时出现奇怪的语法

我正在尝试制作一个网站,用户可以在其中制作 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');  

?>

<!DOCTYPE html>  

<html>  

    <head> 

        <script>

            function loadDoc() {

                var xhttp = new XMLHttpRequest();

                xhttp.onreadystatechange = function() {

                    if (this.readyState == 4 && this.status == 200) {

                      document.getElementById("pdf_viewer").srcdoc = this.responseText;

                    }

                };

                xhttp.open("GET", "/test2.php", true);

                xhttp.send();

            }

        </script>

      </head>  



缥缈止盈
浏览 120回答 1
1回答

慕哥6287543

首先,问题是浏览器不会以这种方式将 PDF 数据解释为 PDF。srcdoc被视为原始 HTML。有几种不同的方法可以实现“点击生成”功能:1) 您可以完全删除 AJAX,而仅使用 HTML 表单标记来完成此操作。使用target表单元素上的属性来定位您的 PDF 查看器 iframe。&nbsp; <body>&nbsp; &nbsp; <!-- Set up our form to target the PDF viewer iframe.-->&nbsp; &nbsp; <!-- Note: This will work with both GET and POST methods -->&nbsp; &nbsp; <form action="/test2.php" method="get" target="pdf_viewer">&nbsp; &nbsp; &nbsp; <input type="text" name="titel">&nbsp; &nbsp; &nbsp; <button height="10px" width="30px" type="submit" name="create_pdf_btn" value="create worksheet">create worksheet</button>&nbsp; &nbsp; </form>&nbsp; &nbsp; <!-- Initially, frame is blank, will update to PDF generation URL on form submit.&nbsp;&nbsp; I created a special empty HTML file for this purpose. -->&nbsp; &nbsp; <iframe name="pdf_viewer" id="pdf_viewer" src="blank.html"></iframe>&nbsp; </body>然后,test2.php您只需按照原样生成内联 PDF。2) 在您的服务器上生成文件并使用 AJAX 响应传递保存的 PDF 所在的位置。下面的这个答案会打开一个新窗口,window.open但您可以简单地将该window.open行替换document.getElementById('pdf_viewer').src为使用新URL更新的行。3) 返回 Base64 并使用冗长的数据 URL。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript