gpt4 book ai didi

java - ColdFusion 和 Java(docx4j 库)

转载 作者:行者123 更新时间:2023-11-30 11:44:18 25 4
gpt4 key购买 nike

我需要进行 docx 操作(查找/替换占位符和选中/取消选中复选框)。由于 ColdFusion 10 与 Java 集成良好,我决定尝试使用 Java 库 docx4j,它基本上模仿了 OpenXML SDK(.net 平台)。

我有一个自定义文件夹中的 docx4j JAR,我通过 JavaSettings 在我的 Application.cfc 中设置了它(CF10 中的新功能,我用其他 JARS 尝试过它并且它有效):

<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 操作的选项。

最佳答案

好的。好像我让一切正常。我只是想弄清楚如何进行查找/替换,以及我想在 docx 文档中做的所有其他事情。到目前为止,这是我的代码,向你们展示它看起来像是在工作(如果您使用的是 CF10,请确保您的 Application.cfc 看起来像原始帖子):

<cfscript>

docPackageObj = createObject("java","org.docx4j.openpackaging.packages.WordprocessingMLPackage").init();
docObj = createObject("java","org.docx4j.openpackaging.parts.WordprocessingML.MainDocumentPart").init();
xmlUtilObj = createObject("java","org.docx4j.XmlUtils").init();
wmlDocObj = createObject("java","org.docx4j.wml.Document").init();
saveToZipFile = createObject("java","org.docx4j.openpackaging.io.SaveToZipFile").init(docPackageObj);

strFilePath = getDirectoryFromPath(getCurrentTemplatePath()) & "testDoc.docx";

wordMLPackage =
docPackageObj.load(createObject("java","java.io.File").init(javaCast("string",strFilePath)));

documentPart = wordMLPackage.getMainDocumentPart();

// unmarshallFromTemplate requires string input
strXml = xmlUtilObj.marshaltoString(documentPart.getJaxbElement(),true);

writeDump(var="#strXml#");

</cfscript>

现在,有人知道如何将 ColdFusion 中的结构转换为 HashMap (或一般的集合)吗?我认为 CF 中的结构实际上是 util.Vector,而 hashmap 是 util.HashMap。我在 Docx4j 中看到的所有演示在占位符中查找/替换的示例都使用此:

HashMap<String, String> mappings = new HashMap<String, String>();
mappings.put("colour", "green");
mappings.put("icecream", "chocolate");

关于java - ColdFusion 和 Java(docx4j 库),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10825539/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com