2012-11-12 4 views
2

내 데스크톱 응용 프로그램에서는 인쇄가 대량 크기로되어 있고 고정 입금 확인과 같은 단일 복사본 인쇄를 제한해야하기 때문에 일괄 파일을 통한 텍스트 기반보고 및 인쇄를 개발했습니다. 우리는 lqdsi 5235 도트 매트릭스 프린터 작업 파일을 사용하고 있습니다. 현재 데스크톱 응용 프로그램 과정은 다음과 같습니다 :웹 응용 프로그램에서 인쇄 구현 방법

을 배치 파일이 같은 경우 : 배치 파일의

이름 : Dosprint.bat 네트워크 인쇄의

Type %1 > prn 

다음 배치 파일의 이름 : Netprint.bat

Type %1 > \\SharedComputer\SharedPrinterName 

그리고

를 다음과 같이 응용 프로그램에서 나는 인쇄 리디렉션

인쇄 값이 매우 높고 수천 장이 몇 번 인쇄됩니다. 그것은 매우 안전하며, 사본 수와 고정 입금 영수증 등을 통제 할 수 있습니다.
웹 응용 프로그램에서 동일한 프로세스를 구현할 수있는 방법이 있으면 도와주세요. 당신은 웹 응용 프로그램에서 배치 파일을 실행하는 방법을 의미하는 경우

+0

은 동일한 로컬 네트워크에있는 웹 서버와 프린터입니까? –

답변

0

감사합니다. 이 기사에서 그는 ActiveX 객체를 생성하고 실행할 수 있도록 웹 사이트를 신뢰할 수있는 사이트 목록에 추가해야한다고 언급했습니다.

도스 프린트하려면 아래 시스템을 사용하여 클라이언트 시스템 도트 매트릭스 프린터의 내 웹 사이트에서 도스 기반 인쇄를 얻었습니다. 클라이언트 시스템에

  1. 구성 : (인터넷 익스플로러/브라우저 구성)

    Internet Explorer를 열고 ->  도구 ->  인터넷 옵션 -> Security (탭).

    는 신뢰할 수있는 사이트에

    주 서버의 URL을 추가합니다 "취소 필요한 서버 확인 (https :)이 영역에있는 모든 사이트에 대해 (당신의 웹 사이트는 또한에게 사이트를 허용하지 HTTPS) 인 경우

    . 다음 같은 페이지에서 사용자 지정 수준 탭을 사용하여 ActiveX 컨트롤 및 플러그 인을 활성화

    // 배치 파일의 예 만듭니다.. printme.bat을 그리고 배치 파일에 다음 명령을 입력

    유형 % 1> prn

    // 배치 파일에는 위와 같이 하나의 명령 줄만 포함됩니다. prn 키워드를 LPT1 또는 \ system_name \ printer와 같은 공유 프린터로 변경할 수 있습니다.

    // 필요한 경우 IIS_IUSRS를 부여하면 폴더에 대한 IUSR 권한에 브라우저에서 액세스 할 수있는 printme.bat 파일이 포함됩니다.

  2. 웹 페이지 태그 정의와 자바 스크립트 구현 :

// PRE 태그를 사용합니다. 이 글은 원시 데이터 (ASCII)를 저장되지 않은 형식으로

<pre id="predata" runat="server" style="display:none;"></pre> 

<asp:Button Text="Print Report" runat="server" ID="btnprint" Width="101px" CssClass="buttonstyle" BackColor="DarkSlateGray" ForeColor="Aqua" OnClientClick="dosprint()" /> 

<%-- JAVA SCRIPT FOR PRINTING --%> 
    <script> 
     function dosprint() { 
      var fso, tempfile,mdata; 
      var fname = { key: 'value' }; 
      fso = new ActiveXObject("Scripting.FileSystemObject"); 
      function CreateTempFile(fname) { 
       var tfolder, tfile, tname, fname, TemporaryFolder = 2; 
       tfolder = fso.GetSpecialFolder(TemporaryFolder); 
       tname = fso.GetTempName(); 
       fname.key = tfolder + '\\' + tname; 
       tfile = tfolder.CreateTextFile(tname); 
       return (tfile); 
      } 
      tempfile = CreateTempFile(fname); 
      mdata = document.getElementById('<%= predata.ClientID %>').innerText; 
      tempfile.writeline(mdata); 
      tempfile.close(); 
      objShell = new ActiveXObject("WScript.Shell"); 
      comspec = objShell.ExpandEnvironmentStrings("%comspec%"); 
      objExec = objShell.Exec('c:\\temp\\printme.bat ' + fname.key); 
      // give double back slash to get a back slash in path 
} 
</script> 

PRINTME.BAT 배치 파일이 클라이언트 시스템 C에 존재입니다 위의 코드에서 : \ temp 디렉토리를.

위 시스템은 저에게 효과적입니다. 감사합니다 모두와 행복한 코딩.

1

, 당신은 같은 것을 할 수 있습니다

System.Diagnostics.Process.Start(file.FullName) //where file is a FileInfo class 

을만큼 파일이 웹 응용 프로그램에서 연결할 수로 (빈 내부에있는 예를 들어 폴더) 및

앱을 실행하는 계정에 파일을 실행할 권한이 있습니다.

UPDATE :

프린팅 시나리오를 처리하기에 적합한 방법은 인쇄 할 수있는 간단하고 쉬운 방법으로 콘텐츠를 표현하는 페이지를 생성하는 것이다. 예를 들어 테이블로 된 데이터에 간단한 표를 사용하면 대부분의 프리젠 테이션에 흰색을 사용하여 불필요하게 잉크 카트리지를 사용하지 않고 A4 또는 레터와 같은 특정 크기로 사용자의 요구에 맞는 그림을 인쇄 할 수 있습니다. 몸 태그 : WWW.CODEPROJECT.COM에서 자바 스크립트를 사용하여 클라이언트 측에서 취급 자신의 문서 파일의 씨 SachinKumar K에

<body onload="window.print();"> 
    <!--content specially designed for proper printing --> 
</body> 
+0

클라이언트 측 (서버에서 오는 데이터 사용)에서 인쇄하려고하는데 웹 서버와 클라이언트 시스템이 다른 네트워크에 있습니다. 필요한 경우 클라이언트 시스템에 적절한 권한을 부여 할 수 있습니다. –

+0

내 업데이트 된 답변을 확인하십시오 –

+1

빠른 응답을 보내 주셔서 감사합니다. 죄송합니다! 내가 필요한 건 아니야. 인쇄 대화 상자없이 도스 기반 인쇄가 필요합니다. 인쇄 대화 상자는 매우 느리고 드라이버에서 드라이버로 변경되는 형식화 된 인쇄를 제공하기 때문에. RAW 텍스트 인쇄 (순전히 문자 기반 인쇄)가 필요합니다. –

관련 문제