【问题标题】:Password Protect & Disable Editing PDF in PHP v7.0.27PHP v7.0.27 中的密码保护和禁用编辑 PDF
【发布时间】:2020-06-28 21:53:16
【问题描述】:

我使用的是 CentOS7,我的后端是 PHP v7.0.27 和 Laravel 框架 v4.2。我正在使用 Base64 数据来保存 PDF(解码 base64 后)。我想密码保护和禁用 PDF 的编辑。我已经寻找了实现这一目标的方法,但到目前为止还没有运气,我知道这可以通过 Dompdf 实现,但是需要 HTML 数据来呈现 PDF。请让我知道这是否可能。谢谢!

下面是我用来保存 PDF 的代码

private function decodeBase64ToPdf($fileToReadFrom, $fileToSaveTo)
{
    $pdf_base64_handler = fopen($fileToReadFrom,'r');   //Get encoded file content from txt file
    $pdf_content = fread($pdf_base64_handler, filesize($fileToReadFrom));
    fclose($pdf_base64_handler);

    $pdf_decoded = base64_decode($pdf_content);    //Decode pdf content

    $file = fopen($fileToSaveTo,'w');  //Write decoded data to pdf file
    fwrite($file, $pdf_decoded);
    if(fclose($file))   //Close output file
    {
        return true;
    }
    return false;
}

【问题讨论】:

    标签: laravel pdf-generation centos7 php-7


    【解决方案1】:

    在测试了很多不同的东西之后。我通过安装 FPDI 和 FPDF 解决了这个问题。 链接: FPDFFPDI

    private function decodeBase64ToPdf($fileToReadFrom, $fileToSaveTo)
    {
        $pdf_base64_handler = fopen($fileToReadFrom,'r');   //Get encoded file content from txt file
        $pdf_content = fread($pdf_base64_handler, filesize($fileToReadFrom));
        fclose($pdf_base64_handler);
    
        $pdf_decoded = base64_decode($pdf_content);    //Decode pdf content
    
        $file = fopen($fileToSaveTo,'w');  //Write decoded data to pdf file
        fwrite($file, $pdf_decoded);
        if(fclose($file))   //Close output file
        {
            $this->passwordProtect($fileToSaveTo);
            return true;
        }
        return false;
    }
    
    private function passwordProtect($pdfPath)
    {
        $passPdf = new FpdiProtection();
    
        //calculate the number of pages from the original document
        $pagecount = $passPdf->setSourceFile($pdfPath);
    
        // copy all pages from the old unprotected pdf in the new one
        for ($loop = 1; $loop <= $pagecount; $loop++)
        {
            $tplidx = $passPdf->importPage($loop);
            $passPdf->addPage();
            $passPdf->useTemplate($tplidx);
        }
    
        $passPdf->SetProtection(['print' => 4, 'copy' => 16], "userpass", "ownerpass");
        $passPdf->Output($pdfPath, 'F');
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-19
      • 2020-12-21
      • 2013-01-25
      • 1970-01-01
      • 2011-12-23
      • 2016-09-30
      • 1970-01-01
      相关资源
      最近更新 更多