2

使用可能なプリンターのリストを取得する方法を知っています。ユーザーがリストから選択して、セッションのデフォルトに設定できるようにしたいと思います。

Windows7の使用

これは簡単に実行できることを知っています。単純なJavaプログラムを作成したいだけです。a:知識を増やすためにb:ここの教師は印刷プロパティで遊ぶことに非常に反対です。

よろしくお願いします

4

3 に答える 3

2

すべてのプリンタのリストを取得する方法を知っているので、デフォルトのプリンタを設定します。

このコードは、デフォルトのプリンタとして設定するプリンタの名前を渡すのに役立ちます。ここで、「MYPRINTER」はプリンタの名前に置き換えます。

PrinterJob pj = PrinterJob.getPrinterJob();
    PrintService[] printServices = PrintServiceLookup.lookupPrintServices(null, null);
    System.out.println("Number of printers configured: " + printServices.length);
    for (PrintService printer : printServices) {
        System.out.println("Printer: " + printer.getName());
        if (printer.getName().equals("***MYPRINTER***")) {
            try {
                pj.setPrintService(printer);
            } catch (PrinterException ex) {
            }
        }
    }

于 2015-01-09T05:24:18.693 に答える
1

このプログラムはEclipseで動作します。

import java.awt.print.PageFormat;

import java.awt.print.PrinterJob;

public class PrinterSetup 
{

    public static void main(String[] args) throws Exception
    {
        PrinterJob pjob = PrinterJob.getPrinterJob();
        PageFormat pf = pjob.defaultPage();
        pjob.setPrintable(null, pf);

        if (pjob.printDialog()) {
          pjob.print();
        }
    }
}
于 2012-08-03T00:49:26.460 に答える
1

OSのデフォルトプリンタを設定するための回避策を作成しました。これは、基本的に、印刷コードを実行する前にデフォルトのプリンターを設定するcmdコマンドを実行するWindowsで機能します。

Desktop desktop = null
if (Desktop.isDesktopSupported()) {
desktop = Desktop.getDesktop()
    desktop.print(file)
 }

これが私の関数です:

public static boolean setDefaultPrinter(String printerName) {
    String defaultPrinterSetter = "wmic printer where name='"+ printerName +"' call setdefaultprinter";
    try {
        setDefaultPrinterProcess = Runtime.getRuntime().exec("cmd /c start cmd.exe /C " + defaultPrinterSetter);
        return true;
    } catch (Exception e) {
        e.printStackTrace();
        return false;
    }
}

この関数にプリンター名を渡すだけで、デフォルトのプリンターになります。

使用可能なすべてのプリンタサービスのリストを取得する関数は次のとおりです。

public static ArrayList<PrintService> availablePrinters() {
    PrintService[] services = PrinterJob.lookupPrintServices();
    ArrayList<PrintService> allServices = new ArrayList<>();

    for (PrintService myService : services) {
        allServices.add(myService);
    }
    return allServices;
}

そして、おそらくコンボボックスなどにリストを追加して、ユーザーが選択できるようにしたいと思います。このようなものになるはずです

    ArrayList<PrintService> availableServices = availablePrinters();
    System.out.println("All printers list:");
    for (PrintService myService : availableServices) {
        myCombo.getItems().add(myService.getName());
        System.out.println(myService.getName());
    }
于 2019-10-08T18:47:35.547 に答える