首页 > 解决方案 > mpdf 合并文件 - 文件已加密

问题描述

我正在尝试使用 MPDF 将多个 pdf 合并为一个

   function create( $paths ){

        $pdf = new \Mpdf\Mpdf();
        $pdf->enableImports = true;

        foreach( $paths as $key => $file ){
            $pdf->SetImportUse();

            try{
                $pagecount = $pdf->SetSourceFile( $file['path'] );

                for ( $i=1; $i <= ( $pagecount ); $i++ ) {
                    $pdf->AddPage();
                    $import_page = $pdf->ImportPage( $i );
                    $pdf->UseTemplate( $import_page );
                }
            }catch( Exception $e ){
                $paths[$key] = $e->getMessage();
            }
        }
    }

问题是我得到“文件已加密!” 关于“setsourcefile()”是否可以使用 MPDF 克服这个问题?

是否有另一种方法可以将多个加密的 PDF 文件合并为一个?

谢谢

标签: phptcpdfmpdf

解决方案


我最终使用 Imagick 到处走走,我将所有 PDF 转换为图像

foreach( $paths as $key => $file ){
     $im->setResolution( 300, 300);
     $im->readimage( $file['path'] );
     $im->setImageFormat('jpeg');

     //create the images
     $im->writeImages( $pdf_tmp_path.$pdf_basename.'.jpeg' , true );
     $im->clear();

     $counter++;
    }

    $im->destroy();
}

然后使用我将所有图像合并到一个PDF中

$dir = new DirectoryIterator( $tmpdir );
$images = array();

foreach ( $dir as $fileinfo ) {
    $filename = $fileinfo->getFilename();

    if( strlen( $filename ) > 10 ){
        $images[] = $tmpdir.$filename;
    }
}

//create the pdf
$pdf = new Imagick( $images );
$pdf->setImageFormat('pdf');
$pdf->setCompression(Imagick::COMPRESSION_JPEG);
$pdf->setCompressionQuality(100);
$pdf->stripImage();

$pdf->writeImages( $this->combined_pdf_path , true);

推荐阅读