使用 Apache POI 打开 .docx 并使用密码保存

帕维尔·奥梅尔丘克

目标是打开现有的 .docx 文档并使用密码加密保存。我为此使用了 Apache POI 库。下面的代码工作正常,使文档加密和密码保护。

但是在创建文件后,我可以使用 LibreOffice 打开它,但不能使用 MS Word 或 OpenOffice Writer。

该文件似乎没有内容类型部分,因为 OpenOffice 向我询问了文件过滤器。但是当我选择“Microsoft Word 2007 XML”时,我从 OpenOffice 中得到了“常见输入输出错误”

我能请你帮我吗,伙计们?PS我使用Java 8和POI 3.17

    static boolean encryptOne(String documentPath, String password) {
    try {
        POIFSFileSystem fs = new POIFSFileSystem();

        EncryptionInfo info = new EncryptionInfo(EncryptionMode.agile);
        Encryptor encryptor = info.getEncryptor();
        encryptor.confirmPassword(password);

        OPCPackage opc = OPCPackage.open(new File(documentPath), PackageAccess.READ_WRITE);
        opc.save(encryptor.getDataStream(fs));
        opc.close();

        FileOutputStream fos = new FileOutputStream(documentPath);
        fs.writeFilesystem(fos);
        fos.close();

        System.out.println("Document successfully encrypted");

        return true;

    } catch (IOException | GeneralSecurityException | InvalidFormatException e) {
        ExceptionPrinter.printOutStream(e);

        return false;
    }
}
帕维尔·奥梅尔丘克

所以,我通过改变 EncryptionMode 解决了这个问题:

// EncryptionInfo info = new EncryptionInfo(EncryptionMode.agile);
EncryptionInfo info = new EncryptionInfo(EncryptionMode.standard);

我发现一些信息表明 MS Word 的免费(免费)版本不支持 ECMA-376.Agile 加密。因此,我将加密模式更改为 ECMA-376.Standard,它对我有用。我不确定这是真的,但它对我的情况有所帮助。

希望这会帮助某人。

谢谢。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Apache POI读取.docx文件

来自分类Dev

使用Apache POI打开xls和xlsx

来自分类Dev

使用Apache Poi在outpout docx中创建无限虚假页面

来自分类Dev

如何使用Apache POI将.docx转换为.doc

来自分类Dev

如何使用Apache Poi在Android上阅读.docx

来自分类Dev

使用Apache-POI获取docx每个段落的行

来自分类Dev

使用 Apache POI Word JAVA 编写 docx 文件

来自分类Dev

无法使用Apache POI打开XLSX文件:NoClassDefFoundError

来自分类Dev

使用Apache POI的PatternSyntaxException

来自分类Dev

如何在Java中使用apache poi更新docx文件的元数据?

来自分类Dev

如何使用Apache POI从Java中的docx中删除包含数据的表和段落

来自分类Dev

如何使用Apache POI在docx文件中设置普通标头?

来自分类Dev

如何使用Apache POI为docx文件中的段落设置标题样式?

来自分类Dev

无法使用Apache POI将超过7页的docx读取为String

来自分类Dev

如何使用Apache POI在docx文件中设置运行(行中的单词或段落)的背景颜色?

来自分类Dev

如何使用apache POI在docx中插入当前日期字段

来自分类Dev

如何使用apache poi在docx中编写混合文本(普通和下标)?

来自分类Dev

使用Apache poi生成.docx时,如何为页脚添加间距?

来自分类Dev

如何使用Apache POI在docx中用HTML替换文本(标签)?

来自分类Dev

有没有办法使用 Apache POI 为 docx 文件设置固定元数据?

来自分类Dev

使用Apache POI Scala编写值后,使用日期打开excel单元时出现问题

来自分类Dev

在 apache poi 中使用 for 循环

来自分类Dev

使用LibreOffice在Firefox中打开.docx附件

来自分类Dev

Word无法使用表打开DOCX文件

来自分类Dev

使用LibreOffice在Firefox中打开.docx附件

来自分类Dev

Apache Felix与Apache POI的配合使用

来自分类Dev

Apache Felix与Apache POI的配合使用

来自分类Dev

apache poi Word文档(.doc,.docx)更新

来自分类Dev

Apache POI-尝试使用POI更改强调色

Related 相关文章

  1. 1

    使用Apache POI读取.docx文件

  2. 2

    使用Apache POI打开xls和xlsx

  3. 3

    使用Apache Poi在outpout docx中创建无限虚假页面

  4. 4

    如何使用Apache POI将.docx转换为.doc

  5. 5

    如何使用Apache Poi在Android上阅读.docx

  6. 6

    使用Apache-POI获取docx每个段落的行

  7. 7

    使用 Apache POI Word JAVA 编写 docx 文件

  8. 8

    无法使用Apache POI打开XLSX文件:NoClassDefFoundError

  9. 9

    使用Apache POI的PatternSyntaxException

  10. 10

    如何在Java中使用apache poi更新docx文件的元数据?

  11. 11

    如何使用Apache POI从Java中的docx中删除包含数据的表和段落

  12. 12

    如何使用Apache POI在docx文件中设置普通标头?

  13. 13

    如何使用Apache POI为docx文件中的段落设置标题样式?

  14. 14

    无法使用Apache POI将超过7页的docx读取为String

  15. 15

    如何使用Apache POI在docx文件中设置运行(行中的单词或段落)的背景颜色?

  16. 16

    如何使用apache POI在docx中插入当前日期字段

  17. 17

    如何使用apache poi在docx中编写混合文本(普通和下标)?

  18. 18

    使用Apache poi生成.docx时,如何为页脚添加间距?

  19. 19

    如何使用Apache POI在docx中用HTML替换文本(标签)?

  20. 20

    有没有办法使用 Apache POI 为 docx 文件设置固定元数据?

  21. 21

    使用Apache POI Scala编写值后,使用日期打开excel单元时出现问题

  22. 22

    在 apache poi 中使用 for 循环

  23. 23

    使用LibreOffice在Firefox中打开.docx附件

  24. 24

    Word无法使用表打开DOCX文件

  25. 25

    使用LibreOffice在Firefox中打开.docx附件

  26. 26

    Apache Felix与Apache POI的配合使用

  27. 27

    Apache Felix与Apache POI的配合使用

  28. 28

    apache poi Word文档(.doc,.docx)更新

  29. 29

    Apache POI-尝试使用POI更改强调色

热门标签

归档