2016-10-11 2 views
0

여기에 표시된 코드는 ghostscript 인수 쿼리를 변수에 저장하고 파일 이름 아래의 printerqueue에 outputfilename var를 반환합니다. 하지만 일단 코드가 실행되면 printerqueue에 도달하게됩니다. (이는 내가 알고있는 pauseed thats를 알려주지 만) 큐의 입력이 깜박이고 즉시 사라집니다.고스트 스크립트로 printerqueue에 사용자 정의 이름 표시

내 쿼리 또는 다른 곳에서 오류가 있는지 모르겠지만 쿼리에 결함이있는 것으로 의심됩니다.이 문제를 해결할 수있는 고스트 스크립트는 거의없는 것으로 알고 있으며 이것이 내 마지막 수단입니다.

var outputfilename = job.Configuration.PrintFileName.Name; 
     var duplexSetting = SetDuplex(printJob); 
     var colorSetting = SetColor(printJob); 
     var copiesSetting = SetCopies(printJob); 
     var gsArguments = string.Format($"-ghostscript \"{GhostScript.GetGsPrintExecutablePath()}\"" + 
             $"{colorSetting}{duplexSetting}{copiesSetting} " + 
             "-noquery -dPDFFitPage -printer \"" + 
             $"{_printerRepository.Find(x => x.FirstOrDefault(y => y.Id == printJob.Printer)).PrinterName}\" \"" + 
             $"{ printJob.SourceXml}\"" + 
             $"-dNOPAUSE -dBATCH -c \"mark/UserSettings <</ DocumentName({outputfilename}) >> (mswinpr2)finddevice putdeviceprops setdevice\""); 

     var gsProcessInfo = new ProcessStartInfo 
     { 
      WindowStyle = ProcessWindowStyle.Hidden, 
      FileName = GhostScript.GetGsPrintExecutablePath(), 
      Arguments = gsArguments, 
      UseShellExecute = true 
     }; 

     var gsProcess = Process.Start(gsProcessInfo); 
     gsProcess?.WaitForExit(); 
+0

변수의 실제 값을 제공하지 않기 때문에 코드 형식을 알 수 없습니다. Ghostscript를 실행하기 위해 사용하는 전체 문자열을 인쇄 해보고, 명령 행에서 그 형식을 시도해보십시오. 그것이 작동한다면, 아마도 그것은 일종의 탈출 (escape) 문제 일 것입니다. 그렇지 않으면 여기에 커맨드 라인을 올릴 수 있습니다. 그리고 나는 그것을 보았습니다. – KenS

+0

또한이 질문을 보길 원할 수도 있습니다. http://stackoverflow.com/questions/39974159/ghostscript-doesnt-interpret-supplied-printer – KenS

+0

ghostscript가 전체 명령 줄을 지나치게하지 못하게하여 파일 이름을 얻기 위해 섹션을 붙여 넣었습니다. -DNOPAUSE에서. 내가 이미 가지고있는 코드 뒤에 ... 채워진 변수들 : -ghostscript "C : ₩ Development ₩ AdvancedForms ₩ src ₩ AdvancedForms.Studio ₩ bin ₩ Debug ₩ binaries ₩ gsprint.exe"-colour -copies -noquery -dPDFFitPage - 프린터 "테스트 프린터" "C : \ AdvancedForms \ Runtime \ Processes \ f6259836-a74c-4f7a-920c-6f3a4a58c809 \ 57affd3c-480f-41d9-85e9-0a1b9b0aa098.pdf"-dNOPAUSE -dBATCH -c "표시/UserSettings <> (mswinpr2) finddevice putdeviceprops setdevice " –

답변

0

문제는 지금과 같은 명령 줄 표시에 의해 수정되었습니다 : var gsArguments = string.Format("-ghostscript \"{0}\"{1}{2}{3} -noquery -dPDFFitPage -printer \"{4}\" \"{5}\" \"{6}\"", GhostScript.GetExecutablePath(), colorSetting, duplexSetting, copiesSetting, _printerRepository.Find(x => x.FirstOrDefault(y => y.Id == printJob.Printer)).PrinterName, printJob.SourceXml, outputfilename);

모든 변수가 특정 설정을 나타내고를 고스트 스크립트에 documantion 하나가 사용할 필요가 말씀의 반대에/Usersettings 다음/DocumentName를 내가 그냥 나머지 변수를 인라인으로두고 프린터 큐에 표시하도록 설정된 이름을 표시합니다.

설명서를 오해 한 경우 나에게 수정을 요청하면이 답변을 게시하여 동일한 문제가있는 사용자를 돕습니다. 미래에.

관련 문제