我正在尝试制作一个pdf输出。我已经完成了pdf文件与pdfbox,但它现在有约15 MB。这是为了达到计划的目的。所以我想缩小文件的大小。我首先尝试了linux终端和鬼脚本:
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();但是我没有输出文件。有些争论是非法的吗?
希望有人能帮忙。
发布于 2017-01-27 16:04:52
感谢@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必须是空的。
感谢@KenS。
发布于 2017-01-19 08:33:08
至少有几个论点是不正确的。CompatibilityLevel应该在1.0到1.7之间,4太大了。使用pdfwrite设置分辨率不是一个明智的主意,它通常不会产生任何效果。有一些例外,例如,如果您将一个透明的PDF文件带到PDF的低版本,以至于它不支持透明性。
你至少应该得到一个0字节的PDF文件,如果你没有,那么有些事情是严重的错误。
如果您确实得到了一个0字节的文件,那么操作至少开始了.您应该捕获后通道输出,并读取它是否有错误的迹象。
https://stackoverflow.com/questions/41728236
复制相似问题