2008-11-24 43 views
9

Tôi có mã/dữ liệu Postscript (?) Trong bộ nhớ (trong một ứng dụng web Java Tomcat) mà tôi muốn gửi trực tiếp đến máy in PS được nối mạng. Có cách nào dễ dàng (tức là chỉ cần mở một cổng và gửi văn bản) để in nó, bỏ qua tất cả các trình điều khiển O/S cụ thể (và hy vọng thậm chí không cần thêm các lọ)? Một liên kết đến mã ví dụ cho thấy làm thế nào để làm điều này?In Java trực tiếp tới máy in mạng Postscript

Cảm ơn, Dave

+0

Bạn có thể khóa cài đặt này xuống một hệ điều hành cụ thể không? –

+1

Vâng, tôi đang phát triển trên Ubuntu và triển khai trên Ubuntu hoặc WinXP. Tôi đã hy vọng để điều trị máy in như một thiết bị với một địa chỉ IP, do đó bỏ qua tất cả các crap O/S cụ thể. –

Trả lời

7

mở ổ cắm TCP tới cổng LPR trên máy in đích.

gửi dữ liệu của bạn; miễn là máy in hiểu nó, bạn thật tuyệt.

đừng quên nguồn cấp dữ liệu Đường khi bạn đã hoàn tất.

(sau đó đóng cổng.)

+3

Trên thực tế có nhiều hơn một chút so với giao thức lpr/lpd hơn là chỉ đường ống dữ liệu, tôi đã viết một bản thực hiện Java một thời gian trước đây tại http://sourceforge.net/projects/jlpr/ –

0

Tôi không chắc chắn bạn có thể làm điều đó mà không cần thư viện thêm.

Điều này example cho bạn biết cách gửi tệp tới máy in mạng nhưng yêu cầu thư viện adobe (dựa trên J2EE Livecycle ES thương mại mặc dù vậy, không phải giải pháp "miễn phí" chung ...).

import com.adobe.livecycle.output.client.*; 
import java.util.*;  
import java.io.File;  
import java.io.FileInputStream;  
import com.adobe.idp.Document;  
import com.adobe.idp.dsc.clientsdk.ServiceClientFactory; 

public class SendToPrinter { 

    public static void main(String[] args) { 
     try{ 
      //Set LiveCycle ES service connection properties        
      Properties ConnectionProps = new Properties(); 
      ConnectionProps.setProperty("DSC_DEFAULT_EJB_ENDPOINT", "jnp://localhost:1099"); 
      ConnectionProps.setProperty("DSC_TRANSPORT_PROTOCOL","EJB");   
      ConnectionProps.setProperty("DSC_SERVER_TYPE", "JBoss"); 
      ConnectionProps.setProperty("DSC_CREDENTIAL_USERNAME", "administrator"); 
      ConnectionProps.setProperty("DSC_CREDENTIAL_PASSWORD", "password"); 
      //Create a ServiceClientFactory object 
      ServiceClientFactory myFactory = ServiceClientFactory.createInstance(ConnectionProps); 
      //Create an OutputClient object 
      OutputClient outClient = new OutputClient(myFactory); 
      //Reference XML data that represents form data 
      FileInputStream fileInputStream = new FileInputStream("C:\\Adobe\\Loan_data.xml"); 
      Document inputXML = new Document(fileInputStream); 
      //Set print run-time options 
      PrintedOutputOptionsSpec printOptions = new PrintedOutputOptionsSpec(); 
      printOptions.setPrinterURI("\\\\Printer1\\Printer"); 
      printOptions.setCopies(2); 

      //Send a PostScript print stream to printer 
      OutputResult outputDocument = outClient.generatePrintedOutput(
        PrintFormat.PostScript, 
        "Loan.xdp", 
        "C:\\Adobe", 
        "C:\\Adobe", 
        printOptions, 
        inputXML); 

      //Write the results of the operation to OutputLog.xml 
      Document resultData = outputDocument.getStatusDoc(); 
      File myFile = new File("C:\\Adobe\\OutputLog.xml"); 
      resultData.copyToFile(myFile); 
     } 
     catch (Exception ee) 
     { 
      ee.printStackTrace(); 
     } 
    } 
} 
0

Kiểm tra java.awt.print. Đây là API in chung trong java.

Thật không may, nó không được định hướng xung quanh việc xử lý nội dung postscript mà bạn đã có. Nó được thiết kế để cho phép bạn "vẽ" trên một mảnh giấy với các API đồ họa 2d java.

2

Bạn có thể gửi trực tiếp đến một máy in mạng trên cổng 9100. Tôi đã viết một bài đăng blog về vấn đề này ở đây:

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

Vấn đề là hầu hết các máy in laser không hỗ trợ PostScript. Bạn thường phải có một add-on máy in cho nó.

+0

bạn có thể chia sẻ lại liên kết này không, bị hỏng – George

+0

Hầu hết các máy in laser * chi phí thấp đều thiếu hỗ trợ postscript. Theo kinh nghiệm của tôi, hầu hết các máy in laser cấp doanh nghiệp bao gồm mô phỏng cấp 3 postscript hiện nay. – RedGrittyBrick

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