2016-06-06 9 views
-1

Нам нужно напечатать PDF с нашего C# приложения (без необходимости использования внешней библиотеки для установки и без диалога печати)Печать PDF без внешнего инструмента

Я знаю, что есть много дискуссий по этому поводу (в основном устаревшее решение или бесплатный инструмент/библиотека), но, возможно, кто-то может указать мне на лучшее решение для этого? Другим способом может быть преобразование PDF в изображение и отправку изображения непосредственно на принтер, если я могу найти простой способ конвертировать PDF-страницу в изображение.

Спасибо!

+0

Вы можете распечатать без диалога печати, но вы все еще не можете отправить PDF непосредственно на принтер , – Paparazzi

ответ

2

Это не требует библиотеки, но для этого требуется, чтобы на компьютере был установлен Adobe Reader DC. Если вы не хотите использовать какой-либо внешний инструмент, вам необходимо создать свои собственные функции для этого. Adobe Reader DC можно вызвать с помощью команды, позволяющей распечатать документ. Это не элегантное решение вообще для обработки или закрытия процесса ошибки, но это скелет, который вы можете настроить:

private static void PrintDocument(string fileName) 
    { 
     var process = new Process 
     { 
      StartInfo = 
      { 
       WindowStyle = ProcessWindowStyle.Hidden, 
       Verb = "print", 
       FileName = @"C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe", //You could use an app config string here 
       Arguments = [email protected]"/p /h {fileName}", 
       UseShellExecute = false, 
       CreateNoWindow = true 
      } 
     }; 

     process.Start(); 

     if (process.HasExited == false) 
     { 
      process.WaitForExit(10000); 
     } 

     process.EnableRaisingEvents = true; 

     try 
     { 
      //Try to gracefully exit the process first 
      var proccessIsClosed = process.CloseMainWindow(); 

      //If it doesn't gracefully close, kill the process 
      if (!proccessIsClosed) 
      { 
       process.Kill(); 
      } 
     } 
     catch 
     { 
      throw new Exception("Process ID " + process.Id + 
              " is unable to gracefully close. Please check current running processes."); 
     } 
    } 
+0

Спасибо! Но запуск adobe-процесса для печати документа - это не то, что мне нужно, так как мы можем увидеть, как всплывающее устройство Adobe появилось перед отправкой документа на принтер. Если я хочу попробовать внешнюю библиотеку, чтобы распечатать документ PDF на сетевом принтере, для чего нужна лучшая/небольшая библиотека? – michelqa

+0

Здесь есть несколько сторонних библиотек/решений: http://stackoverflow.com/questions/5566186/print-pdf-in-c-sharp. Я не использовал их лично, поэтому не могу сказать, всплывает ли во время печати всплывающее окно. –

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

  • Нет связанных вопросов^_^