Как защитить метаданные в офисном файле, сгенерированном java? - PullRequest
1 голос
/ 11 февраля 2020

У меня есть проблема, но я не могу найти способ ее решить: я генерирую файл word или файл excel, используя код java. Но я не знаю, как защитить его метаданные.

Я делаю щелчок правой кнопкой мыши на файле, выбираю Свойства, выбираю Детали для просмотра метаданных. Там каждый может удалить Свойства, Добавить, Изменить, Удалить значение Заголовок, Тема, Категории, Авторы, Компания, ... Я не знаю, как заблокировать файлы значений, установить пароль или любой другой ... так, чтобы никто не мог Удалить Свойства, Добавить, Изменить, Удалить значение Заголовок, Тема, Категории, Авторы, Компания, ...

Код для создания я использую:

public static void main(String[] args) {
try {
        Excel();
    } catch(Exception ex) {
        System.out.println(ex);
    }
}

public static void Excel() throws IOException {
    XSSFWorkbook workbook = new XSSFWorkbook();
    XSSFSheet sheet = workbook.createSheet("Java Books");

    Object[][] bookData = {
            {"Head First Java", "Kathy Serria", 79},
            {"Effective Java", "Joshua Bloch", 36},
            {"Clean Code", "Robert martin", 42},
            {"Thinking in Java", "Bruce Eckel", 35},
    };

    int rowCount = 0;

    for (Object[] aBook : bookData) {
        XSSFRow row = sheet.createRow(++rowCount);

        int columnCount = 0;

        for (Object field : aBook) {
            XSSFCell cell = row.createCell(++columnCount);
            if (field instanceof String) {
                cell.setCellValue((String) field);
            } else if (field instanceof Integer) {
                cell.setCellValue((Integer) field);
            }
        }

    }

    POIXMLProperties prop = workbook.getProperties();
    POIXMLProperties.CoreProperties coreProp = prop.getCoreProperties();
    coreProp.setCreator("reu");
    coreProp.setCategory("reu title");
    PackagePropertiesPart ctProp = coreProp.getUnderlyingProperties();


    try (FileOutputStream outputStream = new FileOutputStream("E:\\Working\\TProjects\\MetaSecu\\JavaBooks.xlsx")) {
        workbook.write(outputStream);
    }
}

-> Может пожалуйста, помогите мне дать несколько способов решить эту проблему?

...