Ghost4j 不产生输出文件
Ghost4j produces no output file
我正在尝试生成 pdf 输出。我已经用 pdfbox 完成了 pdf 文件,但它现在大约有 15 MB。这对于计划的目的来说太大了。所以我想减小文件大小。我首先尝试使用 linux 终端和 ghostscript:
gs -sDEVICE=pdfwrite -dCompatibilityLevel=4 -dNOPAUSE -dBATCH -r150
-sOutputFile=output.pdf input.pdf
这很好用。但是因为它是一个 java 程序并且应该在没有 shell 的情况下工作,我测试了 ghost4j:
Ghostscript gs = Ghostscript.getInstance();
String[] gsArgs = new String[7];
gsArgs[0] = "-sDEVICE=pdfwrite ";
gsArgs[1] = "-dCompatibilityLevel=1.4 ";
gsArgs[2] = "-dPDFSETTINGS=/screen ";
gsArgs[3] = "-dNOPAUSE ";
gsArgs[4] = "-dBATCH ";
gsArgs[5] = "-sOutputFile=qw3.pdf ";
gsArgs[6] = "input.pdf";
gs.initialize(gsArgs);
gs.exit();
但是我没有得到输出文件。其中一些论点是非法的吗?
希望有人能帮忙。
至少有几个论点是不正确的。 CompatibilityLevel 应该是 1.0 到 1.7 之间的数字,4 太大了。使用 pdfwrite 设置分辨率不是一个好主意,它通常不会有任何效果。也有例外,例如,如果您将透明 PDF 文件转换为不支持透明度的 PDF 版本。
你至少应该得到一个 0 字节的 PDF 文件,如果你不这样做,那就大错特错了。
如果你确实得到了一个 0 字节的文件,那么至少操作开始了。您应该捕获反向通道输出并读取它是否有任何错误迹象。
感谢@KenS 我得到了答案:
Ghostscript gs = Ghostscript.getInstance();
String[] gsArgs = new String[8];
gsArgs[1] = "-sDEVICE=pdfwrite";
gsArgs[2] = "-dCompatibilityLevel=1.4";
gsArgs[3] = "-dNOPAUSE";
gsArgs[4] = "-dBATCH";
gsArgs[5] = "-r150";
gsArgs[6] = "-sOutputFile=qw3.pdf";
gsArgs[7] = "input.pdf";
gs.initialize(gsArgs);
gs.exit();
似乎很重要,gsArgs[0] 必须为空。
感谢@KenS。
我正在尝试生成 pdf 输出。我已经用 pdfbox 完成了 pdf 文件,但它现在大约有 15 MB。这对于计划的目的来说太大了。所以我想减小文件大小。我首先尝试使用 linux 终端和 ghostscript:
gs -sDEVICE=pdfwrite -dCompatibilityLevel=4 -dNOPAUSE -dBATCH -r150 -sOutputFile=output.pdf input.pdf
这很好用。但是因为它是一个 java 程序并且应该在没有 shell 的情况下工作,我测试了 ghost4j:
Ghostscript gs = Ghostscript.getInstance();
String[] gsArgs = new String[7];
gsArgs[0] = "-sDEVICE=pdfwrite ";
gsArgs[1] = "-dCompatibilityLevel=1.4 ";
gsArgs[2] = "-dPDFSETTINGS=/screen ";
gsArgs[3] = "-dNOPAUSE ";
gsArgs[4] = "-dBATCH ";
gsArgs[5] = "-sOutputFile=qw3.pdf ";
gsArgs[6] = "input.pdf";
gs.initialize(gsArgs);
gs.exit();
但是我没有得到输出文件。其中一些论点是非法的吗?
希望有人能帮忙。
至少有几个论点是不正确的。 CompatibilityLevel 应该是 1.0 到 1.7 之间的数字,4 太大了。使用 pdfwrite 设置分辨率不是一个好主意,它通常不会有任何效果。也有例外,例如,如果您将透明 PDF 文件转换为不支持透明度的 PDF 版本。
你至少应该得到一个 0 字节的 PDF 文件,如果你不这样做,那就大错特错了。
如果你确实得到了一个 0 字节的文件,那么至少操作开始了。您应该捕获反向通道输出并读取它是否有任何错误迹象。
感谢@KenS 我得到了答案:
Ghostscript gs = Ghostscript.getInstance();
String[] gsArgs = new String[8];
gsArgs[1] = "-sDEVICE=pdfwrite";
gsArgs[2] = "-dCompatibilityLevel=1.4";
gsArgs[3] = "-dNOPAUSE";
gsArgs[4] = "-dBATCH";
gsArgs[5] = "-r150";
gsArgs[6] = "-sOutputFile=qw3.pdf";
gsArgs[7] = "input.pdf";
gs.initialize(gsArgs);
gs.exit();
似乎很重要,gsArgs[0] 必须为空。
感谢@KenS。