Печать с помощью программы Eclipse RCP - PullRequest
2 голосов
/ 26 марта 2010

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

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

Рад за все подсказки.

Ответы [ 2 ]

2 голосов
/ 26 марта 2010

Я считаю, что в проекте 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 и Trim). Этот SWT-фрагмент также вполне понятен.
Однако ни один из этих примеров не вызывается с помощью команд, даже если вы можете определить одну легко ) после того, как вы настроите обработчик (то есть любой класс, который вы написали, способный открыть диалог печати).

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

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

Вы можете рассмотреть возможность использования скрепок SWT. Это сделало печать из моего приложения RCP намного, намного проще.

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

...