我正在尝试制作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();
但我没有输出文件。有些论点是非法的吗?
希望,有人可以提供帮助。
答案 0 :(得分:2)
感谢@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。
答案 1 :(得分:0)
至少有一些论点不正确。 CompatibilityLevel应该是1.0到1.7之间的数字,4太大了。使用pdfwrite设置分辨率并不是一个明智的想法,它通常没有任何效果。例如,如果您将透明PDF文件用于PDF版本,以至于它不支持透明度,例如。
你应该至少得到一个0字节的PDF文件,如果你不是那么严重错误。
如果你得到一个0字节的文件,那么至少开始操作。您应该捕获反向通道输出并读取它以查找任何错误迹象。