使用Ghostscript(PostScript)从stdin计算PDF页面

时间:2014-05-28 10:26:40

标签: shell ghostscript postscript

我在stackoverflow上找到了如何通过在shell上执行以下命令来使用Ghostscript计算PDF文件的页面

gs -q -dNODISPLAY -c "($PATH_TO_PDF) (r) file runpdfbegin pdfpagecount = quit"')

我想从stdin获取pdf。

我会玩一点,但没有成功。

我的方法是:

gs -q -dNODISPLAY - -c "(%stdin) (r) file runpdfbegin pdfpagecount = quit"')

我没有输出。

任何提示或建议?

3 个答案:

答案 0 :(得分:5)

您无法使用stdin中的PDF文件,因为PDF格式或多或少地能够随机访问文件的所有部分。

在Ghostscript从stdin读取PDF文件的情况下,它首先将其复制到本地文件,然后对其进行处理,因此无论如何它都不能从stdin工作。

简而言之,这无法完成。

答案 1 :(得分:5)

这有效:

gs -q -dNODISPLAY -c "($PATH_TO_PDF) (r) file runpdfbegin pdfpagecount = quit";

我认为您尝试使用

的问题
gs -q -dNODISPLAY -c "($PATH_TO_PDF) (r) file runpdfbegin pdfpagecount = quit"')

是QUIT后无法比拟的结束括号

答案 2 :(得分:-3)

可以做到。

String ars = "-q -dNODISPLAY  -dNOPAUSE -sDEVICE=tiffg3  -r150.4 -o" + outputImagesPath + "%d.tiff -sPAPERSIZE=a4 " + inputPDFFile + " -c quit";
Process proc = new Process();
proc.StartInfo.FileName = ghostScriptPath;
proc.StartInfo.Arguments = ars;
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.CreateNoWindow = true;
proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
proc.Start();
proc.WaitForExit();
//Raise Your Complete Job Event Here And User Directory.GetFiles("..").Count