2012-02-01 8 views
3

Мне нужно преобразовать docx в pdf с помощью java. Я пробовал использовать docx4j, но, хотя это довольно хорошо, docx у меня намного сложнее (форматирование), чем то, что он может обрабатывать. Я решил посмотреть, может ли принтер PDF работать с ними, и хотя они не идеальны, они приемлемы. Теперь я столкнулся с проблемой автоматизации с помощью JAVA, и единственным решением, которое я нашел, был COM с MS Word (я попытался использовать Open Office API, он также не смог обработать форматирование docx).Преобразование Docx в PDF в java

Я нашел несколько сопоставлений COM для java, таких как jacob, и попробовал их, но я не могу найти соответствующие COM-команды для Word для печати. Код, я использую (укладываю несколько штук, которые я нашел через Интернет вместе) составляет:

 String sInputDoc = "fi.docx"; 
     boolean tVisible = false; 
     ActiveXComponent oWord = new ActiveXComponent("Word.Application"); 
     oWord.setProperty("Visible", new Variant(tVisible)); 
     Object oDocuments = oWord.getProperty("Documents").toDispatch(); 
     Object oDocument = Dispatch.call((Dispatch)oDocuments, "Open", sInputDoc).toDispatch(); 

     Dispatch oSelection = oWord.getProperty("Selection").toDispatch(); 
     Dispatch oFind = oWord.call(oSelection, "Find").toDispatch(); 
     Dispatch oWordBasic = (Dispatch) Dispatch.call(oWord, "WordBasic").getDispatch(); 
     Dispatch.call(oWordBasic, "FilePrint"); 

Этот код, однако, только заставляет программу, чтобы попытаться сохранить файл, а не печатать (не уверен, почему).

Теперь могут возникнуть вопросы: как отправить операцию печати в Word? (Я сделал свое исследование, но большую часть времени комментарии в основном открытые слова и печать в формате pdf, но никогда не КАК на самом деле печатать) Если есть лучшие варианты, что это такое? Я рад работать со всем, что имеет бесплатную лицензию.

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

+0

Обновление относительно docx4j: в наши дни в дополнение к конвергенции на основе открытого кода XSL FO с открытым исходным кодом существует отличная коммерческая альтернатива, отличная от FO. См. Далее http://www.docx4java.org/forums/pdf-output-f27/higher-fidelity-pdf-output-now-available-t2117.html – JasonPlutext

ответ

0

Вы можете попробовать комбинировать ODF Converter и JOD Converter. Конвертер ODF может обеспечить разумное преобразование DOCX в ODT, а JOD Converter может обеспечить разумный выход ODT в PDF. Печать - это что-то еще, но я понимаю, что вам нужно было печатать только из-за этого конкретного решения.

+0

Сомнение в том, что вам нужна часть конвертера ODF; последние OO могут открывать docx достаточно счастливо. Так что просто используйте JOD Converter. – JasonPlutext

+0

В настоящее время встроенное преобразование DocX довольно мало. ODFConverter был намного длиннее, чем несколько месяцев назад. Я не оценил последние версии. –

Смежные вопросы