2013-04-09 4 views
1

프린터에서 프로그래밍 방식으로 PDF 파일의 인쇄물을 얻으려면 어떻게해야합니까? printout 명령은 추가 대화 상자가 나타나지 않고 실행되어야합니다.PDF를 얻으려면 콘솔 응용 프로그램에서 프로그래밍 방식으로 백그라운드에서 인쇄하십시오.

나는 콘솔 응용 프로그램을 사용하고 제 3 자 라이브러리 또는 도구

+2

했나 지금까지 해봤습니까? 사람들에게 당신의 노력을 먼저 보여주십시오. –

답변

3

, 그것은 아크로뱃 리더의 실행 파일의 경로를 찾기 위해 Adobe의 레지스트리 설정을 사용하기 때문에 나는 다음과 같은 방법을 사용하지만 기본 프린터로 자동 인쇄 :

private void PrintPdf(string fileName) 
{ 
    var hkeyLocalMachine = Registry.LocalMachine.OpenSubKey(@"Software\Classes\Software\Adobe\Acrobat"); 
    if (hkeyLocalMachine != null) 
    { 
     var exe = hkeyLocalMachine.OpenSubKey("Exe"); 
     if (exe != null) 
     { 
      var acrobatPath = exe.GetValue(null).ToString(); 

      if (!string.IsNullOrEmpty(acrobatPath)) 
      { 
       var process = new Process 
       { 
        StartInfo = 
        { 
         UseShellExecute = false, 
         FileName = acrobatPath, 
         Arguments = string.Format(CultureInfo.CurrentCulture, "/T {0}", fileName) 
        } 
       }; 

       process.Start(); 
      } 
     } 
    } 
} 
+1

이 솔루션에서도 Acrobat Reader가 자동으로 열리고 닫힙니다. 마찬가지로 프리랜서의 대답에 지적했다. 제 생각에는 Acrobat Reader 8을 사용하고 있기 때문입니다. – Nipuna

+0

Acrobat Reader 11을 사용하여 이것을 시도했습니다. 여전히 윈도우가 열리고 닫힙니다. – Nipuna

+0

진정한 자동 PDF 인쇄가 불가능할 수도 있습니다.이 기사 [C#에서 자동 인쇄] (http://stackoverflow.com/questions/10546675/print-pdf-silently-in-c- 날카로운). 죄송합니다. – Fooksie

0

.NET 프레임 워크 외부 프로세스를 시작하는 데 사용할 수있는 열고 System.Diagnostics 네임 스페이스의 클래스를 제공을 사용하지 않고이 작업을 수행 할 필요가 있어요. 여러 프로젝트에서 다음 코드를 사용하여 다양한 실행 파일을 시작했으며이 파일을 사용하여 Adobe Acrobat Reader도 시작할 수 있습니다.

using System.Diagnostics; 
using System.IO; 
using System.Text; 
using System.Threading; 
private static void RunExecutable(string executable, string arguments) 
    { 
    ProcessStartInfo starter = new ProcessStartInfo(executable, arguments); 
    starter.CreateNoWindow = true; 
    starter.RedirectStandardOutput = true; 
    starter.UseShellExecute = false; 
    Process process = new Process(); 
    process.StartInfo = starter; 
    process.Start(); 
    StringBuilder buffer = new StringBuilder(); 
    using (StreamReader reader = process.StandardOutput) 
    { 
    string line = reader.ReadLine(); 
    while (line != null) 
    { 
    buffer.Append(line); 
    buffer.Append(Environment.NewLine); 
    line = reader.ReadLine(); 
    Thread.Sleep(100); 
    } 
    } 
    if (process.ExitCode != 0) 
    { 
    throw new Exception(string.Format(@"""{0}"" exited with ExitCode {1}. Output: {2}", 
executable, process.ExitCode, buffer.ToString()); 
    } 
    } 

당신은 당신의 프로젝트에 위의 코드를 통합하고이를 사용하여 PDF를 인쇄 할 수는 다음과 같습니다

string pathToExecutable = "c:\...\acrord32.exe"; 
RunExecutable(pathToExecutable, @"/t ""mytest.pdf"" ""My Windows PrinterName"""); 

참고 :이 코드가 속한

당신이 할 수있는 http://aspalliance.com/514_CodeSnip_Printing_PDF_from_NET.all에 이 링크에서이 코드에 대한 모든 토론을 따르십시오.

희망 사항. @Freelancer가 쓴의 라인을 따라

+0

이 코드에 직면하는 데 문제가 있습니다. 프린터를 통해 출력물을 얻을 수 있었지만 Adobe PDF 창이 자동으로 열리고 닫힙니다. – Nipuna

+0

사용중인 버전은 무엇입니까? Acrobat Reader 9에 대한 완벽한 설명 – Freelancer

+0

Acrobat Reader 8을 사용하고 있습니다. 아마도 그게 문제가됩니다. – Nipuna

관련 문제