2013-10-29 21 views
8

This answer cho biết cách bật tính năng in thầm lặng trong Google Chrome. Tuy nhiên, tôi có hai trang web phải được in âm thầm bằng hai máy in khác nhau mà không cần tương tác với người dùng. Có cách nào để chọn máy in tự động trước khi gọi window.print() không? Tôi không ngại viết Tiện ích mở rộng của Chrome nếu thực sự cần thiết.Chọn một máy in và in âm thầm

+2

nếu một trong các tài liệu được in là văn bản thuần túy, bạn có thể mở nó bằng một trình bao bọc tệp hàng loạt đơn giản mở notepad và in văn bản. bạn sẽ bật lên một dataURL kiểu mime tùy chỉnh và liên kết tệp lô của bạn với loại đó. sau đó bạn có thể in văn bản bằng cách sử dụng dataURL và html bằng cách sử dụng window.print(). câu trả lời khác là "không". – dandavis

Trả lời

2

Tôi đã kết thúc bằng cách viết một máy chủ trong F # và liên lạc với máy chủ đó thông qua một WebSocket.

+3

bạn có thể cho chúng tôi biết thêm chi tiết về giải pháp của bạn – Amro

+1

@Madame Elyse, tâm trí chia sẻ một số mã ?? – alex

21

Có thể bạn có thể thiết lập máy in của mình bằng Google Clound Print sau đó sử dụng the cloud printing API để âm thầm gửi công việc cho họ. Có vẻ như bạn có thể chỉ định id máy in khi bạn gửi công việc. Bạn có thể cần phải sử dụng một cái gì đó như html2canvas để rasterize trang web.

1

Tôi đã tìm kiếm câu trả lời nhưng có vẻ như không có cách nào để đặt máy in theo chương trình. Do đó giải pháp có thể phức tạp của tôi:

Tạo ứng dụng dòng lệnh có thể chuyển máy in mặc định của hệ điều hành. Có thể một ứng dụng có khả năng vô hiệu hóa và kích hoạt máy in. Nếu bạn đang sử dụng Windows, một ứng dụng .NET có thể làm điều này. Nếu trên Linux có một giao diện dòng lệnh để quản lý máy in (tôi không biết chắc chắn).

Bây giờ, ví dụ như trang PHP, asp.net hoặc ruby, có thể gọi chương trình bật/tắt máy in.

Nếu tính năng này hoạt động, bạn có thể sử dụng các cuộc gọi Javascript để in lần đầu tiên đến máy in một và sau khi chuyển sang máy in hai. Tuy nhiên có một số nhược điểm:

  • Nếu máy in đang in tài liệu bạn không thể chuyển sang máy in hai, vì điều này sẽ tắt máy in. Vì vậy, bằng cách nào đó bạn nên thời gian một công việc phổ biến mất bao lâu.
  • Có rất nhiều chi phí trong giải pháp này. Bạn cần thực hiện các cuộc gọi bổ sung cho việc chuyển đổi giữa các máy in
  • Tính bảo trì hoàn toàn không tối ưu vì bạn cần duy trì chương trình chuyển máy in và dịch vụ web.

Tôi hy vọng bạn có một giải pháp tốt hơn, nhưng tôi muốn chia sẻ suy nghĩ của mình ít nhất. Có thể họ giúp bạn giải quyết vấn đề của bạn.

+0

giải pháp này có hai vấn đề chính (tôi hy vọng chúng ta có thể khắc phục): 1- Thứ nhất: máy chủ của php, asp, ruby ​​hoặc bất cứ thứ gì phải trên cùng một máy, nếu nó là máy khách, và bạn gọi là javascript, nó có thể làm gì? \t 2 giây và quan trọng không kém: nếu bạn có thể (qua javascript) để thay đổi máy in mặc định của SYSTEM, điều này không làm thay đổi máy in mặc định của Chrome, vì nó được cố định vào máy in được sử dụng cuối cùng ........ Tôi có một giải pháp để thay đổi cài đặt hệ thống thông qua javascript, mặc dù phức tạp, nhưng có thể hoạt động hiệu quả, vấn đề bây giờ là: nơi tôi có thể thay đổi máy in mặc định của chrome ?? !! – Amro

5

Nếu bạn đang ở trong một môi trường mà bạn biết, và bạn có đủ đặc quyền (tôi cho rằng, vì bạn biết máy in bạn muốn sử dụng), bạn có thể thử thay đổi nó thông qua dòng lệnh. Đối với điều này, bạn nên gọi

@RunDLL32.EXE printui.dll,PrintUIEntry /y /n "Printer name" 

Tên máy in phải là giá trị được hiển thị trong bảng điều khiển.

Đối gọi dòng lệnh từ javascript, nếu bạn có các điều khiển ActiveX thích được kích hoạt, bạn có thể sử dụng:

var run=new ActiveXObject('WSCRIPT.Shell').Run("commands to run"); 

cũng có, bạn có thể thử với shell.application ShellExecute

var objShell = new ActiveXObject("shell.application"); 
objShell.ShellExecute("cmd.exe", 'RunDLL32.EXE printui.dll,PrintUIEntry /y /n "Printer name"', "C:\\WINDOWS\\system32", "open", 1); 

Để biết thêm thông tin bạn có thể truy cập http://msdn.microsoft.com/en-us/library/windows/desktop/gg537745(v=vs.85).aspx

Tôi chưa thử nghiệm nó, vì vậy chúc bạn may mắn!

+0

giải pháp của bạn trông kỳ lạ, sẽ dùng thử. Bạn có cơ hội nào biết cách tôi có thể bắt chước thiết lập máy in. Tại thời điểm này tôi không có quyền truy cập vào máy in thực tế (nó sẽ là máy in huy hiệu, ngựa vằn hoặc evolis) – alex

+0

Chỉ cần thử nghiệm và hoạt động, tuy nhiên nó chỉ hoạt động trong IE và yêu cầu cho phép "Khởi tạo và điều khiển hoạt động của tập lệnh x không được đánh dấu an toàn cho tập lệnh "trong cài đặt Bảo mật IE, hãy xem [câu trả lời này] (http://stackoverflow.com/a/16801148/3549014) để biết thêm chi tiết. –

Các vấn đề liên quan