2009-12-21 4 views
3

사용하여 서버에 이미지의 컬렉션에 PDF 변환이 내가 달성하기 위해 노력하고있는 단계는 다음과 같습니다고스트 스크립트

  1. 서버에서 PDF 문서를 업로드합니다.
  2. GhostScript (모든 페이지가 이미지로 변환 됨)를 사용하여 PDF 문서를 일련의 이미지로 변환하십시오.
  3. 이미지 모음을 클라이언트로 다시 보냅니다.

지금까지 나는 # 2에 관심이 있습니다.

첫째, 나는 모두 gswin32c.exegsdll32.dll을을 다운로드하여 수동으로 이미지의 컬렉션에 PDF 변환 관리 (나는 CMD 을 열고 명령 울부 짖는 실행) :

gswin32c.exe -dSAFER -dBATCH -dNOPAUSE -sDEVICE=jpeg -r150 -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -dMaxStripSize=8192 -sOutputFile=image_%d.jpg somepdf.pdf 

그러면 내 웹 프로젝트의 ClientBin에 gswin32c.exegsdll32.dll을 입력하고 프로세스를 통해 .exe를 실행합니다.

System.Diagnostics.Process process1 = new System.Diagnostics.Process(); 
process1.StartInfo.WorkingDirectory = Request.MapPath("~/"); 
process1.StartInfo.FileName = Request.MapPath("ClientBin/gswin32c.exe"); 
process1.StartInfo.Arguments = "-dSAFER -dBATCH -dNOPAUSE -sDEVICE=jpeg -r150 -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -dMaxStripSize=8192 -sOutputFile=image_%d.jpg somepdf.pdf" 
process1.Start(); 

불행히도, ClientBin에는 아무 것도 출력되지 않았습니다. 누구나 왜 그런 생각을 가지고 있니? 모든 추천은 높게 평가 될 것이다.

답변

3

코드를 시도한 결과 잘 작동하는 것 같습니다. 나는 다음과 같은 사항을 확인하는 것이 좋습니다 :

  1. 이 somepdf.pdf는 GS 프로세스의 작업 폴더에있는 경우 확인하거나 명령 줄에서 파일의 전체 경로를 지정합니다. 다음과 같이함으로써 고스트 스크립트의 출력을 보는 것도 유용 할 것입니다 :

    .... process1.StartInfo.RedirectStandardOutput = true; process1.StartInfo.UseShellExecute = false; process1.Start(); // 읽기 출력 문자열 출력 = process1.StandardOutput.ReadToEnd(); ... process1.WaitForExit(); ...

    파일을 찾을 수없는 경우 출력 스트림에 "오류 :/undefinedfilename in (somepdf.pdf)"가 표시됩니다.

  2. 또 다른 제안은 gs 프로세스가 완료되고 결과 image_N.jpg 파일이 생성 될 때까지 기다리지 않고 스크립트를 진행하는 것입니다. 나는 process1.WaitForExit를 추가하는 것이 문제를 해결해야한다고 생각한다.

관련 문제