使用Eclipse RCP程序打印

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

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

所有提示都很开心。

我相信Birt 项目曾经使用过IText 。 (现在ITextPDF )

另一种解决方案是将Apache Fop集成到您的RCP项目中 。 (参见Apache 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()方法,因此您可以在SWT窗口中设置输出。 普通API针对生成文件进行了优化。

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

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

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

您可以考虑使用SWT Paperclips。 这使得我的RCP应用程序的打印变得更加容易。

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