Bonjour à tous,

Je suis en train de développer un batch qui lit des documents dans une GED et doit les modifier s'ils contiennent certains types de liens hypertext. Je dois gérer les documents Excel, Word et PowerPoint.
Le souci est que ça ne marche pas trés bien :

  1. Dans PowerPoint, j'ai beau modifier les liens, les documents en sortie ont toujours les mêmes liens hypertext (alors que si je modifie autre chose, du texte par exemple, ça fonctionne ) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
     
    private byte[] remplacerLienHypertextPPT(File file, InputStream content) throws IOException {
    		SlideShow ppt = new SlideShow(new HSLFSlideShow(content));
    		for (int i = 0; i < ppt.getSlides().length; i++) {
    			Slide slide = ppt.getSlides()[i];
    			//Parcours des zones de textes
    			for (int j = 0; j < slide.getTextRuns().length; j++) {
    				TextRun text = slide.getTextRuns()[j];
    				if( text.getHyperlinks() != null) {
    					for (int k = 0; k < text.getHyperlinks().length; k++) {
    						Hyperlink link = text.getHyperlinks()[k];
    						if(link.getAddress().startsWith("UNE VALEUR")) {
    							link.setAddress("UNE AUTRE VALEUR");
    						}
    					}
    				}
    			}
    			//Parcours des formes de dessin
    			for (int j = 0; j < slide.getShapes().length; j++) {
    				Shape shape = slide.getShapes()[j];
    				if( shape.getHyperlink() != null && shape.getHyperlink().getAddress() != null) {
    					if(shape.getHyperlink().getAddress().startsWith("UNE VALEUR")) {
    						shape.getHyperlink().setAddress("UNE AUTRE VALEUR" );
    System.out.println(shape.getHyperlink().getAddress()); //--> Ca m'affiche UNE VALEUR!!!
    					}
    				}
    			}
    		}
  2. Dans Word, juste le fait de lire le document, modifie les liens hypertext en text normal, je me retrouve avec des lignes qui valent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HYPERLINK "UNE VALEUR" // et ceci entouré de petit rectangle comme lors des problèmes d'encodage
  3. Par contre dans Excel cela fonctionne bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    private byte[] remplacerLienHypertextXLS(File file, InputStream content) throws IOException {
    		HSSFWorkbook workbook = new HSSFWorkbook(content);
    		for (int i = 0; i < workbook.getNumberOfSheets(); i++) {
    			HSSFSheet sheet = workbook.getSheetAt(i);
    			for (int j = 0; j <= sheet.getLastRowNum(); j++) {
    				HSSFRow row = sheet.getRow(j);
    				if(row!=null) {
    					for (int k = 0; k <= row.getLastCellNum(); k++) {
    						HSSFCell cell = row.getCell(k);
    						if(cell != null) {
    							if(cell.getHyperlink()!= null && cell.getHyperlink().getAddress().startsWith("UNE VALEUR")) {
    cell.getHyperlink().setAddress( "UNE AUTRE VALEUR");
    							}
    						}
    					}
    				}
    			}
    		}

Merci beaucoup d'avance, car je ne vois absolument pas pourquoi ça fait ça!!!!