Среда: word2007 на windows7.
Я разбираю файл word (.docx), используя последнюю библиотеку Apache POI (3.16), и успешно уточняю тексты, изображения и встроенные математические уравнения.
Чтобы разобрать встроенные уравнения математического типа, я использовал следующий API
List<XWPFPictureData> allPictures = doc.getAllPictures();
int i = 0;
for (XWPFPictureData picture: allPictures) {
if (picture.getFileName().endsWith(".wmf")) {
FileUtils.writeByteArrayToFile(new File(i + ".wmf"),
picture.getData());
i++;
}
}
Теперь я хочу создать новый файл word (docx), добавив в него тексты, изображения и встроенные уравнения математического типа.
Добавьте текст: XWPFRun run = para.createRun(); run.setText("xxx")
.
Добавить картинку: XWPFPicture xwpfPicture = run.addPicture(pictureData, pictureType, filename, Units.pixelToEMU(width), Units.pixelToEMU(height));
Добавить wmf: String rId = doc.addPictureData(new FileInputStream(wmfFilePath), Document.PICTURE_TYPE_WMF);
Проблема в том, что wmf теперь невидим, а как сделать его видимым и разместить в нужном месте? или сказать, что wmf связан с созданным прогоном.
Видел примеры poi и тестовые примеры, но до сих пор не могу найти API или метод. http://svn.apache.org/repos/asf/poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/ http://svn.apache.org/repos/asf/poi/trunk/src/examples/src/org/apache/poi/xwpf/usermodel/examples/
Есть один связанный с этим вопрос: Как добавить встроенные уравнения в файлы docx с помощью Apache POI?
Разница в том, что я просто хочу добавить проанализированные файлы wmf в новый файл слова, а не программно писать некоторые математические уравнения.
Может кто-нибудь помочь?
например: у меня есть слово, которое имеет одно уравнение математического типа, при двойном щелчке по нему открывается редактор математического типа, поскольку на машине установлено программное обеспечение математического типа.
Разобрал его, используя API POI:
doc.getAllPictures(); FileUtils.writeByteArrayToFile (новый файл (i + ".wmf"), picture.getData());
Теперь уравнение математического типа преобразуется в файлы wmf на диске.
run.addPicture(pictureData, Document.PICTURE_TYPE_WMF, имя файла, Units.pixelToEMU(ширина), Units.pixelToEMU(высота)) он может добавить wmf как изображение, но я хочу восстановить слово, когда пользователь дважды щелкает слово уравнение, редактор mathtype открыт.
POI может анализировать уравнение математического типа в слове в файлы wmf, есть ли способ записать слово как исходное?
doc.getAllPictures()
находитWMF
картинок в*.docx
файлах, то они должны были попасть туда до того, как poi начал читать. И самWord 2007
не будет помещать формулы в видеWMF
картинок в*.docx
файл. Он преобразует формулы в изображения при сохранении какWord 97/2003 format
*.doc
. Но после этого они только картинки, а не формулы. - person Axel Richter   schedule 08.07.2017OLEObject
, встроенный вWord
, а не реальная формула, вставленная с использованиемInsert - Formula
. Нет,apache poi
пока не поддерживает создание такихOLEObject
вXWPF
. Добиться этого можно было, заморачиваясь специальнымиXML
для этого в/word/document.xml
и доставая откуда-то нужные/word/embeddings/oleObject1.bin
. Но я этого делать не буду, так как такой подход древний (более 10 лет). - person Axel Richter   schedule 08.07.2017XML
в/word/document.xml
. Создайте*.docx
, имеющийOLEObjects
типаMathType 6.0 Equation
, используяWord
. Эти*.docx
файлы являютсяZIP
архивами. Разархивируйте его и посмотрите на/word/document.xml
. Там вы увидите то, что нужно. И вам также понадобится/word/embeddings/oleObject1.bin
из этого архива. Это двоичный файл, который реагирует на двойной щелчок. - person Axel Richter   schedule 08.07.2017