如何在java中链接ghost脚本以减少PDF大小?

如何在java中链接ghost脚本以减少PDF大小?,java,pdf,ghostscript,Java,Pdf,Ghostscript,我试图在命令行argumenet的帮助下使用ghost脚本来减小PDF文件的大小,我获得了上述输入字符串对象cmd的IOexception,是否有人可以帮助运行此命令来使用ghostscript 首先,虽然通过pdfwrite设备运行PDF文件可能会使文件变小,但这不是设备的用途,在某些情况下,它会生成更大的文件 如果确实要执行此操作,则不要使用-dPDFSETTINGS开关。而是单独设置每个参数,花些时间阅读文档并查看它们的作用,以便您做出明智的选择 您没有说明您使用的是什么操作系统,也没有说

我试图在命令行argumenet的帮助下使用ghost脚本来减小PDF文件的大小,我获得了上述输入字符串对象cmd的IOexception,是否有人可以帮助运行此命令来使用ghostscript

首先,虽然通过pdfwrite设备运行PDF文件可能会使文件变小,但这不是设备的用途,在某些情况下,它会生成更大的文件

如果确实要执行此操作,则不要使用-dPDFSETTINGS开关。而是单独设置每个参数,花些时间阅读文档并查看它们的作用,以便您做出明智的选择

您没有说明您使用的是什么操作系统,也没有说明Ghostscript的版本,但我可以看到几个可能的问题:

1) Ghostscript可执行文件并非在所有操作系统上都称为“gs”,可能您使用了错误的名称。参数的语法使我相信这是一个Windows系统,在这种情况下,可执行文件称为gswin32(对于窗口版本)或gswin32(对于命令行版本)

2) 您尚未指定可执行文件的路径。只有在操作系统的搜索路径(通常是%path%环境变量)上可以找到可执行文件时,这才有效

您的命令行显然包括“-sOutputFile=C:\Users\342008\Desktop\t\Pa_10_12.pdf”您不能在参数中留下多余的空格。您在那里编写的内容将导致GS假定输出文件的名称为空,然后将文件名作为输入文件进行处理

我建议在Java中尝试此操作之前,尝试从操作系统的命令行运行该命令。如果这不起作用,那么它在Java上也不会起作用……

首先,虽然通过pdfwrite设备运行PDF文件可能会使文件变小,但这不是设备的用途,在某些情况下,它会生成更大的文件

如果确实要执行此操作,则不要使用-dPDFSETTINGS开关。而是单独设置每个参数,花些时间阅读文档并查看它们的作用,以便您做出明智的选择

您没有说明您使用的是什么操作系统,也没有说明Ghostscript的版本,但我可以看到几个可能的问题:

1) Ghostscript可执行文件并非在所有操作系统上都称为“gs”,可能您使用了错误的名称。参数的语法使我相信这是一个Windows系统,在这种情况下,可执行文件称为gswin32(对于窗口版本)或gswin32(对于命令行版本)

2) 您尚未指定可执行文件的路径。只有在操作系统的搜索路径(通常是%path%环境变量)上可以找到可执行文件时,这才有效

您的命令行显然包括“-sOutputFile=C:\Users\342008\Desktop\t\Pa_10_12.pdf”您不能在参数中留下多余的空格。您在那里编写的内容将导致GS假定输出文件的名称为空,然后将文件名作为输入文件进行处理


我建议在Java中尝试此操作之前,尝试从操作系统的命令行运行该命令。如果这不起作用,那么它在Java中也不起作用……

…请发布异常Java.io.IOException:CreateProcess error=2,系统无法找到指定的文件。。我们需要这样做吗。。cmd[0]=“-gs”;cmd[1]=“-dNOPAUSE”;cmd[2]=“-dQUIET”;cmd[3]=“-dBATCH”;cmd[4]=“-sDEVICE=pdfwrite”;cmd[5]=“-sOutputFile=output.pdf”;另外需要注意的是:GhostScript是在GPL上获得许可的。通过将您的程序与GhostScript紧密耦合,您将面临“许可证感染”的风险。如果您想发布您的程序,您应该获得法律建议…请发布例外java.io.IOException:CreateProcess error=2,系统找不到指定的文件。。我们需要这样做吗。。cmd[0]=“-gs”;cmd[1]=“-dNOPAUSE”;cmd[2]=“-dQUIET”;cmd[3]=“-dBATCH”;cmd[4]=“-sDEVICE=pdfwrite”;cmd[5]=“-sOutputFile=output.pdf”;另外需要注意的是:GhostScript是在GPL上获得许可的。通过将您的程序与GhostScript紧密耦合,您将面临“许可证感染”的风险。如果你想发布你的程序,你应该得到法律建议。
     String[] cmd = {
"gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile=     C:\\Users\\342008\\Desktop\\t\\Pa_10_12.pdf C:\\Users\\342008\\Desktop\\t\\P1_10_12.pdf"
};
try {
     Runtime.getRuntime().exec(cmd);
    } catch (IOException e) {}