【问题标题】:printer driver implementation in javajava中的打印机驱动程序实现
【发布时间】:2011-09-01 08:15:14
【问题描述】:

我需要实现一个自定义打印机驱动程序,它在后台执行以下操作:

  1. 为要打印的文档创建 PDF 文档
  2. 将创建的 PDF 文档发送到预定义的电子邮件地址或 调用网络服务并在那里传输文档

pinterdriver 应该适用于 windows 和 mac osx。我首选的实现语言是 Java。

这可以用 Java 实现吗? 是否有可将编码工作量降至最低的可用框架?

【问题讨论】:

  • 不,您不能在 Java 中创建 (Windows) 打印机驱动程序,因为它们(与任何 Windows 驱动程序一样)必须使用 WDK 构建,它带有 C++ 编译器 AFAIK。而且,OS X 不再正式支持 Java。
  • @Joonas Pulakka,垃圾! OS X 支持 Java。我的同事在他最新的 Mac OS X 上运行 Java 6。您听说过 JNI 吗?
  • @精英绅士:As of the release of Java for Mac OS X 10.6 Update 3, the version of Java that is ported by Apple, and that ships with Mac OS X, is deprecated。当然,仍然可以通过openjdk project 在 OS X 上使用 Java,但官方支持已被取消。现在是 Java 支持 OS X,而不是其他方式。是的,我实际上已经完成了一些 JNI (C) 代码。怎么样?
  • @Joonas 在 Lion 中,当操作系统检测到您正在尝试运行 Java 应用程序时,操作系统会提示您下载 Java,即 Apple 的 Java 实现。它仍然受到支持和更新以启动。然而,从长远来看,Apple 提供的 JDK/JRE 将会消失,但 Apple 正在努力将 OS X 特定的东西与 Open JDK 合并,最终目标是与 OS X 环境良好集成的 Open JDK。这将使 OS X 用户能够快速获得最新最好的 JRE,并确保更好的跨平台支持。
  • @Joonas Pulakka,哎呀......对不起,我从来不知道苹果男孩受到影响。至于打印机驱动程序。 OP 不想编写特定于操作系统的驱动程序,但想捕获打印并将其转换为 PDF 并通过电子邮件发送给其他人。

标签: java frameworks printing driver


【解决方案1】:

您确定“司机”真的是您要在这里寻找的词吗?通常,当人们说打印驱动程序时,它们实际上是指将文档数据转换为打印机命令的东西。我认为您确实在寻找某种预处理器。

无论如何,如果你想让它看起来像操作系统的打印机,那么纯粹用 Java 几乎是不可能的。最好的办法是为每个使用 JNI(或仅调用 JVM)的平台创建驱动程序,进行处理,然后将其转发到打印机。

虽然我不知道类似的方法是否适用于 Windows,但您想要在 OS X 上做的几乎是微不足道的。Apple 已经提供了一个 cups-pdf 服务,可以将任何可打印的文档转换为 pdf,所有你所要做的就是获取该输出,将其转发到需要去的地方,然后将其转发到打印机,无需在 Java 中执行任何操作。

有关如何执行此操作的示例,请查看以下项目:

https://bitbucket.org/codepoet/cups-pdf-for-mac-os-x/downloads

【讨论】:

  • 我称之为“驱动程序”,因为用户应该选择一个打印设备,然后“打印”文档。司机会要求提供传真号码,然后在后台向我们的传真服务器发送一封电子邮件,最终将传真发送到输入的号码。你还知道 windows 的框架/示例吗?
  • cups-pdf 是开源的 AFAIK,这意味着您可能可以编译它并在 Windows 下运行它,但我不确定。它当然不像 OS X 那样与 OS 深度集成(在 OS X 中,您基本上可以将任何内容打印到 pdf 中)。
【解决方案2】:

Windows 可以配置为将打印机输出发送到文件。您可以在 Windows 中创建使用 PostScript 驱动程序的打印机,并将其写入 c:\myfile.txt 在 Windows 中:添加打印机,选择本地打印机,选择创建新端口,然后键入要使用的文件名(完整路径)。然后选择你想要的驱动程序,你的 Java 程序必须解析它。通用文本在某些情况下可能很有用,如果您需要所有格式并可以处理解析它,则可以使用 Postscript。

与现有端口下的“文件:”选项不同,它不会要求用户输入文件名。每次都会自动保存到指定的文件中。

您的 Java 程序可以监视此文件的更改,然后处理它收到的数据。

【讨论】:

    猜你喜欢
    • 2017-12-16
    • 2021-12-07
    • 1970-01-01
    • 2013-09-19
    • 2011-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多