Как напечатать документ Word на Java, не открывая его?

У меня есть веб-приложение на основе J2EE, в котором при нажатии кнопки мне нужно создать файл слова из Java. Я хочу иметь возможность отправить команду печати в этот файл, чтобы файл печатался без необходимости открывать документ и делать это вручную.

Может ли кто-нибудь сказать мне, если это возможно, и если да, то как действовать?

Заранее спасибо.

5 ответов

Это легко создать файл. Взгляните на Apache POI, Java API для доступа к файлам формата Microsoft. На сайте множество примеров.

Что касается печати, я не знаю, возможно ли это. Я думаю, вам всегда нужно открывать его на стороне клиента, чтобы распечатать.

Вы должны создать ActiveX для загрузки содержимого документа и запустить команду печати. Нет другого способа открыть файл на клиентском компьютере и запустить команды.

РЕДАКТИРОВАТЬ: Если вы можете использовать HTML, вы можете просто сделать

<script>
function load() {
window.print();
window.close();
}
</script>

а также

<body onLoad="load()" ...>

во всплывающем окне, чтобы открыть документ и распечатать его. А затем закройте всплывающее окно.

Вы можете использовать простой код AutoIt всего из двух строк. И завершите свою работу, запустите этот файл кода в вашей программе.

http://www.autoitscript.com/site/autoit/

Понравился этот код:

$sRTFfilename = "C:\t\t.rtf" ;Change this path to one of your own 
ShellExecute('"' & $sRTFfilename & '"', "", @ScriptDir, "print", @SW_HIDE)

;-)

Можно ли вместо этого сделать документ в HTML? Если бы вы могли сделать это, то могли бы позволить пользователям печатать через браузер довольно просто. Вам также может быть проще с PDF, по крайней мере, он будет более доступным на разных платформах.

Если вы вынуждены использовать MS Word, тогда вы будете очень ограничены в своих возможностях. Как отметил Леонель, я думаю, что ActiveX будет вашим единственным выбором, и даже тогда документ придется открывать, вы просто сможете запустить Word из браузера автоматически. Возможно, вы даже сможете внедрить экземпляр Word в IE через ActiveX, но я не уверен на 100% в этом.

Поскольку вы специально упоминаете Java как свою среду, вы можете принять во внимание OpenOffice или StarOffice - у них есть API, с которым намного проще общаться из Java, чем с ActiveX или Word с дистанционным управлением.

Он не более тяжелый, чем Word. Ссылки и документы должны быть легко найти.

Я работал в компании, где мы много использовали Remote-Control-Word и, наконец, перешли на StarOffice. Это было не для печати, а для преобразования документов (например, из Word в HTML), но должно быть достаточно похожим.

Конечно, я говорю о "старых версиях Word", но у нас обычно была проблема блокировки Word с каким-то произвольным диалогом, запрашивающим подтверждение того, что Word нашел - операция, которую наш сервер (работающий в фоновом режиме без контакта с рабочим столом), очевидно, явно не мог. Это стало намного лучше после перехода на StarOffice.

Другие вопросы по тегам