5

PDF를 인쇄하는 비대화 형 프로세스를 작성하려고하는데 Windows 서버에서이를 빌드하는 방법에 대한 조언이 필요합니다. 2008 (및 Vista/7).비대화 형 프로세스 (Windows 서비스, 예약 된 작업 등)에서 WinServer 2008의 PDF 인쇄

이전에는 디렉터리 내에 모든 PDF를 인쇄하는 예약 된 작업 (사용자 계정이 로그온되었는지 여부에 관계없이 실행되도록 설정)이있었습니다. (별도의 프로세스로 PDF를 디렉토리로 옮길 수 있습니다.) 런타임시 PDF를 인쇄하려면 다른 프로세스 (Adobe Reader 또는 Foxit Reader)가 필요합니다. Adobe Reader와 Foxit Reader는 모두 자동 인쇄 기능을 제공하므로 예약 된 작업이 실행 된 사용자의 모든 것이 기본 프린터로 전송됩니다. UI는 생성되지 않았고 모든 파일은 문제없이 인쇄되었습니다. 이것은 내가 완전히 확실하지 않다,하지만 난이 세션 0 절연과 관련이있다 생각 서버 2008에 서버 프로세스가 더 이상 작동 2003

일했다. 나는 이것을 증명할 수 없다. 그러나 은 "사용자가 로그인 할 때만 실행"으로 설정하면 프로세스가 예약 된 작업으로 작동한다고이라고 말할 수 있습니다. 자,이 작동하는 동안, 그것은 강제로 사용자가 기계에 로그인하고, 따라서 내 요구 사항을 충족하지 않습니다. (내 첫 번째 단서는 this previous question에 있습니다.)

나는 어떻게하면 앞으로 나아갈 수 있을지 결정할 수 없습니다. 내 요구 사항을 충족시킬 방법이 있습니까?

몇 가지 참고 사항 :

내가 본 모든 솔루션은 로그인 한 사용자의 자격 증명을 사용하는 것으로 보인다. 위에 링크 된 질문을보십시오. 나열된 솔루션은 로그인 한 사용자의 토큰을 움켜 잡고 프로그램을 실행하는 데 사용되는 것 같습니다. (GetCurrentUserToken() 프로 시저를보십시오. 반환 된 값은 나중에 CreateProcessAsUser() API 호출에서 사용됩니다.)

현재 프로세스에서 알 수있는 것처럼 UI가 생성되지 않습니다. ProcMon을 사용하여 판독기 프로세스 (Adobe 또는 Foxit)가 올바르게 인쇄되고 인쇄 드라이버 자체에 문제가있는 것으로 확인되었습니다. 이 작업은 인쇄물 간 드라이버를 사용하여 백업됩니다. 인쇄 간 파일 드라이버는 세 단계로 실행되며 두 번째 단계를 시작하지 않고 모든 파일에 대해 첫 번째 단계를 완료합니다. 그렇다면 세션 0 격리가 프린터 드라이버에 어떤 영향을 줍니까? 이것은 나에게 불분명하다. (The best documentation I can find on the subject은 인쇄 스풀러가 세션 0에서 실행 되더라도 프린터 드라이버가 영향을받을 수 있음을 언급합니다).

프로세스에 '서비스와 데스크톱 상호 작용 허용'이 선택되어 있어도 Windows 서비스로 인쇄가 작동하지 않습니다.

희미한 텍스트 효과를 줄이기 위해 굵은 텍스트가 추가되었습니다.

+0

Win2k8에서는 Windows 서비스에서 GDI +를 사용할 수 없습니다. 모든 Windows 기반 PDF 리더는 어느 시점에서 GDI +를 사용할 것이라고 가정하므로 win2k8에서 구현할 수 있다고 생각하지 않습니다. 네가 이걸 해결했는지 궁금해. – yms

답변

0

Acrobat-Reader 대신 Foxit Reader를 사용해보십시오. Foxit Reader는 GUI가없는/명령 줄 실행을 Windows 2008 이상에서도 올바르게 지원합니다!

인쇄도 가능하지만 printjob을 실행할 때마다 session0에 프린터를 추가 (또는 확인)해야합니다.

더 이상 도움이 필요하면 다시 질문하십시오. Foxit Reader의 도움으로 pdf 파일을 인쇄하기 위해 작업 스케줄러에서 실행되는 powershell 스크립트를 이미 만들었습니다.