ColdFusion 和 Java(docx4j 库)

2023-12-30

我需要进行 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 https://github.com/plutext/docx4j/blob/master/src/main/java/org/docx4j/samples/VariableReplace.java

但尝试调用 WordprocessingMLPackage 函数失败创建对象()说特定的类不存在:

<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 中的结构转换为哈希图(或一般的集合)吗?我认为CF中的结构实际上是util.Vector,而hashmap是util.HashMap。我在 Docx4j 中看到的所有演示占位符中查找/替换的示例都使用了以下内容:

HashMap<String, String> mappings = new HashMap<String, String>();
mappings.put("colour", "green");
mappings.put("icecream", "chocolate");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ColdFusion 和 Java(docx4j 库) 的相关文章

随机推荐

  • 为什么 TypeScript 编译器通过两次检查来编译其可选链接和空合并运算符?

    为什么 TypeScript 编译器编译它的可选的链接和空合并 https www typescriptlang org docs handbook release notes typescript 3 7 html运营商 and to x
  • 如何将静态库和共享库与 CMake 混合链接

    我有一个在 Linux 上构建的共享库 libtest so 它链接到几个共享库 现在我有一些第三方静态库链接到 libtest so 我知道可以通过直接调用 gcc 来实现 链接时可以混合使用静态库和共享库吗 https stackove
  • C/C++ 中线程本地存储 (TLS) 的实现(多线程)

    我想了解的实施Thread local storage TLS 类型 可用于C 11 as thread local关键字或在C as thread关键词 这维基百科 http en wikipedia org wiki Thread Lo
  • 在下面的过程中如何使用ROW_NUMBER?

    我有以下返回的存储过程A B 以及按降序排列的计数 我正在尝试使用ROW NUMBER 这样我就可以对记录进行分页 但我想要第一行号1成为计数最高的记录 所以基本上 如果我返回一个包含 3 条记录的表 并且计数为30 20 10 然后是行号
  • 为什么 VS Code TypeScript IntelliSense 不建议实现嵌套命名空间中的接口?

    我有一个两级嵌套的命名空间 在全局范围内有一堆接口 declare global namespace A namespace B interface I1 interface I2 例如 我写了一些 C 类A B I1接口实现 class
  • 使用 jQuery load() 和 pushState() 模拟帧

    tl 博士总结 jQuery 的load http api jquery com load 方法调用如下 foo load similar html foo 结果 DOM 结构为 div div div div 使用 jQuery 将页面的
  • Postgres 中的 AFTER 触发器会阻止插入/更新吗?

    如果我在 PostgreSQL 中设置一个 AFTER 触发器在插入 更新后触发 调用软件是否必须等待触发器完成才能将控制权返回给调用软件 或者触发器会在幕后自行运行吗 是的 因为它是在同一事务中执行的 如果触发器失败 插入 更新也会失败
  • 寻找合适的数据结构

    我有N把钥匙 我需要找到一个可以执行以下操作的数据结构 用 O N 构建它 在 O 1 中求最小值 删除 O logn 中的中位数 求n 2 7 最大的数 我考虑过使用最小堆 构建是 O n 最小是 O 1 root 然而 我很难找到一种方
  • 修复使用不同数量的核心进行并行模拟运行的种子

    我想并行化模拟研究以加快速度 并且我还想考虑再现性 特别是 我想获得与使用相同的结果set seed在顺序模拟运行开始时 这是我尝试设置它的示例 我故意使用 inorder T here library doSNOW library rle
  • 使用 Scala API 将 TSV 读入 Spark Dataframe

    我一直在尝试让用于读取 CSV 的 databricks 库正常工作 我正在尝试使用 scala api 将 hive 创建的 TSV 读取到 Spark 数据帧中 这是一个可以在 Spark shell 中运行的示例 我公开了示例数据 以
  • iOS web view的滚动条变成了一半应该是

    使用 Xcode 5 iOS 7 将 Web 视图的框架从 0 45 320 568 20 45 49 更改为 0 0 320 568 20 或将其更改回来后会出现问题 其超级视图是其带有帧 0 20 320 548 到应用程序窗口的 ro
  • 将“myself”从 C# 转换为 VB.NET

    我是一名 C 程序员 爱好 但我想转换为 VB NET 程序员 我看过很多用 C 和 VB NET 编写的帖子 但我需要一些从基础知识 如 void main void 到最高级的解释的链接 注意 微软博客 到目前为止我读到的任何内容 都没
  • 如何通过 cordova 插件添加 android:allowBackup="false"

    我现在正在开发一个Cordova Plugin 我想补充一下 android allowBackup true into AndroidManifest xml 但我不知道如何指定它plugin xml Answer shared http
  • 如何使用react leaflet向地图添加图例,而不使用refs并手动修改DOM?

    我正在使用react leaflet 并想向地图添加图例 目前 我可以通过将地图的引用传递给自定义组件并呈现 null 同时让函数创建 HTML 并将其添加到地图来实现此目的 使用 Jest 和 Enzyme 进行测试对裁判来说是一场噩梦
  • 客户端找不到“socket.io.js”文件

    我正在用 Express Handlebars 和 Socket IO 做一个个人项目 我设置了 Express 和 Handlebars 部分 但当我尝试将客户端连接到 socket io 时 通过将脚本标记放在页面上 它找不到它 我尝试
  • 在大数组上使用多个“.filter”调用是否会降低性能?

    我写了这段代码来过滤单词数组 我为想要过滤掉的每种类型的单词编写了一个过滤函数 并将它们按顺序应用到数组中 const wordArray rawArray filter removeNonDomainWords filter remove
  • 以编程方式启用 JDK 类的日志记录

    好吧 案例很简单 我需要能够以编程方式启用 禁用 JDK 类 HttpURLConnection 的日志记录 public class HttpLoggingTest Just a dummy to get some action from
  • Python 中带有子进程的 Shell 管道

    我阅读了在 StackOverflow 上找到的关于使用 Python 调用 shell 命令的所有线程subprocess 但我找不到适用于我的情况的答案 我想从 Python 中执行以下操作 运行外壳命令command 1 收集变量中的
  • VS 2022 17.1.3 目前不会命中断点

    我正在尝试调试我的 Visual Studio C Blazor 项目 但是每当我尝试设置断点时 都会收到错误 当前不会命中断点 未绑定断点 或 尚未加载任何符号 我一直能够调试直到最新的视觉版本 我已经尝试过以下方法 调试模式而不是发布模
  • ColdFusion 和 Java(docx4j 库)

    我需要进行 docx 操作 查找 替换占位符以及选中 取消选中复选框 由于 ColdFusion 10 与 Java 集成得很好 我决定尝试使用 Java 库 docx4j 它基本上模仿了 OpenXML SDK net 平台 我在自定义文