2013-01-21 5 views
2

У меня есть dhost ghostscript (gsdll32.dll), который я завернул в свое приложение C#. Я пробовал различный способ конвертировать postscript в jpeg, но этого не происходит. Код выглядит следующим образом:Преобразование postscript в jpeg

  PDFPrinter.WGhostScript gs = new PDFPrinter.WGhostScript(); 
      gs.AddParam("-sDEVICE=jpeg"); 
      gs.AddParam("-dJPEGQ=100"); 
      gs.AddParam("-dNOPAUSE"); 
      gs.AddParam("-dBATCH"); 
      gs.AddParam("-dSAFER"); 
      gs.AddParam("-r300"); 
      string outfile = txtOutFolderLoc.Text + txtFileName.Text + ".jpg"; 
      gs.AddParam(@"-sOutputFile=" + outfile); 
      gs.AddParam(psFilePath); 
      gs.Execute(); 
      Application.Exit(); 

В чем могут быть причины?

  1. У меня есть место постскриптума в строке «psFilePath».
  2. «outfile» представляет местоположение и имя файла вывода.

[Я использовал те же самые материалы и конвертировал постер в PDF и PNG следующим образом].

в PDF РАБОТАЛ

  gs.AddParam("-dBATCH"); 
      gs.AddParam("-dNOPAUSE"); 
      gs.AddParam("-sDEVICE=pdfwrite"); 
      gs.AddParam("-sPAPERSIZE=a4"); 
      gs.AddParam("-sProcessColorModel=DeviceGray"); 
      gs.AddParam("-sPDFPassword=password"); 
      string outfile = txtOutFolderLoc.Text + txtFileName.Text + ".pdf"; 
      gs.AddParam(@"-sOutputFile=" + outfile); 
      gs.AddParam(psFilePath); 
      gs.Execute(); 
      Application.Exit(); 

В PNG КОД:

  gs.AddParam("-dSAFER"); 
      gs.AddParam("-dBATCH"); 
      gs.AddParam("-dNOPAUSE"); 
      gs.AddParam("-sDEVICE=png16m"); 
      gs.AddParam("-dGraphicsAlphaBits=4"); 
      gs.AddParam(@"-sOutputFile=" + txtOutFolderLoc.Text + txtFileName.Text + "%i.png"); 
      gs.AddParam(psFilePath); 
      gs.Execute(); 
      Application.Exit(); 

EDIT Я Постскриптум генерируется и приложение продолжается до его выхода. Но файл jpeg не найден.

PostScript генерируется прижимным принтером с призрачным окном. Как только этот постскрипт сгенерирован, управление передается приложению, которое преобразует этот PS.

+0

Можете ли вы подробно остановиться на «его не происходит». нет файла, пустого файла, неправильного содержимого? и все, что вы изменили между рабочими версиями PDF и PNG, - это -sDEVICE? может ли постскриптум отсутствовать 'showpage'? что может привести к непоследовательным результатам, если вы не запустите его через 'ps2eps' в первую очередь. –

+0

@luser droog: Спасибо, что ответили. Я отредактировал контент, и я добавил код для преобразования PS в PDF и PNG. Обе функции работают нормально. Но код JPEG кажется, что он не генерирует выходной файл. –

+0

Это все, что я знаю из-за использования версии командной строки для этих типов конверсий. Но сейчас это гораздо более серьезный, более ответственный вопрос. Отличная работа. +1 Добро пожаловать на сайт! –

ответ

1

мне удалось получить выход со следующими параметрами:

  PDFPrinter.WGhostScript gs = new PDFPrinter.WGhostScript(); 
      gs.AddParam("-q"); 
      gs.AddParam("-dNOPAUSE"); 
      gs.AddParam("-dBATCH"); 
      gs.AddParam("-sDEVICE=jpeg"); 
      gs.AddParam(@"-sOutputFile=<full oytput file path>%i.jpg"); 
      gs.AddParam(<psFilePath>); 

я должен был добавить в «-q», чтобы сделать это.

-q, чтобы предотвратить появление Ghostscript сообщений на стандартный вывод, которые смешиваются с предполагаемым потоком вывода. '

+0

рад, что вы его исправили, но на самом деле это не имеет смысла. Вывод - файл, а не stdout. – agentp

+0

@george: Привет, я не очень уверен в этом, это просто сработало, и код, который я показал в вопросе, просто не работает по какой-то причине. Несмотря на то, что у меня есть рабочий код, я все еще искал причину, «почему код в вопросе не работает». –

Смежные вопросы