php - 从 Laravel 的 PDF 文件中获取值(id、purchaseOrderNumber 和金额)?
问题描述
我正在尝试从上传的 pdf 文件中获取值。所以当文件上传成功后,我想从这个PDF文件中具体获取一些数据,ID、PurchaseOrderNo和Amount。
到目前为止,我已经接近spatie/pdf-to-text并且我能够上传和打开 PDF 文件,但我无法并且我不知道如何获取所需的数据并将其显示在我的 Blade View 上。
$name=$file->getClientOriginalName();
$file->move(public_path().'/pdftotext/', $name);
$data[] = $name;
$attachments = public_path().'/pdftotext/'. $name;
$path = public_path('/pdftotext/'. $name);
$text = Pdf::getText ('Invoice 56569.pdf', $path);
上面的代码将上传 pdf 文件并将其存储在 public/pdftotext 文件夹中,上传后它将打开上传的 pdf 文件,但它不会获取任何值。
请告诉我如何解决这个问题。谢谢你的时间。
解决方案
而不是这个:
$name=$file->getClientOriginalName();
$file->move(public_path().'/pdftotext/', $name);
$data[] = $name;
$attachments = public_path().'/pdftotext/'. $name;
$path = public_path('/pdftotext/'. $name);
$text = Pdf::getText ('Invoice 56569.pdf', $path);
这样做更有意义:
$name = $file->getClientOriginalName();
$path = public_path('/pdftotext/');
$file->move($path, $name);
$text = Pdf::getText ($name, $path);
// -- these have no bearing on this code so do them a bit later (here I will just ignore them)
//$data[] = $name;
//$attachments = $path.$name;
虽然这可能无法“解决”您的问题,但在评论中发布的内容太多了,它会使其更清洁、更少错误且阅读更愉快。
我不是一个很有条理的人,但是代码缺乏组织会给你带来比其他大多数问题更多的问题。
我在上面发布的代码中最重要的是对此进行了更改:
$path = public_path('/pdftotext/');
而不是您最初拥有的(带有文件名)
$path = public_path('/pdftotext/'. $name);
相反,这是否是“问题”取决于他们如何实现Pdf::getText
他们可以dirname()
在第二个参数上使用这会很好,因为这将返回文件夹名称 {minus} - 文件名。但是如果他们检查is_dir()
它就会失败。
在移动它之后,我清楚地知道它是如何使用的。
$path = public_path('/pdftotext/'.$name);
$file->move($path, $name); ///file->move(pdftotext/book.pdf, book.pdf) etc...
这对我来说似乎不正确。此外,这将使您的电话Pdf::getText
成为这个(例如)
echo Pdf::getText('book.pdf', '/custom/path/to/pdftotext/book.pdf');
当你可能想要的是这样的:
echo Pdf::getText('book.pdf', '/custom/path/to/pdftotext/');
这就是为什么我在上面说这取决于它们如何实现Pdf::getText
,因为有办法判断路径是 DIR 还是 FILE。所以他们可以在那个方法中解决这个问题。我不知道他们是否这样做(也许我会查看源代码并查看)。我{简要地}看了看,他们似乎根本没有检查它。
说得通。这就是为什么我说要组织它,因为事情变得越清晰越容易阅读代码。
推荐阅读
- ios - 无法安装 Apple Enterprise 应用程序
- r - 使用Shell从VBA内部执行R脚本不起作用
- tabulator - 如何在制表器中向嵌套树数据动态添加行?
- microsoft-cognitive - 使用 Microsoft 自定义翻译(免费层),我们可以构建自定义模型,但我们可以测试模型吗?
- java - Spring Security 不允许通过 https 访问
- sql - 如何让这个结果在列中显示
- python - Matplotlib 3d plot:在 2 个表面上获取单个颜色图
- tapestry - 在 Apache Tapestry 中从旧 URL 重定向到新 URL
- javascript - 在javascript中的数组内过滤对象内的数组
- python - 带有 upsert = true 的 Mongodb replace_one() 引发重复键错误