Windows系统下使用Spatie Pdf-to-text包提示找不到库路径问题求助
Spatie pdf-to-text 执行失败问题解决方案
错误核心原因
- 你对Spatie pdf-to-text包的依赖逻辑理解有误:该PHP包本身不包含
pdftotext可执行程序,只是对系统级Poppler工具集中的pdftotext二进制文件的封装,你传入构造函数的C:\CV-Test\blog\vendor\spatie\pdf-to-text是PHP包的源码目录,不是可执行程序路径,因此系统无法识别为可执行命令。
修复步骤
- 安装Poppler工具集
Windows环境下直接下载Poppler预编译版本,解压后找到bin目录下的pdftotext.exe文件,记录完整路径,比如你解压到C:\tools\poppler\bin\pdftotext.exe就用这个路径。 - 修正构造函数传参
把Pdf类实例化时传入的路径替换为你实际的pdftotext.exe完整路径,修正后的代码如下:
public function TextFromPdf(Request $pdfFile) { if (isset($pdfFile)) { $file = $pdfFile->file('pdfFile'); $fileName = 'PDF File '.time() . '-' . $file->getClientOriginalName(); $file->storeAs('',$fileName); $filePath = Storage::disk('local')->path($fileName); // 这里替换成你实际的pdftotext.exe完整路径 $text = (new Pdf ('C:\tools\poppler\bin\pdftotext.exe')) ->setPdf($filePath) ->text(); return view('CV_test.pdf', compact('text')); } }
- 可选优化:配置环境变量
如果你不想每次都传路径,可以把Poppler的bin目录路径加到Windows系统的PATH环境变量中,之后直接用new Pdf()实例化即可,不需要传路径参数。
额外注意事项
- 确保PHP运行身份对
pdftotext.exe有执行权限,对PDF文件的存储目录有读写权限 - 如果你是Linux/macOS环境,直接通过包管理器安装poppler-utils即可,不需要手动指定路径(默认会加入系统PATH)
内容的提问来源于stack exchange,提问作者Rabik
相关产品推荐
相关产品推荐

