2011-11-07 3 views
4

자동화 된 방법으로 마스터 문서를 네트워크 이름과 내부 IP가 할당 된 네트워크 프린터 중 하나에 자동 전송되도록하려고합니다 .네트워크 프린터에서 무인 문서 인쇄

하지만 정말 까다로운 부분이 있습니다. 워크 스테이션에서 문서를 인쇄 할 때 인쇄 할 문서 코드의 입력란에 'Job Accounting'대화 상자가 나타나면 재무 부서에서 멋진 회계 및 청구서 작성 작업을 수행 할 수 있습니다.

그렇다면 프로그래밍 방식으로 에 따라 네트워크 프린터로 문서 (docx)를 보내려면 어떻게해야합니까?

인쇄 작업을 수행 할 때 일반적인 회계 데이터가 얼마나 중요한지 잘 모르겠습니다. 인쇄 작업이 처음 본 일이기 때문입니다.

  • PHP (w/고정 IP) 5 (선호)
  • 윈도우 서버 (2003, 내가 믿는)
  • 교세라 KM-4050 프린터
  • 일부 : 여기

    은 중요한 특성이다 C++ 및 Visual Basic 사용 경험

우리는 몇 가지 조사를했지만 야생에서 너무 많은 실행 가능한 솔루션을 찾지 못했지만 토론을 시작하려면 어디에서부터 시작해야 할 지 잘 모릅니다. 불행하게도, 우리가 연결할 수있는 API가 전혀없는 것 같습니다.

----- 솔루션 -----

내 팀 생성 된 PCL을하고 씁니다 다음 PCL 각 문서를 변환하는 실행 파일을 호출하는 코드를 구현하기로 결정했다

@PJL SET KJOBMANAGERCODE="[project code here]" 

그러면 생성 된 파일을 프린터 스풀로 보내 프린터가 처리하고 각 작업을 시작할 것입니다.

도움 주셔서 감사합니다. 각 답변은 구현 계획의 특정 부분에 영감을주었습니다.

+0

작업 계정 기능이 프린터 드라이버에서 제공되고 공용 API를 사용할 수 없다고 가정합니까? –

+0

예,이 프롬프트는 드라이버에 의해 직접 시행되지만이 정보를 전달하는 통신 사양이 엔터프라이즈 프린터 사이의 표준 일 수 있습니다. 확실하지는 않지만 프롬프트 자체는 운전자가 직접합니다. – WhiskeyTangoFoxtrot

+0

표준 인쇄 절차를 보여주는 스크린 샷을 추가하십시오. – hakre

답변

1
우리 팀은 [여기 프로젝트 코드]

@PJL SET KJOBMANAGERCODE = "그것을 생성 된 PCL을 가지고 씁니다 다음 PCL 각 문서를 변환하는 실행 파일을 호출하는 코드를 구현하기로 결정했다

"

그러면 생성 된 파일을 프린터가 처리하고 각 작업을 시작할 프린터 스풀에 기록합니다.

도움 주셔서 감사합니다. 각 답변은 구현 계획의 특정 부분에 영감을주었습니다.

1

내가 무엇을 할 것은 :

  • , 즉 노력 (미안 나로부터 도움)
    • 가이 작업에 대한 디렉토리에 보이게하지를 할 것 C++/VB 스크립트를 작성/동의 CLI PARAMS
  • (수는 내부 coun에있는 서버 PHP가
    • 가 1.TXT을 저장 말을 몇 가지 정보와 함께 일부 디렉토리에 파일을 저장하기 ter와 고유해야하며 모든 새로운 것들은 이전보다 큽니다.)/path/infos에 다음과 같은 내용이 있어야합니다 : 1 c : \ temp \ filetoprint.DOCX
  • 비주얼 베이직 스크립트는 디렉토리로보고 첫 번째 파일 (가장 작은 번호의 하나)
    • 을 읽고는 작업 회계 ID에 대한에 인쇄 할 수 = 1
    • 파일의 것을 볼 수 있습니다 C : \ 임시 \ filetoprint.docx
    • 하고
    • 파일을 삭제 :) 인쇄
(중요!)

이제 모든 것은 VB/C++ 프로그래밍 기술에 달려 있습니다. :) BTW : 다른 옵션은 파일을 디렉토리에 저장하는 대신 VBScript/C++ 용 exec() 및 CLI 매개 변수를 사용할 수 있습니다. 그러나 파일 기반 솔루션은 자연스러운 대기열이기 때문에 더욱 강력합니다. 또한 인쇄 프로그램 오류에 강합니다. 완료되면 작업이 제거됩니다. 인쇄 작업이 실패하면 다음 번에 시도합니다. 파일에 대한 유추는 데이터베이스를 사용하여 수행 할 수 있지만 VB/C++에서 DB에 연결하는 것이 얼마나 쉬운 지 잘 모르겠습니다. 파일 시스템이 가장 대체적입니다.)

PHP 부분에는/경로/infos/

의 파일에 JA ID와 파일 이름을 저장합니다. 해결책이 될 수 있지만 순수 PHP (PHP 확장 사용)에서는 그럴 가치가 있다고 생각하지 않습니다.

+0

필자는 팀과 함께 이것을 검토하여 타당성을 판단 할 것입니다. – WhiskeyTangoFoxtrot

1

'작업 계정'은 사용자 이름/암호 프롬프트를 다시 브랜드화하는 드라이버입니다.

PHP 호스팅을 위해 사용하는 운영 체제와 사용자가 이러한 프롬프트를 경험할 때 언급 한 것이 도움이 될 수 있습니다. 그러나 두 가지 모두에 대해 MSWindows를 사용하고 있다는 것이 명백하다고 생각합니다.

간단히 대답하면 프린터 드라이버에 (현재) 내장 된 대화 상자를 건너 뛰어야한다는 것입니다. 프린터 드라이버를 구성하거나 Cups과 같은 대체 인쇄 하위 시스템을 사용할 수 있습니다.

+1

더 많은 연구 (예 : '테스트 파일의 파일로 인쇄')를 수행하면 회계 매개 변수가 PJL처럼 전달됩니다. ** @ PJL SET KJOBMANAGERCODE = "10017"** 여기서 10017은 프로젝트입니다. 내가 선택한 프로젝트의 코드. – WhiskeyTangoFoxtrot

1

PHP를 사용하려면 회계에 필요한 PJL 매개 변수를 전달하는 것이 쉽지 않습니다 (물론 AFAIK). 그러나 소켓 연결을 사용하여 문제의 문서와 함께 원하는 매개 변수를 전달할 수 있습니다. 예 :

> @PJL INFO ID 
@PJL INFO ID 
"LASERJET 4000" 
> @PJL INFO STATUS 
@PJL INFO STATUS 
CODE=10001 
DISPLAY="Ready" 
ONLINE=TRUE 
> @PJL INFO PAGECOUNT 
@PJL INFO PAGECOUNT 
536225 
> @PJL INFO MEMORY 
@PJL INFO MEMORY 
TOTAL=2526160 
LARGEST=1204208 

위의 예는 네트워크 프린터를 제어하기 위해 자신의 연결을 코딩에 흥미 introductionary 기사를 가지고 IronGeek Blog에서입니다. 그러나, 나는 당신의 컴퓨터와 네트워크 프린터 사이에 보내지는 트래픽을 스니핑하여 시작하여 인쇄 명령으로 정확한 명령을 살펴보아야합니다. 이것은 PHP를 통한 소켓 연결을 통해 프로토콜을 쉽게 구현할 수 있도록합니다.

+0

아마도 CLI 기반 EXE (PHP에서 exec()를 통해 호출)를 사용하여 PCL (PJL 매개 변수 아래의 PRN 하단에있는 이진 해시)과 함께 .PRN 파일을 생성 한 다음 PHP를 사용하여 파일 맨 위에 PJL 매개 변수를 작성하십시오. 그런 다음 해당 PRN 파일을 가져 와서 프린터 대기열에 씁니 까? – WhiskeyTangoFoxtrot

+0

예, 그럴 수도 있습니다. 예 : 트래픽 스 니프 (sniffs)를 기반으로 헤더 템플릿을 작성하고 일반적인 변수를 실제 스 니프로 대체하십시오. 따라서 PJL-API 전체를 구현하는 것보다 손쉽게 처리 할 수 ​​있습니다. 이는 문제의 경우에 과도하게 사용됩니다. 불행히도 적절한 프린터 설정이 없으므로 더 이상 당신을 도울 수 없습니다. – Lars

관련 문제