2012-10-04 40 views
21

Có cách chuẩn mực và nền tảng hợp lý để in văn bản (hoặc thậm chí PS/PDF) cho máy in được hệ thống xác định không?In bằng máy in chuẩn từ Python?

Giả sử CPython ở đây, không phải thứ gì đó thông minh như sử dụng Jython và Java printing API.

+0

Loại máy in của bạn là gì? Đây là một hướng dẫn về in ấn cho máy in POS http://goo.gl/rd8lm – Switch

+0

Giả sử in ấn Java có thể làm điều này một giải pháp "thông minh" khác là JPype (một cách để có được cpython và jvm để giao tiếp/chạy mã với nhau) –

Trả lời

21

Thật không may, không có cách tiêu chuẩn để in bằng cách sử dụng Python trên tất cả các nền tảng. Vì vậy, bạn sẽ cần phải viết hàm wrapper của riêng bạn để in.

Bạn cần phải detect the OS chương trình bạn đang chạy trên, sau đó:

Đối với Linux -

import subprocess 
lpr = subprocess.Popen("/usr/bin/lpr", stdin=subprocess.PIPE) 
lpr.stdin.write(your_data_here) 

Đối với Windows: http://timgolden.me.uk/python/win32_how_do_i/print.html

Tài nguyên khác:

Print PDF document with python's win32print module?

How do I print to the OS's default printer in Python 3 (cross platform)?

6

Để in bằng bất kỳ máy in trên mạng bạn có thể gửi/tác vụ in PCL PJL trực tiếp đến một máy in mạng trên cổng 9100.

hãy có một cái nhìn tại liên kết dưới đây mà nên cung cấp cho một khởi đầu tốt:

http://frank.zinepal.com/printing-directly-to-a-network-printer

Ngoài ra, Nếu có một cách để gọi cmd của Windows, bạn có thể sử dụng FTP đặt để in trang của bạn trên 9100. Dưới đây liên kết nên cung cấp cho bạn thông tin chi tiết, tôi đã sử dụng phương pháp này cho máy in HP nhưng tôi tin rằng nó sẽ hoạt động với các máy in khác.

http://h20000.www2.hp.com/bizsupport/TechSupport/Document.jsp?objectID=bpj06165

19

này chỉ được thử nghiệm trên Windows:

Bạn có thể làm như sau:

import os 

os.startfile("C:/Users/TestFile.txt", "print") 

này sẽ bắt đầu tập tin, trong mở mặc định của nó, với động từ 'in ', sẽ in ra máy in mặc định của bạn. Chỉ yêu cầu mô-đun os đi kèm với thư viện chuẩn

+0

theo https://docs.python.org/2/library/os.html#os.startfile điều này chỉ hoạt động trên windows – Buzz

1

Bạn có thể thử thư viện wx. Đó là một thư viện giao diện người dùng nền tảng chéo. Tại đây bạn có thể tìm thấy hướng dẫn in: http://wiki.wxpython.org/Printing

+0

Điều này rất hứa hẹn! Tôi không làm việc với python + in ấn nữa, nhưng nếu in ấn đáng kinh ngạc hoạt động nền tảng chéo với wxpython, tôi sẽ chấp nhận câu trả lời này. –