要从Laravel的PDF文件中获取值(id,purchaseOrderNumber和数量)?

时间:2019-03-04 04:21:14

标签: php laravel pdftotext spatie

我正在尝试从上传的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文件,但不会获取任何值。

请告诉我如何解决此问题。谢谢您的时间。

1 个答案:

答案 0 :(得分:1)

代替此:

   $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。因此,他们可以在该方法中解决此问题。我不知道他们是否这样做(也许我会寻找资料来源,看看)。我{简短地}看了看,看来他们根本没有检查。

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