Как передать код LaTeX через переменную в pdflatex в PHP?

Я попробовал это:
(.php файл)

<?php
$texscript = "\documentclass[12pt,a4paper]{article}
\usepackage{helvet}
\usepackage{times}
\usepackage{multido}
\usepackage{fancyhdr}
\usepackage[hmargin=.8cm,vmargin=1.5cm,nohead,nofoot]{geometry}
\renewcommand{\familydefault}{\sfdefault}
\begin{document}

\fancyhf{} % clear all header and footer fields
\renewcommand{\headrulewidth}{0pt}
\pagestyle{fancy}
%\rhead{{\large\bfseries\thepage}}
\rhead{{\fbox{\large\bfseries\thepage}}}
\setcounter{page}{1}
\multido{}{1383}{\vphantom{x}\newpage}
\end{document}
";

$pdflatex = shell_exec("echo \$PATH > myenv; pdflatex ".$texscript." ");
?>

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

pdflatex: это pdfTeX, версия 3.14159265-2.6-1.40.16 (TeX Live 2015 / Debian) (предварительно загруженный формат = pdflatex), ограничено \ write18 включено. **! Конец файла на терминале …

Зачем?

Является ли приведенный выше код правильным способом написания LaTeX в переменных PHP и передачи его pdflatex Команда ??
Если нет, то предложите поправки!
Я не хочу звонить внешнему .tex файл, но написать код LaTeX в самом файле PHP и запустить оттуда.

0

Решение

Побег может быть одна часть, другая вызывает команду pdflatex; Я обошел (во-первых), написав файл до и (во-вторых), заменив комментарии и новую строку на переменную так pdflatex больше не имеет проблем с этим…

<?php

error_reporting(E_ALL);
ini_set('error_reporting', E_ALL);

$texscript = '\documentclass[12pt,a4paper]{article}
\usepackage{helvet}
\usepackage{times}
\usepackage{multido}
\usepackage{fancyhdr}
\usepackage[hmargin=.8cm,vmargin=1.5cm,nohead,nofoot]{geometry}
\renewcommand{\familydefault}{\sfdefault}
\begin{document}

\fancyhf{} % clear all header and footer fields
\renewcommand{\headrulewidth}{0pt}
\pagestyle{fancy}
%\rhead{{\large\bfseries\thepage}}
\rhead{{\fbox{\large\bfseries\thepage}}}
\setcounter{page}{1}
\multido{}{1383}{\vphantom{x}\newpage}
\end{document}
';

//write code to file
$fn="texfile.tex";
$myfile = fopen($fn, "w");
fwrite($myfile, $texscript);
fclose($myfile);

//then execute pdflatex with parameter
//didnt need
//echo $PATH > myenv;
$pdflatex = shell_exec('pdflatex ' .$fn .'' );

//var_dump( $pdflatex );
//test for success
if (!file_exists("texfile.pdf")){
print_r( file_get_contents("texfile.log") );
} else {
echo "PDF crated from file\n";
}

//trying same without file
//removed comments and newlines
$texscript = preg_replace('/[ \t]*\%.*[ \t]*[\r\n]+/', '', $texscript);
$texscript = preg_replace('/[\r\n]+/', '', $texscript);
//ahve a look on the variable
//var_dump($texscript);

$pdflatex = shell_exec('pdflatex "' .$texscript.'"' );
if (!file_exists("article.pdf")){
print_r(  file_get_contents("article.log") );
} else {
echo "PDF created from String\n";
}

?>

не должно иметь значения писать tex-файл, так как pdflatex будет записывать файлы помимо желаемого PDF.

также добавлено регулярное выражение для замены комментариев / новой строки.

Я называю скрипт с: php test.php на кли с GNU / Linux Debian 8

это производит вывод:

PDF crated from file
string(405) "\documentclass[12pt,a4paper]{article}\usepackage{helvet}\usepackage{times}\usepackage{multido}\usepackage{fancyhdr}\usepackage[hmargin=.8cm,vmargin=1.5cm,nohead,nofoot]{geometry}\renewcommand{\familydefault}{\sfdefault}\begin{document}\fancyhf{}\renewcommand{\headrulewidth}{0pt}\pagestyle{fancy}\rhead{{\fbox{\large\bfseries\thepage}}}\setcounter{page}{1}\multido{}{1}{\vphantom{x}\newpage}\end{document}"PDF created from String

и файлы PDF работают и имеют одинаковый размер файла:

-rw-r--r-- 1 vv01f vv01f 3360 Mai  5 article.pdf
-rw-r--r-- 1 vv01f vv01f 3360 Mai  5 texfile.pdf
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]