使用 pdflatex.exe 在 C# 中将 TeX 转换为 PDF

使用 pdflatex.exe 在 C# 中将 TeX 转换为 PDF

我有我的 TeX 文件(仅firstExample.tex在我的文件夹内)文档,我想将其转换为 PDF 并在应用程序中显示它。

\documentclass[11pt]{article}
\begin{document}
this is only a test
$$(x+1)$$
\end{document}

我这样做:

 string filename = @"C:\inetpub\wwwroot\MyApp\Application\Temp\firstExample.tex";
                Process p1 = new Process();
                p1.StartInfo.FileName = @"C:\Program Files\MiKTeX 2.9\miktex\bin\x64\pdflatex.exe";
                p1.StartInfo.Arguments = filename;
                p1.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
                p1.StartInfo.RedirectStandardOutput = true;
                p1.StartInfo.UseShellExecute = false;

                p1.Start();
                var output = p1.StandardOutput.ReadToEnd();
                p1.WaitForExit();

但输出返回:

"This is pdfTeX, Version 3.1415926-2.4-1.40.13 (MiKTeX 2.9 64-bit)
entering extended mode !
I can't write on file `firstExample.log'
Please type another transcript file name: "

而不是预期的 PDF

答案1

该答案已经过测试并且按预期工作。

步骤 1:创建批处理文件

为了避免重新编译 C# 源代码以与要使用的 (La)TeX 编译器同步,创建批处理文件会很方便。批处理文件在后台执行 (La)TeX 编译器。将批处理文件保存在任何位置,并将 PATH 系统变量设置为批处理位置。但为了简单起见,您可以将其保存在 LaTeX 输入文件所在的目录中。

最简单的批次可能如下

rem batch.bat
rem %1 represents the file name with no extension.
pdflatex -shell-escape %1

步骤 2:创建 C# 代码并编译

最简单的例子如下:

   using System.Diagnostics;
   class MyApp
    {
        public static void Main(string[] args)
        {
            Process p1 = new Process();
            p1.StartInfo.FileName = "batch.bat";
            p1.StartInfo.Arguments = args[0];
            p1.StartInfo.UseShellExecute = false;

            p1.Start();
            p1.WaitForExit();
         }
     }

使用 C# 编译器编译它以获取MyApp.exe示例。将其保存在特定目录中并设置PATH系统变量以指向它。但为了简单起见,您可以将其保存在 LaTeX 输入文件所在的目录中。

步骤 3:创建测试 LaTeX 输入文件

在具有读写权限的目录中创建并保存以下 LaTeX 输入文件。

% test.tex
\documentclass[preview,border=12pt,12pt]{standalone}
\begin{document}
Hello World
\end{document}

第四步:尝试一下

MyApp.exe需要一个参数,即没有扩展名的 TeX 输入文件名。

从命令提示符下,执行MyApp.exe test

第五步:投票支持这个答案!

答案2

这将是对 OP 评论的回复,但需要格式化(可能还有长度)。

创建一个包含以下内容的文件,并将其命名为hw.tex

\documentclass{article}
\begin{document}
Hello World
\end{document}

在命令行中,在保存该文件的文件夹中,键入pdflatex hw。这样可以吗?

然后移动hw.texc:\,然后跑pdflatex c:/hw。这真的是一个斜杠即使在 Windows 上也是如此。事实上,这可能是你的错误。

相关内容