【问题标题】:FPDF - password protected pdf not downloadingFPDF - 受密码保护的 pdf 无法下载
【发布时间】:2021-11-25 14:45:40
【问题描述】:

我正在尝试使用我的 php 脚本生成受密码保护的 pdf。这是我的代码:

JS

 $.ajax({
       url: 'backend.php',
       type: 'POST',
       data:   {"input": "generate_pdf",
                "password": document.getElementById("password").value},
       success:function(response){
             alert(response);
       },
       complete:function(){

       }
    });

PHP

<?php
    if(isset($_POST["input"])){
         if($_POST["input"] == "sign in"){
            ob_start();
            require('FPDF_protection.php');
            $pdf = new FPDF_Protection();
            $pdf->SetProtection(array('print'), $_POST["password"]);
            $pdf->AddPage();
            $pdf->SetFont('Arial');
            $pdf->Write(10,"Hello");
            $pdf->Output('D',"Recovery_code.pdf");
            ob_end_flush(); 
           }
         }
?>

但是,当我运行代码时,会弹出一个警报,显示如下:

%PDF-1.3 3 0 obj > endobj 4 0 obj > 溪流 Fҧ�J�1�v"I�E���2��vE�*��q�6/~=�Y�d@ྒྷ����-������̾�M>~u ��

endobj 5 0 obj > 流 �r⹧����[�gFE��5'��Ά'oYt5��5hb%a������� Fc�2�g����d���u��Ɉ[��u�^$,����x�����|��ḣ���n0X�9X�0J8OG���6(���c[��E�#�R�m�ۮ ��8w�-��~��n� ��ؿ��XϻG��^��t�8BF����������E������֖�H �7T^�~u�A�{:�y>�csG?�xo�;��q��[J�_W)�"j���,O�7n\9�olN�8n

我不明白,为什么 pdf 没有下载。请帮帮我。

【问题讨论】:

  • 我已经更新了回复。
  • 不要使用 AJAX 下载 PDF。

标签: javascript php fpdf


【解决方案1】:

更新;我已经放弃了 jQuery 并改用了 XMLHttpRequest

var req = new XMLHttpRequest();
var params = "input=generate_pdf&password=" + document.getElementById("password").value;
req.open("POST", "backend.php", true);
req.responseType = "blob";
req.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
req.onreadystatechange = function ()
 {
  if (req.readyState === 4 && req.status === 200)
   {
    var blob=new Blob([req.response]);
    var link=document.createElement('a');
    link.href=window.URL.createObjectURL(blob);
    link.download="your_file_name_here.pdf";
    link.click();
   }
 };
req.send(params);

这应该会强制下载文件。

工作示例

我为演示更改了一些代码,但概念保持不变,这里: https://jsfiddle.net/ntmwks9q/

【讨论】:

  • 现在,虽然 pdf 正在下载,但当我打开它时显示 Failed to load PDF document
  • 用 jQuery 似乎不可能,我已经用 XMLHttpRequest 发布了一个解决方案
  • 我想你的意思是写一个答案而不是评论?
  • @Olivier 沉默是金
猜你喜欢
  • 1970-01-01
  • 2011-12-23
  • 1970-01-01
  • 2018-07-23
  • 2021-09-28
  • 2010-09-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多