2

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

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

对所有提示感到高兴。

4

2 回答 2

2

我相信 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,在其中写入该“制造商”类的完全限定类名。
  • 我可能需要添加的一件事(当前缺少)是 中的一个setIFDocumentHandlerOverride()方法,因此您可以在窗口FOUserAgent中设置输出。SWT普通 API 针对生成文件进行了优化。

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

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

  • 选择的打印机
  • 打印到文件
  • 打印机首选项:这些是特定于打印机的选项,例如纸张尺寸、页面顺序方向等。)
于 2010-03-26T07:26:22.100 回答
0

您可以考虑使用 SWT 回形针。这使得从我的 RCP 应用程序进行打印变得非常容易。

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

于 2010-06-17T17:29:05.563 回答