Мне нужно выполнить манипуляции с docx (найти/заменить на заполнителях и установить/снять флажки). Поскольку ColdFusion 10 хорошо интегрируется с Java, я решил попробовать использовать библиотеку docx4j Java, которая в основном имитирует OpenXML SDK (платформу .net).ColdFusion & Java (библиотека docx4j)
У меня есть docx4j JAR внутри пользовательской папки, которую я имею установку в моем Application.cfc через JavaSettings (новые в CF10, и я попытался его с другими БАНКИ и он работает):
<cfcomponent output="false">
<cfset this.javaSettings =
{LoadPaths = ["/myJava/lib"], loadColdFusionClassPath = true, reloadOnChange= true,
watchInterval = 100, watchExtensions = "jar,class,xml"} />
</cfcomponent>
сейчас Я пытаюсь использовать этот пример: https://github.com/plutext/docx4j/blob/master/src/main/java/org/docx4j/samples/VariableReplace.java
Но попытка вызвать WordprocessingMLPackage терпит неудачу с функцией CreateObject() о том, что конкретный класс не существует:
<cfset docObj = createObject("java","org.docx4j.openpackaging.packages.WordprocessingMLPackage") />
Любые идеи? Я не являюсь Java-парнем, но там не так много вариантов для манипуляций с docx.
Класс не существует ... хммм..поэтому он не был найден. Вы уверены, что файл jar находится там, где он должен быть? Используется java с Coldfusion 7, но похоже, что они сейчас играют хорошо. – Andreas
Опубликовать полную трассировку стека. Тем не менее, я скажу, что я пытался использовать docxj с CF9 некоторое время назад и не мог заставить его работать. Это ничего против docx4j. Казалось, это довольно хорошая библиотека. Я просто столкнулся с слишком большим количеством конфликтов загрузчика классов между зависимостями docx4j и внутренними библиотеками CF. К сожалению, я не смог понять, как их разрешить - даже с JavaLoader. Я не пробовал это с CF10, хотя, поэтому YMMV. – Leigh
С помощью нового свойства JavaSettings в CF10 у меня не было проблем с загрузкой любых других файлов JAR и доступа к классам. Я подумал, что это был именно этот класс, поэтому я попробовал другой класс, чтобы создать объект из (org.docx4j.openpackaging.parts.WordprocessingML.MainDocumentPart), и он работал отлично. Я буду продолжать обманывать, пытаясь понять, смогу ли я создать/манипулировать документом. Edit: Хорошо, теперь он работает, я думаю, проблема была в том, что я не поставлял конструктор _init() _. –