2010-03-26 2 views
2

Я ищу хороший стандартный способ генерировать «вывод» в моей программе RCP и печатать его. Это должно работать так, как оно работает на Windows, Mac OS и Linux со стандартным диалогом печати.Печать с помощью программы Eclipse RCP

Мне известно о проекте Birt, но я не мог найти никаких указаний о том, как его реализовать в рамках программы RCP и как вызвать стандартный диалог печати и как передать отчет, сгенерированный Birt, на принтер.

Счастливые для всех намеков.

ответ

2

Я считаю, что Birt project used to use IText. (в настоящее время ITextPDF)

Другое решение - integrate Apache Fop in your RCP project. (см. Apache FOP).
Для того, чтобы работать, it is advised to не реализует рендерер но реализовать пару IFDocumentHandler/IFPainter, как часть нового промежуточного формата (если это был интегрирован в ФОП, которую я не уверен):

  • создайте новый проект 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 оптимизирован для генерации файлов.

В bug 23618 (фиксированные семь лет спустя!) Содержит небольшой пример изготовления печати задания, а SWT FAQ имеет некоторые интересные элементы на принтере (по сравнению с дисплеем, DPI и дифферент). Это вполне понятно и для SWT snippet.
Однако ни один из этих примеров не вызван командами, даже если вы можете define one easily), как только у вас есть Handler (т. Е. Любой класс, который вы написали, способный открыть диалог печати).

Примечание: имейте в виду, что когда вы вызываете диалоговое окно «Печать», только самые последние версии Eclipse Helios 3.6 (а именно 3.6M5 of late January 2010) могут запомнить выбранные пользователем параметры для всех текстовых редакторов до тех пор, пока рабочее место не остановится (то есть:

  • Выбранный принтер
  • Печать в файл
  • предпочтения принтера: это принтер конкретные параметры, как размер бумаги, ориентацию страницы заказа и т.д.)
+0

Спасибо, звучит как очень хороший ответ. Мне не ясно, что ссылка на мою RCP-программу eclipse и стандартный диалог печати. И как вывод «перемещается» на принтер (очередь). – Raven

+0

Еще раз спасибо, но, похоже, мы говорим о двух разных вещах. Я хотел понять, как вызывать и использовать стандартный диалог печати (используя команды, а не действия, поскольку действия должны использоваться больше ...), а затем как получить данные, переданные в принтер. Havent нашел урок об этом. – Raven

+0

@Raven: правда, это была старая запись в формате «FAQ», основанная на действиях, которая «плоха»;) Я обновил свой ответ некоторыми элементами на эту тему, но без окончательных ответов. – VonC