使用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应用程序的打印变得更加容易。