J'ai réalisé un générateur de PDF à partir de l'API LibreOffice Java (unoil version 3.2.1 pointant sur LibreOffice).
Je précise que j'ai essayé sur de nombreuses versions de LibreOffice ou OpenOffice, mais je constate le même problème de performance.
J'ai même essayé mon programme sous Linux et même résultat.
J'ai un ODT avec un tableau de texte comportant 6 colonnes et une quarantaine de lignes.
Quand je remplace l'ensemble des cellules de ce tableau avec le code suivant, ça prend une vingtaine de secondes :
Code : Tout sélectionner
List<OooLigne> l = oooTable.getTable();
for (int i = 0; i < l.size(); i++) {
Map<String, String> map = l.get(i).getLigne();
for (String cle : map.keySet()) {
String codeCell = cle + (i + oooTable.getOffset() + 1);
XText xCellText = (XText) UnoRuntime.queryInterface(XText.class, xTable.getCellByName(codeCell));
if(map.get(cle)!=null){
xCellText.setString("ma valeur"); // C'est cet appel qui prend tout le temps
}
}
}
xCellText.setString("ma valeur");
Le XText.setString() semble donc être la cause du problème de performance de la génération de mon PDF.
Y'aurait-il un moyen d'accélérer le remplacement de texte au sein d'un tableau OpenOffice Writer ?
Merci beaucoup pour votre aide.