将 WordprocessingMLPackage 保存到 ByteArrayInputStream

2024-04-16

如何将 org.docx4j.openpackaging.packages.WordprocessingMLPackage 实例保存到 ByteArrayInputStream 中,然后可以从服务器下载它。

Thanks.


您无法保存到ByteArrayInputStream... 曾经。 AByteArrayInputStream is an InputStream并且你不/不能写信给InputStream.

但是你可以写一些东西到ByteArrayOutputStream,获取字节数组,并创建一个ByteArrayInputStream数组的包装器。

(我假设有一种方法可以将这些实例之一保存到 OutputStream 或 Writer ...)


嗯,我的假设是错误的,而且WordprocessingMLPackage's only save方法保存到File。 (我猜有人没有得到关于如何设计灵活的 I/O api 的备忘录......)

但是源代码(here http://www.jarvana.com/jarvana/view/org/docx4j/docx4j/2.7.1/docx4j-2.7.1-sources.jar!/org/docx4j/openpackaging/packages/WordprocessingMLPackage.java?format=ok)提供了一些关于如何自己实现它的线索。方法如下:

public void save(java.io.File docxFile) throws Docx4JException {

    if (docxFile.getName().endsWith(".xml")) {

        // Create a org.docx4j.wml.Package object
        FlatOpcXmlCreator worker = new FlatOpcXmlCreator(this);
        org.docx4j.xmlPackage.Package pkg = worker.get();

        // Now marshall it
        JAXBContext jc = Context.jcXmlPackage;
        try {
            Marshaller marshaller=jc.createMarshaller();

            marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,
                                                   Boolean.TRUE);
            NamespacePrefixMapperUtils.setProperty(marshaller, 
                    NamespacePrefixMapperUtils.getPrefixMapper());          

            marshaller.marshal(pkg, new FileOutputStream(docxFile));
        } catch (Exception e) {
            throw new Docx4JException("Error saving Flat OPC XML", e);
        }   
        return;
    }

    SaveToZipFile saver = new SaveToZipFile(this); 
    saver.save(docxFile);
}

看起来您应该能够在帮助程序类中复制此代码,并调整它以保存到OutputStream而不是(具体地)FileOutputStream。请注意,SaveToZipFile班级有替代方案save写入的方法OutputStream.

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

将 WordprocessingMLPackage 保存到 ByteArrayInputStream 的相关文章

随机推荐

  • 有哪些 CSS 属性可以让元素脱离正常流程?

    有哪些 CSS 属性可以让元素脱离正常流程 这些属性可以是 float position absolute 等 这个问题涉及正常流程的所有可能的改变 只有以下属性会影响任何给定元素的正常流程 float right left positio
  • 在共享主机上安装 PHP 扩展

    我需要启用mcrypt https www php net manual en book mcrypt php我的网站上的功能 除了我在共享主机上 运行 Linux 并且显然无权访问php ini文件 似乎确实有安装 PEAR 模块的选项
  • 在 R 中从 MySQL 获取 UTF-8 文本返回“???”

    我一直在尝试从 R 获取 MySQL 数据库中的 UTF 8 文本 我在 OS X 上运行 R 通过 GUI 和命令行都尝试过 其中默认区域设置是 en US UTF 8 并且没有无论我尝试什么 查询结果都显示 对于所有非 ASCII 字符
  • Plotly 中子图的标题

    我正在尝试在 Plotly 中制作 3x3 子图的网格 我正在尝试为每个子图获取标题并在顶部获取主标题 但我似乎无法让它发挥作用 我看到这个很棒的网站 http takwatanabe me data science plotly layo
  • Python multiprocessing.Pool在MacOS和Linux系统上的不同性能

    我是 Python 初学者 我在项目中使用了 multiprocessing Pool 来提高性能 这是我使用 multiprocessing Pool 的代码片段 我在驻留服务器的开头构建池 并在每次服务器收到请求时使用 Pool app
  • 不定长度的数组[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如何在未知长度的排序数组中找到随机元
  • MFC:如何在一个函数中捕获对话框每个控件的设置焦点

    我有 n 个对话框 它们具有相同的基本对话框 每个对话框都有自己的控件 编辑框 组合框 列表控件 etc 在基本对话框中 如何设置每个控件的焦点消息 例如 给出一个消息框 text Hello I got focus my ID is d
  • XAMPP:无法启动 Apache (Windows 10)

    我正在使用 XAMPP 并且可以启动 Apache 但是 MySQL php我的管理员 https en wikipedia org wiki PhpMyAdmin start 当我开始时 我收到此错误 10 07 49 Apache Er
  • 无法更改视图中绘制的圆圈的颜色

    我正在尝试更新我在子类中创建的圆圈的颜色UIView通过在类中创建一个方法来更新颜色 如下所示 但颜色不会改变 import UIKit class badge UIView struct mine static var p UIBezie
  • Linux 文件权限的正则表达式(数字表示法)

    我一生都无法找出正确的正则表达式 我正在寻找的是一个正则表达式来匹配 Linux 文件权限的有效数字表示 例如 740 表示全部读取无 777 表示全部全部 到目前为止 我已经尝试过以下操作 strtotest 740 echo strto
  • 如何从视图范围的 JSF bean 获取请求参数?

    我有查看范围bean 应该在 init PostConstruct 上访问请求 URL 中的值并在其生命周期内存储它们 我了解到 为了获得价值http请求 我需要以下代码 ManagedProperty param x private in
  • iOS 相当于 Android 片段/布局

    在 Android 中 您可以使用 Fragments 只开发一款针对手机和平板电脑的应用程序 这样您就可以拥有不同的 UI 您甚至可以仅使用布局并对代码设置一些条件来运行平板电脑或手机逻辑 我需要为 iPhone 和 iPad 开发一个应
  • 仅根据lucene中term出现次数较多的文档来计算分数

    我开始研究基于 lucene net 引擎的简历检索 文档 组件 它工作得很好 它会获取文档并根据 VSM 背后的理念是 查询词出现在 a 中的次数 文档相对于数量 该术语出现在所有 集合中的文档越多 该文件的相关内容是 询问 Lucene
  • 在 sphinx 侧边栏中启用版本阅读文档主题

    我想将 versions html 包含在侧边栏中 但无法成功 我尝试在 中为侧边栏添加 versions html 但这没有效果 html sidebars versions html 另外如何声明不同的版本conf py 我看过sphi
  • data.table 中的条件(不等式)连接

    我只是想弄清楚如何对两个 data tables 进行条件连接 我写了一个sqldf条件连接给我提供其开始或结束时间在其他开始 结束时间之内的电路 sqldf select dt2 start dt2 finish dt2 counts d
  • XCode:如何在上传前验证 IPA 是否有效?

    我在创建 IPA 文件时遇到问题 TestFlight 向我展示了这个原因 http help testflightapp com customer portal articles 402843 mismatched keychain ac
  • 在数字中添加逗号(分组分隔符)而不修改小数?

    我正在尝试格式化字符串以在 3 位数字组之间添加逗号 EG 1200 20 gt gt 1 200 20 15000 gt gt 15 000 我正在尝试弄清楚如何使用 DecimalFormat 来完成此操作 到目前为止 我一直在使用自己
  • 如何在 Windows 上安装 Boost.Build?

    http www boost org boost build2 doc html bbv2 installation html http www boost org boost build2 doc html bbv2 installati
  • Linux 如何在 x86-64 中支持超过 512GB 的虚拟地址范围?

    Linux 中 x86 64 的用户虚拟地址空间为 47 位长 这本质上意味着 Linux 可以映射大约 128 TB 虚拟地址范围的进程 然而 令我困惑的是 x86 64 架构支持 ISA 为每个进程定义的 4 级分层页表 排列为基数树
  • 将 WordprocessingMLPackage 保存到 ByteArrayInputStream

    如何将 org docx4j openpackaging packages WordprocessingMLPackage 实例保存到 ByteArrayInputStream 中 然后可以从服务器下载它 Thanks 您无法保存到Byte