2015-01-27 2 views
0

Я хотел знать, как я могу преобразовать docx4j отображаемое свойство doc в «простой текст». Мой документ схемы как в следующем:docx4j как преобразовать встроенные свойства документа в простой текст при преобразовании docx в pdf

Full Name: [DOCPROPERTY] [DOCPROPERTY] 
Date and Place of Birth: [DOCPROPERTY] [DOCPROPERTY] 

Основная проблема заключается в том, что, когда я конвертировать мой документ в формате PDF, я освобождаю вышеуказанную информацию. Вот код:

String inputfilepath = "...somePath"  
String outputfilepathWord = "...anotherPath" 

WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.load(new java.io.File(inputfilepath)); 
wordMLPackage.save(new File(outputfilepathWord)); 

FOSettings foSettings = Docx4J.createFOSettings(); 
foSettings.setWmlPackage(wordMLPackage); 
OutputStream os = new java.io.FileOutputStream(outputfilepath); 
Docx4J.toFO(foSettings, os, Docx4J.FLAG_EXPORT_PREFER_XSL); 

и в PDF конвертируется я иметь следующую структуру:

Full Name: 
Date and Place of Birth: 

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

Edit:

Использование FieldUpdater

FieldUpdater updater = new FieldUpdater(wordMLPackage); 
updater.update(true); 

уловы за исключением следующего:

java.util.NoSuchElementException 
at java.util.LinkedList.removeFirst(LinkedList.java:268) 
at java.util.LinkedList.pop(LinkedList.java:799) 
at org.docx4j.model.fields.FieldsPreprocessor.inParentResult(FieldsPreprocessor.java:214) 
at org.docx4j.model.fields.FieldsPreprocessor.handleRun(FieldsPreprocessor.java:346) 
at org.docx4j.model.fields.FieldsPreprocessor.handleContent(FieldsPreprocessor.java:180) 
at org.docx4j.model.fields.FieldsPreprocessor.canonicaliseInstance(FieldsPreprocessor.java:142) 
at org.docx4j.model.fields.FieldsPreprocessor.canonicalise(FieldsPreprocessor.java:128) 

здесь:

else if (p.getParent() instanceof java.util.List) { 
      // This does happen! 
      index = ((java.util.List)p.getParent()).indexOf(p); 
      P newP = FieldsPreprocessor.canonicalise(p, fieldRefs); //<<--EXCEPTION 
      //log.debug("NewP length: " + newP.getContent().size()); 
      ((java.util.List)p.getParent()).set(index, newP);  

ответ

0

В соответствии с образцом ConvertOutPDF, вам необходимо:

// Refresh the values of DOCPROPERTY fields 
    FieldUpdater updater = new FieldUpdater(wordMLPackage); 
    updater.update(true); 
+0

jasonplutext видеть мое редактирование пожалуйста – Franky

+0

Вы должны войти в проблему, в том числе теста реплицировать на https://github.com/plutext/docx4j/issues – JasonPlutext

+0

, кажется, что FieldUpdater падает при столкновении с «:» в значение docproperty. – Franky