1

Javaを使用してpdfをtxtに変換しようとしています。Apache PDFBox を試してみましたが、何らかの奇妙な理由で、ドキュメント全体が変換されません。このため、Runtime.getRuntime().exec() 呼び出しを実行して pdftotext を使用することにしました。問題は、私の端末では pdftotext が問題なく動作する一方で、exec() 呼び出しでエラー コード 1 (場合によっては 99) が返されることです。呼び出しは次のとおりです。

pdftotext "/home/www-data/CANEFS_TEST/Hello/ciao.pdf" "/tmp/ciao.pdf.txt"

これがコードです

private static File callPDF2Text(File input,File output){
    assert input.exists();
    assert Utils.getExtension(input).equalsIgnoreCase("pdf");
    assert Utils.getExtension(output).equalsIgnoreCase("txt") : output.getAbsoluteFile().toString();

    Process p=null;

    try {
        System.out.println(String.format(
                PDF2TXT_COMMAND,
                input.getAbsolutePath(),
                output.getAbsolutePath()));
        p=Runtime.getRuntime().exec(String.format(
                PDF2TXT_COMMAND,
                input.getAbsolutePath(),
                output.getAbsolutePath()));
        p.waitFor();
        if (p.exitValue()!=0){
            throw new RuntimeException("exit value for pdftotext is "+p.exitValue());
        }
    } catch (Exception e) {
        throw new RuntimeException(e);
    }

    return output;
}

PDF2TXT_COMMAND 文字列の定義は次のとおりです。

public static final String PDFTXT_COMMAND="pdftotext \"%s\" \"%s\"";

通常、この種のエラーは権限の設定が原因であることを知っています。したがって、Hello フォルダーに対する ls -l コマンドの出力は次のとおりです。

ls -l /home/www-data/CANEFS_TEST/Hello/
total 136
-rwxrwxr-- 1 www-data www-data 136041 mar 27 16:31 ciao.pdf

また、プロセスを作成するユーザーは koldar であり、グループ www-data 自体に属していることにも注意してください。お時間をいただき、ありがとうございました。

4

1 に答える 1