У меня есть вопрос.Возможно, это новичок, но на самом деле я не могу найти решение своей проблемы, и раньше я не работал с этой командой.Может быть, кто-то может дать мне подсказку.
Я использую команду php
proc_open
для запуска pdflatex.exe
для создания PDF-файла из tex
файла.Код выглядит следующим образом:
$descriptorspec = array(
0 => array("pipe", "r"),
1 => array("pipe", "w"),
2 => array("file", "D:/Freigabe/error.txt", "a")
);
$cwd = str_replace("\\", "/", __DIR__) .'/Tex/Working';
$env = null;
$this->execute = '"' .str_replace('/','\\',env('PDFLATEXENGINE', 'C:/Program Files (x86)/MiKTeX 2.9/miktex/bin/pdflatex.exe')) .'" -jobname="' .str_replace('.pdf','',$this->publicPdfFile) .'" -output-directory="' .str_replace("\\", "/", $this->pdfTargetPath) .'" "' .str_replace("\\", "/", str_replace(".tex","",$this->workingFilePath));
$process = proc_open('"' .$this->execute .'"', $descriptorspec, $pipes, $cwd, $env);
if (is_resource($process)) {
fwrite($pipes[0], '<?php print_r($_ENV); ?>');
fclose($pipes[0]);
echo stream_get_contents($pipes[1]);
fclose($pipes[1]);
$return_value = proc_close($process);
}
Один из примеров команды такой:
$this->execute = '"D:\Program Files\TeXLive\texlive\2019\bin\win32\pdflatex.exe" -jobname="Rechnung_000036-19" -output-directory="D:/Files/Company/Tool/app/Classes/Rechnung/LaTex/Output/" "D:/Files/Company/Tool/app/Classes/Rechnung/LaTex/Output/Rechnung_FUmtC1P7lknTzvDfstMM_000036-19"';
Это прекрасно работает, но сама команда выдает некоторый вывод при генерации файла PDF,С этим кодом выше вывод команды выводится на мою веб-страницу и выглядит так:
Я также знаю, почему это происходитраспечатаны.Это просто из-за этой строки кода:
fwrite($pipes[0], '<?php print_r($_ENV); ?>');
Но когда я закомментирую команду print_r()
, файл PDF больше не создается.Я проверил решение, чтобы подавить вывод командного окна.Я только нашел > /dev/null
, но это я тоже получаю не работать.
У кого-нибудь есть решение или подсказка для моей проблемы?Спасибо заранее!Если какая-либо информация отсутствует, пожалуйста, дайте мне знать.Я обновлю оригинальный пост тогда.