2014-03-24 3 views
1

Мне нужно сделать следующее (с Grails):Grails - чтение, настраивает и прикрепляется слово документа

  1. Считывает слово шаблон
  2. Добавить данные пользователя (например, имя, фамилия) в документ
  3. Отправить настроенную слово по почте

Я имею в виду, в Apache POI для чтения .doc, то в документе I будут иметь ключевые слова, например, «°!» # $ »и выполнить настройку. Затем я создам документ, отправлю его (с плагином Grails) и удаляю документ с сервера

Это хороший подход или я что-то забыл? Большое спасибо

EDIT: docx4j: Мои DOCX операции просты, так что я могу пойти с «подход 1» в переменной заменить , но по какой-то причине, следующий пример не работает для меня: https://github.com/plutext/docx4j/blob/master/src/samples/docx4j/org/docx4j/samples/VariableReplace.java

Я получаю:

| Error 2014-03-27 09:10:23,640 [http-bio-9000-exec-5] ERROR errors.GrailsExceptionResolver - SAXParseException occurred when processing request: [POST] /Estrategia/pasantiaCorta/generarDocumento 
Content is not allowed in prolog.. Stacktrace follows: 
Message: Content is not allowed in prolog. 

в строке:

// подход 1 (от 3.0.0, быстрее, если у вас еще нет вызвали демаршаллизацию произойти):

documentPart.variableReplace(mappings); 
+0

В этом подходе нет ничего плохого. Это очень похоже на то, что мы уже делаем, но мы используем JasperReports для создания PDF-файлов. –

ответ

1

Конечно, вы можете использовать POI или docx4j. Для обоих вам будет гораздо лучше использовать docx, а не прежний формат двоичного документа.

Для docx4j (мой проект), см creating-word-docx-documents-dynamically-from-grails

На вашем шаге 2 (добавить пользовательские данные), есть variety of approaches вы можете использовать.

+0

Большое спасибо Джейсону; Я выбрал docx4j, чтобы попробовать; Пожалуйста, прочитайте новое изменение! – Alberici

+0

«Недопустимый контент в прологе» - это парсер XML, жалующийся на то, что у вас есть нежелательные символы в начале какого-либо документа XML - возможно, «часть» вашего документа. Не известная ошибка для docx4j и правильных файлов docx. У вас есть трассировка стека? Если вы можете помещать docx, вызывающий эту ошибку в Интернете, я проверю, как docx4j (без grails) обрабатывает его. Или вы можете сделать это сами, загрузив его в docx4j webapp. – JasonPlutext

+0

Ой, это смущает. Я искал разные решения, но вы снова были правы; проблема была в docx, который я пытался использовать! (У него были «ревизии», поэтому, если вы используете VariableReplace, вам нужно сначала вызвать VariablePrepare в этом случае) Большое спасибо, все работает сейчас :) – Alberici

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