openoffice/libreoffice API を使用して ODT ドキュメントを生成していますが、ファイルが毎回 100% 同一になるようにしたいと考えています (MD5 比較による)。
この時点で、異なる時間に生成された 2 つのファイルを解凍し、zip ファイル内のすべてのファイルをチェックすると、2 つの固有の違い (両方とも RSID 関連) がある Settings.xml を除いて、すべてが 100% 一致します。
<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>
これは元のドキュメントをマージして追跡するためのものであることがわかりましたが、とにかくこれらをマージする予定はないので、制御する固定値にしたいのですが、設定する場所が見つかりませんこれらのプロパティ。
いくつかのオプション (以下) を試してプロパティを出力しましたが、これまでのところ見つけることができませんでした。私が(コーディングして)ファイルを解凍し、XMLを変更せずに、RSIDをオーバーライドする方法はありますか?
// 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);