java - 如何从 java 程序打印文件的任何风格(文本、word、pdf、图像等)?

标签 java

我需要一个 Java 程序来将任何文件打印到默认/选定的打印机(实际上我使用的是 RICOH 通用 PostScript 打印机,它可以将任何文件打印到 PostScript 文件)。此外,我将从打印机读取该流并将其写入 PostScript 文件。我已经尝试了下面来自谷歌的示例程序,但是当我得到 PostScript 文件时,它是某种未知格式。

public class PrintToFileWithJava {
    private static boolean jobRunning = true;

public static void main(String[] args) throws Exception {
       InputStream is = new BufferedInputStream(new FileInputStream("Authentication in Hive.pdf"));

  DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
  PrintService service = PrintServiceLookup.lookupDefaultPrintService();
  DocPrintJob printJob = service.createPrintJob();
  printJob.addPrintJobListener(new JobCompleteMonitor());

  Doc doc = new SimpleDoc(is, flavor, null);
  PrintRequestAttributeSet attributes = new HashPrintRequestAttributeSet();
  printJob.print(doc, attributes);

  while (jobRunning) {
    Thread.sleep(1000);
  }
 System.out.println("Exiting app");
  is.close();
}

private static class JobCompleteMonitor extends PrintJobAdapter {
        @Override
        public void printJobCompleted(PrintJobEvent jobEvent) {
            System.out.println("Job completed");
            jobRunning = false;
        }
    }

}

如有任何建议,我们将不胜感激。

最佳答案

你想做的事情在 Java 中是可能的,但并不简单。您必须编写一个框架,它可以读取您想要支持的所有文件类型,并且可以使用 Java Graphics2D API 呈现这些文件。

工作量很大。您可以使用像 ImageMagick 这样的现有框架让您的生活更轻松。它可以将许多图像格式转换为 PostScript。

要打印 Word 和其他专有格式,您需要特殊的转换器。如果安装了应用程序,您可以尝试Desktop.print() .如果没有,那么您将不得不找到一个可以为您呈现这些文档的库。

关于java - 如何从 java 程序打印文件的任何风格(文本、word、pdf、图像等)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29692468/

相关文章:

java - 德国电话号码格式的正则表达式

java - 使用 Libgdx 写入和读取 JSON

java - 如何运行从 Android 源代码获取的应用程序源代码?

java - 为什么线程在引用更改时不释放锁

java - Socket clientSocket = serverSocket.accept();无法解决

java - 发送一个 Object 类型的对象而不是 String - 多态性

java - 我怎样才能 "delimit"来自给定字符串的整数?

java - 如何使用具有多个选项的 JOptionPane? java

java - 重新加载数据的问题

java - JPanel 不更新,无论我尝试什么