php - 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 文件合并为一个?
谢谢
解决方案
我最终使用 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);
推荐阅读
- java - 如何为所有 Gradle 子模块启用 --enable-preview 以便它也保留在 IntelliJ IDEA 中?
- apache - CGI 脚本和 shell 中的不同 @INC
- python - Anaconda Navigator 无法创建新环境
- java - 使用 JFrame 创建颜色网格?
- sas - SAS - 在多个 BY 组中查找观察数并删除特定观察
- git - 在 gitflow 模型中创建 hotfix 分支或 feature 分支
- r - 如果组中至少有一行符合 R 中的条件,如何保留整个组?
- sql-server - SSIS——存档平面文件任务创建重复文件
- python - 如何使用嵌套循环为函数设置动画?
- java - 扩展以自身为成员的类