के साथ प्रिंटर को कच्चे डेटा को कैसे भेजना है मैं एक साधारण प्रोग्राम बनाने की कोशिश कर रहा हूं जो प्रिंट करने के लिए प्रिंटर को स्ट्रिंग भेजता है।जावा
import javax.print.Doc;
import javax.print.DocFlavor;
import javax.print.DocPrintJob;
import javax.print.PrintException;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import javax.print.SimpleDoc;
public class PrinterTest {
public static void main (String [] args) throws PrintException {
DocPrintJob job = null;
PrintService[] printServices =
PrintServiceLookup.lookupPrintServices(null, null);
System.out.println("Number of print services: " + printServices.length);
for (PrintService printer : printServices) {
System.out.println("Printer: " + printer.getName());
if (printer.getName().contains("ZM400")) {
String hello = "Hello";
DocFlavor flavor = DocFlavor.STRING.TEXT_PLAIN;
Doc doc = new SimpleDoc(hello, flavor, null);
job = printer.createPrintJob();
job.print(doc, null);
}
}
}
}
मैं एक जार फ़ाइल के रूप में इस निर्यात और कमांड लाइन पर चला (विंडोज़) का उपयोग करते हुए: यह वही है मेरा कार्यक्रम की तरह लग रहा है
java -jar PrinterTest.jar
कार्यक्रम चलाता है, और सभी के माध्यम से पाशन शुरू होता है कंप्यूटर पर स्थापित प्रिंटर।
Exception in thread "main" sun.print.PrintJobFlavorException: invalid flavor
at sun.print.Win32PrintJob.print(Unknown Source)
at PrinterTest.main(PrinterTest.java:21)
नहीं
वास्तव में यकीन है कि क्या मैं गलत कर रहा हूँ यहाँ, प्रिंटर है कि मैं के लिए वास्तव में है दिखाने तलाश कर रहा हूँ के रूप में: लेकिन जब यह प्रिंटर मैं देख रहा हूँ करने के लिए हो जाता है, मैं तो निम्न त्रुटि प्राप्त ।
संदर्भ के लिए नीचे दिए गए लिंक उपयोग करना: http://docs.oracle.com/javase/7/docs/technotes/guides/jps/spec/jpsOverview.fm4.html
-Tried DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE
करने के लिए DocFlavor flavor = DocFlavor.STRING.TEXT_PLAIN
बदल रहा है, लेकिन मैं त्रुटि IllegalArgumentException: data is not of declared type
मिलता है।
- Doc doc = new SimpleDoc(hello, flavor, null)
से Doc doc = new SimpleDoc(hello, null, null)
बदलने की कोशिश की गई, लेकिन ऐसा लगता है कि आपको वहां एक स्वाद जोड़ने की आवश्यकता है।
- प्रिंटर को बदलने की कोशिश की, क्योंकि मूल प्रिंटर जिसे मैं कॉल करने का प्रयास कर रहा था वह एक लेबलिंग प्रिंटर था, लेकिन इससे कोई फर्क नहीं पड़ता।
कोई विचार क्या मैं यहां गलत कर रहा हूं? इस कोड को ठीक करने और इसे प्रिंट करने के लिए मैं क्या कर सकता हूं?
अद्यतन
मैं करने के लिए (कुछ) काम यह मिल गया।
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import javax.print.Doc;
import javax.print.DocFlavor;
import javax.print.DocPrintJob;
import javax.print.PrintException;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import javax.print.SimpleDoc;
public class PrinterTest {
public static void main (String [] args) throws PrintException, IOException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Enter the name of the printer: ");
String printerName = bufferedReader.readLine();
System.out.print("Enter a short message of what you would like to print here: ");
String printerMessage = "PRINTER MESSAGE: " + bufferedReader.readLine();
boolean printerCheck = false;
DocPrintJob job = null;
PrintService[] printServices = PrintServiceLookup.lookupPrintServices(null, null);
System.out.println("Number of print services: " + printServices.length);
for (PrintService printer : printServices) {
System.out.println("Printer: " + printer.getName());
if (printer.getName().contains(printerName)) {
InputStream inputStream = new ByteArrayInputStream(printerMessage.getBytes());
DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
Doc doc = new SimpleDoc(inputStream, flavor, null);
job = printer.createPrintJob();
job.print(doc, null);
printerCheck = true;
}
}
if (printerCheck == false) {
System.out.println("The printer you were searching for could not be found.");
}
}
}
क्या मैं एक इनपुट धारा में स्ट्रिंग डाल दिया गया था था, और DocFlavor.INPUT_STREAM.AUTOSENSE
करने के लिए DocFlavor.STRING.TEXT_PLAIN
बदल: यह क्या मैं अब तक है।
मेरी केवल हिचकी अब कि कुछ भी नहीं वास्तव में प्रिंट जब तक कुछ और प्रिंटर के लिए भेजा जाता है। संदर्भ के लिए अब इसे यहां छोड़कर।
रास्ता वापस अंधकार युग में, अंतिम पृष्ठ बाहर स्क्रॉल करने के लिए एक प्रिंटर पाने के लिए, आप इसे एक ASCII फार्म फ़ीड बाइट भेजने के लिए किया था '0xC' (नियंत्रण-एल टाइप करके एक डॉस टर्मिनल पर उत्पादित, और आमतौर पर '^ एल' का प्रतिनिधित्व किया जाता है)। यदि आपका प्रिंटर ग्रीन-बार प्रशंसक-गुना पेपर की एक अखंड धारा को उत्सर्जित करने के बजाय अलग-अलग चादरों को निकाल देता है, तो यह ज्ञान शायद सहायक नहीं है ... जब तक प्रिंटर को डॉट-मैट्रिक्स सीरियल प्रिंटर पर वापस जाने के लिए पिछड़ा-अनुकूल नहीं बनाया गया था । (मुझे वह बेहद आकर्षक लगेगा।) –