为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

缥缈止盈 2021-11-18 10:08:10
我正在尝试制作一个网站,用户可以在其中制作 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>  
查看完整描述

1 回答

?
慕哥6287543

TA贡献1831条经验 获得超10个赞

首先,问题是浏览器不会以这种方式将 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 所在的位置。下面的这个答案会打开一个新窗口,window.open但您可以简单地将该window.open行替换document.getElementById('pdf_viewer').src为使用新URL更新的行。

3) 返回 Base64 并使用冗长的数据 URL。


查看完整回答
反对 回复 2021-11-18
  • 1 回答
  • 0 关注
  • 119 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信