#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 будет использовать для печати, хотя я предполагаю, что это было бы похоже. Несмотря ни на что, задача будет делегирована методу печати файла в собственной системе, который почти всегда будет включать запуск обработчика типа файла, поскольку это действительно единственное приложение, которое знает, как правильно распечатать файл.