Я ищу хороший стандартный способ сгенерировать "вывод" в моей программе RCP и распечатать его. Это должно работать так же, как и в Windows, Mac OS и Linux со стандартным диалоговым окном печати.
Мне известен проект Birt, но я не смог найти никаких подсказок о том, как реализовать его в программе RCP, как вызвать стандартный диалог печати и как передать отчет, созданный Birt, на принтер.
Рад всем подсказкам.
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 (исправленная семь лет спустя!) выполнения задания на печать, а FAQ по SWT содержит некоторые интересные элементы о принтере (по сравнению с дисплеем, DPI и обрезкой). Этот фрагмент SWT тоже довольно понятен. /> Однако ни один из этих примеров не вызывается с помощью команд, хотя вы можете легко определить один) после того, как вы настроили обработчик (то есть любой написанный вами класс, способный открывать диалоговое окно печати).
Примечание: при вызове диалогового окна печати помните, что только самые последние выпуски Eclipse Helios 3.6 (а именно 3.6M5 на конец января 2010 г.) может запоминать выбранные пользователем параметры для всех текстовых редакторов до тех пор, пока рабочая среда не будет отключена (что является:
- Выбранный принтер
- Печать в файл
- Параметры принтера: это параметры конкретного принтера, такие как размер бумаги, ориентация порядка страниц и т. Д.)
Вы можете рассмотреть возможность использования скрепок SWT. Это значительно упростило печать из моего приложения RCP.
http://code.google.com/p/swt-paperclips/
Похожие вопросы
Связанные вопросы
Новые вопросы
java
Java - это язык программирования высокого уровня. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег редко используется отдельно и чаще всего используется вместе с [spring], [spring-boot], [jakarta-ee], [android], [javafx], [hadoop], [gradle] и [maven].