轉義可能是一個部分,另一個是調用命令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以外的文件。
還添加了正則表達式來替換comments/newline。
我打電話的腳本:php test.php
與GNU/Linux的Debian的8
CLI這將產生輸出:
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
1.''「'(couble quotes)中的代碼需要轉義或者使用''''(單引號)代替。 2. pdflatex需要一個文件或通過管道輸入,如'cat t.tex | pdflatex' 3.嘗試將輸出轉向另一個目錄,您可以使用'pdflatex'命令的'-output-directory'選項來寫入其他目錄。或給權寫在他非常相同的目錄 – vv01f
也考慮更新,如果可能,因爲你的版本已經超過一年已經 – vv01f
我試過單引號..still給出了相同的錯誤 – mira