1

この Java API を使用: http://docs.oracle.com/javase/6/docs/api/javax/print/package-summary.html

私は自分のニーズに合わせてこのコードを変更しようとしましたが、現在私は持っています:

import java.io.FileInputStream;
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;
import java.io.*;
import javax.print.*;
import javax.print.attribute.*;
import javax.print.attribute.standard.*;

 public class pdfPrinter {

    public static String CompletefileName; // calls from FileUploadController

    public static void main(String args[]) {

        FileInputStream psStream = null;
        try {
            psStream = new FileInputStream(CompletefileName); // this calls a location where the pdf file is stored
        } catch (FileNotFoundException ffne) {
            ffne.printStackTrace();
        }
        if (psStream == null) {
            return;
        }
        DocFlavor psInFormat = DocFlavor.INPUT_STREAM.AUTOSENSE;
        Doc myDoc = new SimpleDoc(psStream, psInFormat, null); // unsure what psStream is, not explained in the api, want to use this to print pdfs, will look at more 
        PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
        PrintService[] services = PrintServiceLookup.lookupPrintServices(psInFormat, aset);
        aset.add(new Copies(5)); //sets copies, will add this as a vairable so users can change this
        aset.add(Sides.DUPLEX); // same as above
        if (myPrinter != null) { // having issues setting myPrinter
            DocPrintJob job = myPrinter.createPrintJob();
            try {
                job.print(myDoc, aset);

            } catch (Exception pe) {
                pe.printStackTrace();
            }
        } else {
            System.out.println("no printer services found"); //error msg
        }
    }
}

現在、マシンのデフォルト プリンターに設定する方法がわからないため、これはコンパイルされませんmyPrinter。また、これは jsf Web アプリ用になります。Web ページのボタンを押してこれを実行できますか?

これは、pdf を印刷するための正しい方法ですか? アドバイスやチュートリアルは本当に役に立ちます

4

2 に答える 2

0

DocPrintJobインターフェイスであるのjavadocを見ました。したがってmyprinter、そのインターフェイスを実装するオブジェクトである必要があります。

そこから、プリンターを接続できるようです: http://docs.oracle.com/javase/6/docs/api/javax/print/DocPrintJob.html

これは、例を示すだけでなく、役立つかもしれません: http://docs.oracle.com/javase/6/docs/technotes/guides/jps/spec/jpsOverview.fm4.html

于 2013-02-07T14:51:52.203 に答える
0

次のように定義する必要があります

PrintService[] services = PrintServiceLookup.lookupPrintServices(flavor, null);
PrintService myService = null;
for(PrintService service : services) {
    System.out.println(service.getName());
    if(service.getName().contains(user.getDefaultPrinter())) {
        myService = service;
        break;
    }
}
于 2016-01-18T07:18:13.353 に答える