Escape kann ein Teil sein, ein anderer ruft den Befehl pdflatex
; Ich umgangen (ersten) durch Schreiben der Datei vor und (zweiten) durch Kommentare und Newline auf der Variable so pdflatex
ersetzt hat kein Problem damit nicht mehr ...
<?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";
}
?>
es soll nicht die tex-Datei zu schreiben, egal, pdflatex schreibt neben dem gewünschten PDF auch Dateien.
auch hinzugefügt Regex zum Ersetzen von Kommentaren/Newline.
Ich nenne das Skript mit: php test.php
auf cli mit GNU/Linux Debian 8
dies erzeugt die Ausgabe:
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
und die PDF-Dateien arbeiten beide und haben die gleiche Dateigröße:
-rw-r--r-- 1 vv01f vv01f 3360 Mai 5 article.pdf
-rw-r--r-- 1 vv01f vv01f 3360 Mai 5 texfile.pdf
1. der Code in '" "' (couble zitieren) muss maskiert werden oder Sie verwenden stattdessen '' '' (einfache Anführungszeichen). 2. pdflatex erwartet entweder eine Datei oder eine Eingabe per Pipe wie 'cat t.tex | pdflatex' 3. Versuchen Sie, den Ausgang in ein anderes Verzeichnis zu lenken, in dem Sie die Berechtigung zum Schreiben mit der Option -output-directory für den Befehl 'pdflatex' haben. oder geben Sie Recht, auf er sehr gleichen Verzeichnis schreiben die – vv01f
auch in Betracht ziehen, wenn möglich zu aktualisieren, da Ihre Version mehr als ein Jahr alt bereits ist – vv01f
ich probierte einzelne Anführungsstriche..still gibt den gleichen Fehler – mira