2014-05-15 2 views
4

Windows에서 Python을 사용하여 프린터 자동화 코드를 작성하려하지만이를 완료 할 수 없습니다.파일 인쇄 및 프린터 설정 구성

나는 정말로 주제를 이해하지 못하고 약간 놀랐다.이 일을 끝내기위한 "단순한"방법은 존재하지 않는 것 같다. ..? 멋지고 쉬운 방법으로 공통적 인 것들에 접근 할 수있게 해주는 많은 API가 있습니다. 그러나 인쇄는 "특별한"것 같습니다. ..?

  • PDF 파일이 있습니다 : 여기

     

    내가 뭘 원하는지 내가 가지고 것입니다. PDF가 이미 존재합니다. PDF 또는 다른 파일 형식을 만들고 싶지 않습니다. 이 PDF 파일을 인쇄하고 싶습니다. 한 번에 하나의 파일.

  • 파일이 가로 및 세로 레이아웃 일 수 있습니다. 파일의 크기는 A4, A3, A2, A1 및 A0 중 하나 일 수 있습니다.

  • 정상적인 "실제"프린터를 사용하여 파일을 인쇄하고 싶습니다. 프린터는 네트워크 장치이며 해당 IP를 사용하여 연결되어 있습니다. 다양한 네트워크 프린터가 있으며 그 중 하나 이상을 사용할 수 있기를 바랍니다. 일부는 소형 A4 프린터이며, 일부는 대형 사무 기기 (올인원 스캔, 복사, 인쇄, ...)이며 대형 플로터 (최대 A0 크기의 용지)도 있습니다.

  • "이 PDF 파일을이 프린터로 인쇄"하고 싶습니다.

  • 인쇄 크기를 구성하는 것이 좋습니다. 원본 크기로 "그대로"PDF를 인쇄하고 싶습니다. 그러나 작은 크기의 용지에도 큰 형식을 인쇄 할 수 있기를 원합니다. 마찬가지로 PDF 자체는 A0 크기이지만 A3 용지에 인쇄하려고합니다. 또는 원본 PDF 크기가 A2이고 A4로 인쇄하려고합니다.

  • Windows 7 컴퓨터 (SP1, 64 비트)에서 사용하고 싶습니다. 그리고 파이썬으로 코딩하려고합니다. 저는 파이썬 2.7에서 사용하고 있습니다. 파이썬 3에서는 사용할 수없는 타사 모듈을 사용하고 있습니다. 일반적으로 파이썬 스크립트를 통해 트리거 될 수있는 모든 작업 솔루션은 환영합니다. 할 수있는 매우 "복잡한"작업이 될 것 같지 않습니다

나에게

 

. "손으로"작업하는 것은 매우 쉽고 간단합니다. 문서를 선택하고, 인쇄를 시작하고, 프린터를 선택하고, 용지 크기를 선택한 다음 인쇄하십시오.

코드로 수행하는 것은 다소 어려워 보입니다. 여기까지 지금까지 왔던 것이 있습니다.

  • "Acrobat Reader", "Foxit Reader"등과 같은 명령 행 인쇄에 사용할 수있는 다양한 프로그램이 있습니다. 이러한 프로그램이 제공하는 명령을 사용하여 인쇄하는 것이 완벽하지만 프린터 설정에 액세스하여 용지 크기를 구성 할 수는 없습니다.

  • 특별한 명령 줄 인쇄 도구가 있지만 유용한 프리웨어를 찾을 수 없습니다. "VeryPDF"명령 줄 도구를 사용해 보았지만 용지 크기와 관련하여 사용할 때 약간의 문제가있었습니다. 다양한 레터 형식 및 다양한 다른 기능을 완벽하게 지원하는 반면, 필자가 필요로하는 용지 크기 (A4 ~ A0)는 지원되지 않습니다. A4 및 A3 용 사전 설정이 있습니다.이 도구에는 측정 값 (/ pt/mm)을 전달하여 사용자 정의 용지 크기를 사용할 수있는 옵션이 있지만보기와 같이 작동하지 않습니다.이 방법을 사용할 때 항상 A4로 인쇄됩니다.

  • win32print를 포함하여 python 용 win32 패키지를 찾았습니다. 나는 이걸 얻지 못해. API는 프린터 찾기, 추가 또는 제거, 프린터 대기열 나열, 프린터 작업 시작 및 중지 등의 기능을 제공하지만 파일을 인쇄 할 수는 없습니다. 이 API는 파이썬 코딩으로 인쇄 데이터를 생성하고 "텍스트"및/또는 그래픽을 "파일"처럼 푸시하여 프린터 작업을 추가하는 데 사용할 수있는 것처럼 보입니다. 프린터가 이미 이해하고있는 형식입니다.

     

그리고이 win32print 모듈을 사용할 때, 나는 제대로 동작하지 않습니다. 여기에 설명 된대로

from win32print import * 
printer = GetDefaultPrinterW() 
handle = OpenPrinter(printer) 
info = GetPrinter(handle, 2) 
cap = DeviceCapabilities(info['pPrinterName'], info['pPortName'], DC_PAPERS) 
ClosePrinter(handle) 

을 ... : : 여기 내가 사용하려고 부여 됨으로써 조각입니다

http://timgolden.me.uk/pywin32-docs/win32print__DeviceCapabilities_meth.html

는하지만 그건 그냥 반환

NameError: name 'DC_PAPERS' is not defined 

i '를 할 때마다 일어나는 그런 상수가 필요한 함수를 사용하려한다. 내 시스템에 하나의 상수가 정의되어 있지 않고 이유를 모르겠습니다.

하지만 제대로 작동하는 경우에도이 API를 사용할 수 있는지 여부는 알 수 없지만 모든 사용 예는 프린터에 텍스트 문자열을 전송하는 방법을 보여줍니다. 그건 내가 필요로하는 것이 아니에요. 내가 알고 싶은 것이 아닙니다.

 

파일을 인쇄하고 단순하고 간단한 방법으로 인쇄 크기를 설정할 수있는 작업 솔루션이 있습니까?

아이디어와 힌트를 환영합니다!

+1

인쇄 과정을 잘못 이해합니다. 프린터 드라이버가 파일을 허용하지 않으면 응용 프로그램을 사용하여 파일을 Windows API 호출로 변환합니다. 이것이 프로세스가 "단순하지 않은"이유입니다. 프린터가 자체적으로 파일을 디코딩 할 수있는 경우에도 일반 처리를 우회하려면 특수 원시 모드로 드라이버를 열어야합니다. –

답변

0

Tim Golden 웹 사이트의 "How To Print"페이지를보십시오. 이 페이지는 귀하가 귀하의 질문에 답변 한 2014 년 동일합니다. 프린터 설정을 조작하는 JPG 파일을 인쇄하는 예제가 있습니다.

당신이하고있는 일에 대한 완벽한 예는 아니지만 올바른 길을 찾아야합니다.

DC_PAPERS는 win32con에 정의되어

당신이 알고 야지 어떻게
import win32con 
x = win32con.DC_PAPERS 

, 나는 아무 생각이 없습니다. 아마도 그것은 Python 외부의 Win32API에 이미 익숙한 사람들에게 "명백한"것입니다 ...