0

現在、いくつかの .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 は単に「そのようなファイルまたはディレクトリはありません」というエラーを吐き出して終了します。このことを実際に実行するには、何をする必要がありますか?

4

1 に答える 1

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}"""

別の二重引用符を先頭に追加してエスケープする必要があります。

于 2013-03-10T14:21:07.717 に答える