여기에 표시된 코드는 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();
변수의 실제 값을 제공하지 않기 때문에 코드 형식을 알 수 없습니다. Ghostscript를 실행하기 위해 사용하는 전체 문자열을 인쇄 해보고, 명령 행에서 그 형식을 시도해보십시오. 그것이 작동한다면, 아마도 그것은 일종의 탈출 (escape) 문제 일 것입니다. 그렇지 않으면 여기에 커맨드 라인을 올릴 수 있습니다. 그리고 나는 그것을 보았습니다. – KenS
또한이 질문을 보길 원할 수도 있습니다. http://stackoverflow.com/questions/39974159/ghostscript-doesnt-interpret-supplied-printer – KenS
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 " –