Вместо этого:
$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()
во втором аргументе, что было бы хорошо, поскольку это вернет имя папки {минус} - имя файла. Но если они проверят 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. Таким образом, они могли обойти это внутри этого метода. Я понятия не имею, делают ли они это (может быть, я посмотрю источник и увижу). Я посмотрел {кратко} и, похоже, они вообще не проверяют.
Имеет смысл. Вот почему я сказал организовать его по мере того, как все становится яснее, чем легче читать код.
person
ArtisticPhoenix
schedule
04.03.2019
Pdf::getText($path)
.. все в документах - person Lawrence Cherone   schedule 04.03.2019$text = Pdf::getText ($name);
переменная$path
не определена. Но, похоже, самое время изменить этот$file->move(public_path().'/pdftotext/', $name);
на$file->move($path, $name);
и выше этого$path = public_path().'/pdftotext/';
, тогда вы можете все это почистить. - person ArtisticPhoenix   schedule 04.03.2019The command ""/usr/bin/pdftotext" "Invoice 56569.pdf" -" failed. Exit Code: 1(General error) Working directory:
- person Sarah Malik   schedule 04.03.2019echo Pdf::getText('book.pdf', '/custom/path/to/pdftotext');
- person Sarah Malik   schedule 04.03.2019$path
намного раньше, а затем использовать его вместо всех этих вызововpublic_path().'/pdftotext/'
, также есть разница с тем и$path = public_path('/pdftotext/'. $name)
. Таким образом, это очистит все это и сделает его намного приятнее для чтения. - person ArtisticPhoenix   schedule 04.03.2019