我正在寻找一种好的、标准的方法来在我的 RCP 程序中生成“输出”并打印它。这应该像在 Windows、Mac OS 和 Linux 上使用标准打印对话框一样工作。

我知道 Birt 项目,但我找不到任何关于如何在 RCP 程序中实现它、如何调用标准打印对话框以及如何将 Birt 生成的报告传递到打印机的提示。

为所有提示感到高兴。

有帮助吗?

解决方案

我相信伯特 项目中用到了IText. 。(现在 文本PDF)

另一个解决方案是 将 Apache Fop 集成到您的 RCP 项目中. 。(看 阿帕奇FOP).
为了做到这一点, 建议 不实施渲染器,而是实施 IFDocumentHandler/IFPainter 对,作为新的中间格式的一部分(如果它已集成到 Fop 中,我不确定):

  • 创建一个新的Java项目,确定包装名称并准备两个实施的类 IFDocumentHandler(文档级)和 IFPainter (页面级别)。
    这些接口可以在包中找到 org.apache.fop.render.intermediate.
  • 要注册新的实现,您需要定义一个 MIME 类型(另请参阅MimeConstants.java)并创建一个扩展类 AbstractIFDocumentHandlerMaker 它充当工厂类。
  • 然后创建一个名为的文本文件 META-INF/services/org.apache.fop.render.intermediate.IFDocumentHandler 您可以在其中编写该“maker”类的完全限定类名。
  • 我可能需要补充的一件事(目前缺少)是 setIFDocumentHandlerOverride() 中的方法 FOUserAgent, ,这样你就可以在一个中设置输出 SWT 窗户。普通 API 针对生成文件进行了优化。

错误 23618 (七年后修复!)包含一个制作打印机作业的小示例,以及 SWT常见问题解答 打印机上有一些有趣的元素(与打印机相比)显示、DPI 和修剪)。这 SWT 片段 也很清楚。
但是,这些示例都不是通过命令调用的,即使您可以 轻松定义一个)一旦你有一个处理程序(即您编写的任何类(能够打开打印对话框)设置。

笔记:请注意,当您调用“打印”对话框时,只有最新版本的 Eclipse Helios 3.6(即 2010年1月下旬3.6M5)能够记住用户为所有文本编辑器选择的选项,直到工作台关闭(即:

  • 选定的打印机
  • 打印到文件
  • 打印机首选项:这些是打印机特定的选项,例如纸张尺寸、页面顺序方向等。)

其他提示

您可以考虑使用SWT回形针。这使得从我的RCP应用程序打印得多,容易得多。

http://code.google.com/p/swt-paperclips/

scroll top