我目前正在尝试将一些.ps文件以编程方式转换为pdf - 但我遇到的是gswin64c,它没有任何可用的教程:(
基本上,到目前为止,我想出了这个:
Dim proc As New Process
proc.StartInfo.FileName = My.Settings.GhostscriptPath 'path to the ghostscript bin directory
proc.StartInfo.WorkingDirectory = System.IO.Path.GetDirectoryName("c:\test dire\test.ps")
'output umschreiben
proc.StartInfo.RedirectStandardOutput = True
proc.StartInfo.RedirectStandardError = True
proc.StartInfo.UseShellExecute = False
Dim PDfName = System.IO.Path.ChangeExtension("c:\test dire\test.ps", "pdf")
Dim Args As String = String.Format("-dSAFER -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile='{0}' '{1}'", PDfName, FileName)
proc.StartInfo.Arguments = Args
proc.Start()
proc.WaitForExit()
Dim Output = proc.StandardOutput.ReadToEnd
Dim OutputErrors = proc.StandardError.ReadToEnd
Debug.Print(Output)
Debug.Print(OutputErrors)
它运行 - 但ghotscript只是喷出一个"没有这样的文件或目录"错误并退出。真正运行这件事需要做些什么?
答案 0 :(得分:1)
您的参数字符串在文件名占位符周围使用单引号:
"-dSAFER -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile='{0}' '{1}'"
单引号在CMD
中不是有效引用字符,因此该命令很可能失败,因为它正在查找文字文件名'c:\test dire\test.ps'
而不是c:\test dire\test.ps
。改为使用双引号:
"-dSAFER -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=""{0}"" ""{1}"""
他们必须通过在前面加上另一个双引号来逃避。