Как использовать pdftk (как ubuntu snap) из php? - PullRequest
0 голосов
/ 20 марта 2020

Коротко: Я пытаюсь сделать эту работу:

$blank_pdf_form = "blankform.pdf";
$cmd = "pdftk $blank_pdf_form fill_form - output -";

$descriptorspec = array(
   0 => array("pipe", "r"),
   1 => array("pipe", "w"),
   2 => array("pipe", "w")

);

$process = proc_open($cmd, $descriptorspec, $pipes);

if (is_resource($process)) {

    //row2xfdf is made-up function that turns HTML-form data to XFDF
    fwrite($pipes[0], raw2xfdf($_POST));
    fclose($pipes[0]);

    $pdf_content = stream_get_contents($pipes[1]);
    fclose($pipes[1]);

    $return_value = proc_close($process);

    header('Content-type: application/pdf');
    header('Content-Disposition: attachment; filename="output.pdf"');
    echo $pdf_content;
}

Счастливо украдено здесь: Как передать переменные как stdin в командную строку из PHP

Моя проблема

Не работает следующее сообщение:

Sorry, home directories outside of /home are not currently supported. 
See https://forum.snapcraft.io/t/11209 for details.

Мое понимание:

Я нахожусь на Ubuntu, pdftk предоставляется как оснастка, поэтому имеет очень ограниченный доступ к файловой системе. Запуск с php (пользователь www-data) ограничивает это еще больше.

Что я сделал / попробовал:

Первые ошибки были при запросе существования каталогов /var/www/snap/pdftk/... Я создал их все вручную, предоставив 777. Ничего не изменилось. Я создал папку tmp с 777 в /media и выполнил snap connect pdftk:removable-media :removable-media. php может получить доступ к файлам, когда они там есть. Но все та же ошибка с pdftk.

Есть идеи, как это исправить?

Где должен быть pdf для использования pdftk? Я думал об использовании нескольких каналов 1 для PDF и 1 (X) FDF бу не могу найти, можно ли это сделать или нет?

...