aAPT
dDebian
fFFmpeg
jJava
mMercurial: Usage
oOCaml
pPostgreSQL

Home Code Java

Java: Printing

Enumerate local printers and print to the first one:

package org.example;

import javax.print.Doc;
import javax.print.DocFlavor;
import javax.print.DocPrintJob;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import javax.print.SimpleDoc;
import javax.print.attribute.Attribute;
import javax.print.attribute.AttributeSet;
import javax.print.attribute.HashPrintRequestAttributeSet;
import java.io.FileInputStream;

public class Main {
    public static void main(String[] args) throws Exception {
        if (args.length != 1) {
            System.err.println("No file specified");
        }

        String filename = args[0];
        PrintService printer = null;

        for (PrintService printService : PrintServiceLookup.lookupPrintServices(null, null)) {
            System.out.println(printService.getName());
            AttributeSet attributes = printService.getAttributes();

            for (Attribute attribute : attributes.toArray()) {
                System.out.printf("    %s: %s\n", attribute.getName(), attributes.get(attribute.getClass()).toString());
            }

            if (printer == null) {
                printer = printService;
            }
        }

        if (printer == null) {
            System.err.println("No printers found");

            return;
        }

        try (FileInputStream in = new FileInputStream(filename)) {
            Doc document = new SimpleDoc(in, DocFlavor.INPUT_STREAM.AUTOSENSE, null);
            DocPrintJob printJob = printer.createPrintJob();
            printJob.print(document, new HashPrintRequestAttributeSet());
        }
    }
}