使用Dompdf与Ilovepdf合并生成PDF和用户上传PDF失败如何解决
错误原因
$dompdf->stream()方法的作用是直接向浏览器输出PDF流触发下载,不会返回有效的PDF文件内容或路径,无法作为合并素材使用- 代码中后续执行
$arquivo = $this->convertHello()直接覆盖了之前的变量,且该返回值不符合IlovepdfaddFile方法要求的本地文件路径参数格式
修正方案
你需要先将Dompdf生成的PDF内容写入本地临时文件,再将临时文件路径传入Ilovepdf的添加文件方法即可。修正后的代码参考如下:
$dompdf = new Dompdf(); $dompdf->loadHtml('hello world'); // 设置纸张尺寸和方向 $dompdf->setPaper('A4', 'landscape'); // 渲染HTML为PDF $dompdf->render(); // 获取PDF二进制内容,而非直接输出到浏览器 $pdfContent = $dompdf->output(); // 生成临时文件路径,存到本地 $tempPdfPath = sys_get_temp_dir() . '/dompdf_generated_' . uniqid() . '.pdf'; file_put_contents($tempPdfPath, $pdfContent); $ilovepdf = new Ilovepdf('iLovePdfKey', 'iLovePdfKey'); // 创建合并任务 $myTaskMerge = $ilovepdf->newTask('merge'); // 添加用户上传的文件和生成的临时PDF文件 $file1 = $myTaskMerge->addFile('path to the file that the user upload'); $file2 = $myTaskMerge->addFile($tempPdfPath); // 执行合并 $myTaskMerge->execute(); // 下载合并后的文件 $myTaskMerge->download(); // 可选:下载完成后删除临时文件释放空间 unlink($tempPdfPath);
内容的提问来源于stack exchange,提问作者Vanessa Lemos
相关产品推荐
相关产品推荐

