首页 > 解决方案 > 从 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 文件,但它不会获取任何值。

请告诉我如何解决这个问题。谢谢你的时间。

标签: phplaravelpdftotext

解决方案


而不是这个:

   $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。所以他们可以在那个方法中解决这个问题。我不知道他们是否这样做(也许我会查看源代码并查看)。我{简要地}看了看,他们似乎根本没有检查它。

说得通。这就是为什么我说要组织它,因为事情变得越清晰越容易阅读代码。


推荐阅读