使用 Eclipse RCP 程序进行打印
-
22-09-2019 - |
题
我正在寻找一种好的、标准的方法来在我的 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应用程序打印得多,容易得多。
不隶属于 StackOverflow