Файл открывается перед печатью?

#java #printing

#java #печать

Вопрос:

Привет, я использую эту программу для печати своих файлов, она открывает файл перед печатью?я хочу это удалить. есть предложения?

 import java.awt.Desktop;
import java.io.File;
import java.io.IOException;

public class PrintFile {    

  public static void fileToPrint(File fis) {
    try {
      Desktop desktop = null;
      if (Desktop.isDesktopSupported())
      {

        desktop = Desktop.getDesktop();  

      }   
       desktop.print(fis);  
       System.out.print("Printing Document");
    }
    catch (IOException ioe)
    {
      ioe.printStackTrace();
    }

  }
}
  

Ответ №1:

Desktop API в AWT использует встроенную функциональность системы (в данном случае Windows).) Вероятно, JVM вызывает ShellExecute / ShellExecuteEx для файла с помощью команды «печать». Способ, которым Windows обрабатывает команду, заключается в поиске в реестре команды печати типа файла и ее запуске. Для большинства типов файлов это приведет к тому, что приложение, которое обрабатывает его, откроется, а затем автоматически выполнит команду печати.

Короче говоря, я не думаю, что вы сможете использовать Desktop API без открытия приложений. Вам нужно было бы выполнить всю печать самостоятельно (что, конечно, очень сложно).

Комментарии:

1. будет ли этот Desktop API работать и в системе Linux?

2. Я не уверен, какой метод Linux JVM будет использовать для печати, хотя я предполагаю, что это было бы похоже. Несмотря ни на что, задача будет делегирована методу печати файла в собственной системе, который почти всегда будет включать запуск обработчика типа файла, поскольку это действительно единственное приложение, которое знает, как правильно распечатать файл.