首页 > 解决方案 > Java进程成功执行“pdflatex”但生成空的.pdf文件

问题描述

我想从 Java 程序编译一个 .tex 文件。我编写了以下代码,它成功执行,但是当我尝试打开.pdf生成的文件时,操作系统会弹出一条消息,指出文件完全为空(链接到图像)。

顺便说一句,当我pdflatex tarea0.tex直接从终端运行命令时,它会生成我想从 Java 程序中获取的非空 .pdf 文件。

import java.io.File;
import java.io.IOException;

class HelloWorld {
    public static void main(String[] args) {
        try {
            ProcessBuilder pb = new ProcessBuilder("pdflatex", "tarea0.tex");
            pb.directory(new File("/Users/carlosreategui/coding/java_testing/latex"));
            Process p = pb.start();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

这是所有文件的链接

标签: java

解决方案


您需要等待该过程结束。我猜测在等待进程结束之前退出 JVM 会导致pdflatex接收到导致它突然终止的信号。

所以添加一行:

p.waitFor();

之后p.start()应该会有预期的效果。


推荐阅读