Снять защиту с текстового документа с помощью Java - PullRequest
0 голосов
/ 12 июня 2019

как мы можем снять защиту текстового документа, используя java apache poi?Я защитил документ как доступный только для чтения с помощью пароля программно. Теперь я хочу снять защиту.Как мы можем сделать ?Есть ли способ снять защиту документа.Я использовал removePasswordProtection (), но этот документ нельзя редактировать даже после использования этого метода.

Пример кода, который я использовал для защиты:

XWPFDocument document=new XWPFDocument();
 document.enforceReadonlyProtection(strPassword,HashAlgorithm.sha1);

Документ успешно защищен.

Но когда я снимаю защиту документа с использованием приведенного ниже фрагмента кода, он не работает.

 if(document.isEnforcedReadonlyProtection())
     {
     if(document.validateProtectionPassword(strPassword))
     {
        document.removeProtectionEnforcement();
     }
     }

Кто-нибудь может мне помочь, каким способом я могу снять защиту документа?

Ответы [ 2 ]

1 голос
/ 12 июня 2019

Невозможно воспроизвести.

Следующий код создает два Word документа.Один, WordProtected.docx, который защищен, и один, WordUnprotected.docx, в котором защита снята.

import java.io.FileInputStream;
import java.io.FileOutputStream;
import org.apache.poi.xwpf.usermodel.*;

import org.apache.poi.poifs.crypt.HashAlgorithm;

class XWPFReadOnlyProtection {

 public static void main(String[] args) throws Exception {

  XWPFDocument document = new XWPFDocument();

  String strPassword = "password";

  document.enforceReadonlyProtection(strPassword, HashAlgorithm.sha1);

  FileOutputStream fileout = new FileOutputStream("WordProtected.docx");
  document.write(fileout);
  fileout.close();
  document.close();

  document = new XWPFDocument(new FileInputStream("WordProtected.docx"));

  document.removeProtectionEnforcement();

  fileout = new FileOutputStream("WordUnprotected.docx");
  document.write(fileout);
  fileout.close();
  document.close();

 }
}
0 голосов
/ 12 июня 2019

используйте этот код для Word для защиты

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.hssf.record.crypto.Biff8EncryptionKey;
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.usermodel.Range;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;

public class WordTest {

       public static void main(String[] args) throws IOException {
       FileInputStream in = new FileInputStream("D:\\govind.doc");    

       BufferedInputStream bin = new BufferedInputStream(in);            
       POIFSFileSystem poiFileSystem = new POIFSFileSystem(bin);

       Biff8EncryptionKey.setCurrentUserPassword("P@ssw0rd");
       HWPFDocument doc = new HWPFDocument(poiFileSystem);            
       Range range = doc.getRange();

       FileOutputStream out = new FileOutputStream("D:\\govind.doc");
       doc.write(out);
       out.close();
    }
}

это используется для защищенного слова Файл без ответа

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.hssf.record.crypto.Biff8EncryptionKey;
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;

public class wordFileTest {

    public static void main(String[] args) throws IOException {
       geenrateUnprotectedFile("D:\\","govind","1234");
    }


     public static void geenrateUnprotectedFile(String filePath,String fileName,String pwdtxt) {
    try {
     FileInputStream in = new FileInputStream(filePath+fileName+".doc");

        BufferedInputStream bin = new BufferedInputStream(in);
        POIFSFileSystem poiFileSystem = new POIFSFileSystem(bin);

        Biff8EncryptionKey.setCurrentUserPassword(pwdtxt);
        HWPFDocument doc = new HWPFDocument(poiFileSystem);

        String docType=doc.getDocumentText();

         FileOutputStream out = new FileOutputStream(filePath+fileName+"12.doc");
        out.write(docType.getBytes());
        System.out.println("don");
    }catch (Exception e) {
      e.printStackTrace();
    } 
     }

}
...