为有中文需求的客户提供多渠道中文技术支持.

Wed Apr 28, 2021 2:52 am

1、我的需求是先将word文档进行只读加密,将文档导出后,在其他地方上传文档,上传时需要根据不同情况有不同的提示信息,一共有三种情况:(1)文档未加密;(2)文档已加密,密码正确;
(3)文档已加密,密码不正确。请问如何能够获取到这三种结果?
2、我用现有的方法操作,有几个问题:
用document.protect(ProtectionType.Allow_Only_Reading, "123456");加密,
用document.getProtectionType()获取状态,结果是Allow_Only_Reading
(1)先用document.loadFromFile("C:\\Users\\Administrator\\Desktop\\Encrypt.docx", FileFormat.Docx, "123456");解密
再用document.getProtectionType()获取状态,结果还是Allow_Only_Reading
(2)用document.loadFromFile("C:\\Users\\Administrator\\Desktop\\Encrypt.docx", FileFormat.Docx, "111111");错误密码解密,没有任何报错和提示密码错误

cdse7en77
 
Posts: 2
Joined: Wed Apr 28, 2021 2:21 am

Wed Apr 28, 2021 6:26 am

您好,

感谢询问。

针对您的第一个问题,请问您是想要判断文档是否拥有文档打开密码吗?请您参考以下代码来判断文档是否拥有打开密码,以及打开密码是否正确
Code: Select all
//using  judge("onlyread_havepass.docx", "654321", FileFormat.Docx);

 public static void judge(String filepath, String password, FileFormat fileFormat) {
      Document document = new Document();
      
      boolean isPassWordProtect = false;
      boolean isPassWordCorrect = true;
      try {
         document.loadFromFile(filepath,fileFormat);
         System.out.println("the documen is un protect");
      } catch (Exception e) {
         isPassWordProtect = true;
      }
      if(isPassWordProtect) {
         try {
            document.loadFromFile(filepath,fileFormat,password);
            System.out.println("the documen is protect, the password is correct");
         } catch (Exception e) {
            isPassWordCorrect = false;
            System.out.println("the documen is protect, the password is uncorrect");
         }
      }
}


针对您的第二个问题,请悉知,“document.protect(ProtectionType.Allow_Only_Reading, "123456");”是用于设置文档限制编辑,以及设置文档的限制编辑密码;而您使用的“document.loadFromFile("C:\\Users\\Administrator\\Desktop\\Encrypt.docx", FileFormat.Docx, "111111");”是用于打开拥有打开密码的文档,与您设置的限制编辑密码无关。

如果您想设置文档打开密码,请使用“Document.encrypt("654321");”来设置打开密码, 并使用您问题二中使用的方法来打开。 如果您想设置文档限制编辑状态从“Allow_Only_Reading”到“No_Protection”, 请您使用“Document.setProtectionType(ProtectionType.No_Protection);”来取消限制编辑。

如果我对您的问题有任何误解,或者您测试中遇到任何问题,请随时联系我们。

Sincerely,
Marcia
E-iceblue support team
User avatar

Marcia.Zhou
 
Posts: 858
Joined: Wed Nov 04, 2020 2:29 am

Thu Apr 29, 2021 2:16 am

我是要判断文档是否拥有限制编辑的密码以及密码是否正确,不限制打开,只限制编辑。
另外我试了一下Document.setProtectionType(ProtectionType.No_Protection);这个方法,原本是有有密码的限制编辑的文档,执行这个方法之后再保存的文档,直接不限制编辑了,那限制编辑的密码就不起作用了,没有验证密码直接就不限制编辑了。
Marcia.Zhou wrote:您好,

感谢询问。

针对您的第一个问题,请问您是想要判断文档是否拥有文档打开密码吗?请您参考以下代码来判断文档是否拥有打开密码,以及打开密码是否正确
Code: Select all
//using  judge("onlyread_havepass.docx", "654321", FileFormat.Docx);

 public static void judge(String filepath, String password, FileFormat fileFormat) {
      Document document = new Document();
      
      boolean isPassWordProtect = false;
      boolean isPassWordCorrect = true;
      try {
         document.loadFromFile(filepath,fileFormat);
         System.out.println("the documen is un protect");
      } catch (Exception e) {
         isPassWordProtect = true;
      }
      if(isPassWordProtect) {
         try {
            document.loadFromFile(filepath,fileFormat,password);
            System.out.println("the documen is protect, the password is correct");
         } catch (Exception e) {
            isPassWordCorrect = false;
            System.out.println("the documen is protect, the password is uncorrect");
         }
      }
}


针对您的第二个问题,请悉知,“document.protect(ProtectionType.Allow_Only_Reading, "123456");”是用于设置文档限制编辑,以及设置文档的限制编辑密码;而您使用的“document.loadFromFile("C:\\Users\\Administrator\\Desktop\\Encrypt.docx", FileFormat.Docx, "111111");”是用于打开拥有打开密码的文档,与您设置的限制编辑密码无关。

如果您想设置文档打开密码,请使用“Document.encrypt("654321");”来设置打开密码, 并使用您问题二中使用的方法来打开。 如果您想设置文档限制编辑状态从“Allow_Only_Reading”到“No_Protection”, 请您使用“Document.setProtectionType(ProtectionType.No_Protection);”来取消限制编辑。

如果我对您的问题有任何误解,或者您测试中遇到任何问题,请随时联系我们。

Sincerely,
Marcia
E-iceblue support team

cdse7en77
 
Posts: 2
Joined: Wed Apr 28, 2021 2:21 am

Thu Apr 29, 2021 9:31 am

您好,

感谢回复!

对于您“判断文档是否拥有限制编辑的密码以及密码是否正确”的需求,我们Spire.Doc for JAVA暂时没有这个判断的功能。但是这个新功能已经在开发当中了,一旦功能实现并发布新版本,我会立刻通知您的。

您提出的“验证密码后再编辑限制编辑”的问题,我在测试中也注意到了这个问题。我已经以编号SPIREDOC-5941 将其记录到我们的BUG修复系统中。很抱歉对您造成了困扰,一旦问题有进展,我会及时告知您的。

感谢您的理解!

Sincerely,
Marcia
E-iceblue support team
User avatar

Marcia.Zhou
 
Posts: 858
Joined: Wed Nov 04, 2020 2:29 am

Return to 中文技术支持