有没有人曾在C#/ WPF应用程序中使用pdflatex.exe从TeX文档创建PDF文档?我有我的TeX文档,我想将其转换为PDF并在应用程序中显示它,但是,我不确定如何去做这个,我几乎没有什么可以在网上找到这样的事情。有谁知道这样做的最佳方法是什么(通过C#应用程序中的pdflatex.exe将TeX文档转换为PDF)?
非常感谢!
答案 0 :(得分:4)
这是我使用的代码。它假定源与可执行文件位于同一文件夹中,并且包括在需要时运行BibTeX(如果需要,只需排除第二个进程)。
string filename = "<your LaTeX source file>.tex";
Process p1 = new Process();
p1.StartInfo.FileName = "<your path to>\pdflatex.exe";
p1.StartInfo.Arguments = filename;
p1.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
p1.StartInfo.RedirectStandardOutput = true;
p1.StartInfo.UseShellExecute = false;
Process p2 = new Process();
p2.StartInfo.FileName = "<your path to>\bibtex.exe";
p2.StartInfo.Arguments = Path.GetFileNameWithoutExtension(filename);
p2.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
p2.StartInfo.RedirectStandardOutput = true;
p2.StartInfo.UseShellExecute = false;
p1.Start();
var output = p1.StandardOutput.ReadToEnd();
p1.WaitForExit();
p2.Start();
output = p2.StandardOutput.ReadToEnd();
p2.WaitForExit();
p1.Start();
output = p1.StandardOutput.ReadToEnd();
p1.WaitForExit();
p1.Start();
output = p1.StandardOutput.ReadToEnd();
p1.WaitForExit();
是的,这可以稍微清理一下,当然没有调用BibTeX就可以在循环中调用(建议使用3次以确保所有引用都正确)。此外,没有异常处理,因此您可能希望在流程调用等周围添加try / catch块。
答案 1 :(得分:0)
我从未这样做过,但这完全有可能。您需要使用System.Diagnostics.Process类来运行pdflatex.exe
其余的是选择应该运行的方式。你可能有一些选择:
如果pdflatex支持将输出写入“标准输出”,您可以截取它并根据需要处理内容。
另一种选择是使用一些临时文件夹将文件写入并订阅有关文件夹更改的通知(异步,您可以运行多个pdflatex实例)或只是等待进程完成(同步,您只能运行一个实例) pdflatex一次)。