mPDF SetSourceFile - импорт PDF из временного хранилища

Я пытаюсь импортировать файл PDF с помощью mPDF. PDF-файл отправлен из другого сервиса, и моей первоначальной идеей было использовать обертки. (желательно php://memory).

Какие ошибки я получаю:

Warning: filesize(): stat failed for php://memory in /var/www/scrm/modules/AOS_PDF_Templates/PDF_Lib/mpdfi/pdf_parser.php on line 181

mPDF error: Cannot open php://memory ! (кстати, этот печатается в браузере)

Я проверил PDF:

  • отображается в браузере
  • сохранить в файл и импортировать из него

Оба работают, так что PDF не проблема.

Я проверил содержимое php://memory, оно тоже верное. Вот пример кода:

//part of the code, $content is defined earlier (.pdf file content)
$memoryFile = 'php://memory';
$handle = fopen($memoryFile,'r+');
fwrite($handle,$content);
rewind($handle);

/* dump it to string, just to be sure, part of how i was checking that pdf got saved to $memoryFile
   even with this part removed still doesn't work, so no file issue here
$str=  fread($handle,strlen($content)); //str gets filled with expected data
rewind($handle); //rewind for use by mPDF
*/

$pdf = new mPDF;
$pdf->SetImportUse();
$pagecount = $pdf->SetSourceFile($memoryFile);

Решения, которые я имею в виду:

  • сохранить в обычный временный файл (я не хочу этого делать)
  • Есть ли способ для mPDF импортировать файл из строки? (гугл мне ничего не дал)

ОС: Ubuntu 18.04 WSL, PHP версии 7.2.31, mPDF версии 5.7.1


person matek997    schedule 15.06.2020    source источник


Ответы (1)


Обновите версию mPDF как минимум до 8.0.0.

Начиная с версии 8, mPDF использует обновленную базовую библиотеку FPDI 2, которая поддерживает импорт файлов из php://memory или вообще из любого потока.

person Finwe    schedule 15.06.2020