Я создаю документы ODT, используя API openoffice/libreoffice, и хочу, чтобы файлы выходили на 100% идентично каждый раз (по сравнению с MD5).Как переопределить RoD RSID ODF с помощью API
На этом этапе я могу разархивировать два файла, сгенерированные в разное время, и проверить все файлы в zip-файле, и все они соответствуют 100%, за исключением параметра Settings.xml, который имеет два уникальных отличия (оба связанных с RSID).
<config:config-item config:name="Rsid" config:type="int">1835643</config:config-item>
и
<config:config-item config:name="RsidRoot" config:type="int">1835643</config:config-item>
Я узнал это с целью объединения и отслеживания обратно к исходному документу, но я хочу, чтобы они были фиксированное значение, которое я контролировать, как и я не планируйте объединить их в любом случае, но я не могу найти, где установить эти свойства.
Я пробовал несколько вариантов (ниже) и выводил свойства, но не смог найти его до сих пор. Есть ли способ переопределить RSID, без меня (кодирования) разархивирования файла и изменения XML, который я сделал сейчас, но чувствует себя немного неудобно, так что все еще искал это.
// Looking for RSID in all the wrong places - test 1
XPropertySet xSettings = (XPropertySet) xRemoteServiceManager.createInstanceWithContext("com.sun.star.document.Settings", componentContext);
// Looking for RSID in all the wrong places - test 2
Object configProvider = xRemoteServiceManager.createInstanceWithContext("com.sun.star.configuration.ConfigurationProvider", componentContext);
XMultiServiceFactory xConfigProvider = (XMultiServiceFactory) UnoRuntime.queryInterface(XMultiServiceFactory.class, configProvider);
PropertyValue[] lParams = new PropertyValue[1];
lParams[0] = new PropertyValue();
lParams[0].Name = "nodepath";
lParams[0].Value = "/";
Object xAccess = xConfigProvider.createInstanceWithArguments("com.sun.star.configuration.ConfigurationUpdateAccess" , lParams);
XNameAccess xNameAccess = (com.sun.star.container.XNameAccess) UnoRuntime.queryInterface(XNameAccess.class, xAccess);
Да, это был мой собственный первый обходной путь, и он отлично работает, я просто надеялся, что смогу избежать процесса модификации пакета. Я не знал о возможности идентификаторов UUID/UIID, я еще не сталкивался с ними, но мне нужно будет изучить это и посмотреть, могут ли это повлиять на меня. –