Vous consultez actuellement l'aide de la version:

Adobe Experience Manager (AEM) Assets s’accompagne d’un ensemble de processus et de gestionnaires de médias par défaut destinés à traiter les ressources. Le processus définit les tâches générales à exécuter sur les ressources, puis délègue les tâches spécifiques aux gestionnaires de médias, par exemple la génération de miniatures ou l’extraction de métadonnées.

Vous pouvez définir un processus qui doit s’exécuter automatiquement lorsqu’une ressource d’un type particulier est téléchargée sur le serveur. Les étapes de traitement sont définies en une suite de gestionnaires de médias AEM Assets. AEM fournit certains gestionnaires intégrés et des gestionnaires supplémentaires peuvent être conçus et personnalisés ou définis en délégant le processus à un outil de ligne de commande.

Les gestionnaires de médias sont des services d’AEM Assets qui effectuent des actions spécifiques sur les ressources. Par exemple, lorsqu’un fichier audio MP3 est téléchargé dans AEM, un processus déclenche un gestionnaire MP3 qui extrait les métadonnées et génère une miniature. Les gestionnaires de médias sont généralement utilisés conjointement avec des processus. La plupart des types MIME courants sont pris en charge dans AEM. Il est possible d’effectuer des tâches spécifiques sur les ressources en étendant/créant des processus, en étendant/créant des gestionnaires de médias ou en désactivant/activant des gestionnaires de médias.

Remarque :

Reportez-vous à la page Formats de ressources pris en charge pour une description de tous les formats pris en charge par AEM Assets ainsi que les fonctionnalités prise en charge pour chaque format.

Gestionnaires de médias par défaut

Les gestionnaires de médias suivants sont disponibles dans AEM Assets et gèrent les types MIME les plus courants :

Nom du gestionnaire Nom du service (dans la console système) Types MIME pris en charge
TextHandler

com.day.cq.dam.core.impl.handler.TextHandler

text/plain
PdfHandler

com.day.cq.dam.handler.standard.pdf.PdfHandler

application/pdf
application/illustrator

JpegHandler

com.day.cq.dam.core.impl.handler.JpegHandler

image/jpeg
Mp3Handler

com.day.cq.dam.handler.standard.mp3.Mp3Handler

audio/mpeg

ZipHandler

com.day.cq.dam.handler.standard.zip.ZipHandler

application/java-archive

application/zip

PictHandler

com.day.cq.dam.handler.standard.pict.PictHandler

image/pict

StandardImageHandler

com.day.cq.dam.core.impl.handler.StandardImageHandler

image/gif

image/png

application/photoshop

image/jpeg

image/tiff

image/x-ms-bmp

image/bmp

MSOfficeHandler com.day.cq.dam.handler.standard.msoffice.MSOfficeHandler application/msword
MSPowerPointHandler com.day.cq.dam.handler.standard.msoffice.MSPowerPointHandler application/vnd.ms-powerpoint
OpenOfficeHandler com.day.cq.dam.handler.standard.ooxml.OpenOfficeHandler application/vnd.openxmlformats-officedocument.wordprocessingml.document
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
application/vnd.openxmlformats-officedocument.presentationml.presentation

EPubHandler com.day.cq.dam.handler.standard.epub.EPubHandler application/epub+zip
GenericAssetHandler

com.day.cq.dam.core.impl.handler.GenericAssetHandler

Solution de repli si aucun autre gestionnaire n’existe pour l’extraction des données d’une ressource

Tous les gestionnaires effectuent les tâches suivantes :

  • extraction de toutes les métadonnées disponibles dans la ressource.

  • création d’une miniature à partir de la ressource.

Il est possible d’afficher les gestionnaires de médias actifs :

  1. Dans votre navigateur, accédez à http://localhost:4502/system/console/components.

  2. Cliquez sur le lien com.day.cq.dam.core.impl.store.AssetStoreImpl.

  3. Une liste comportant tous les gestionnaires de médias actifs est affichée. Par exemple :

chlimage_1

Utilisation des gestionnaires de médias dans les processus afin d’effectuer des tâches sur les ressources

Les gestionnaires de médias sont des services généralement utilisés conjointement avec des processus.

AEM comporte des processus par défaut pour le traitement des ressources. Pour les afficher, ouvrez la console de processus et cliquez sur l’onglet Modèles : les titres de processus commençant par AEM Assets concernent des ressources.

Les processus existants peuvent être étendus et de nouveaux processus peuvent être créés pour gérer les ressources en fonction d’exigences spécifiques.

L’exemple suivant indique comment développer le processus de synchronisation AEM Assets de sorte que des sous-ressources soient générées pour toutes les ressources, à l’exception des documents PDF.

Le processus ressemblera à ceci :

Désactivation/activation d’un gestionnaire de médias

Les gestionnaires de médias peuvent être désactivés ou activés par le biais de la console de gestion web Apache Felix. Lorsque le gestionnaire de médias est désactivé, ses tâches ne sont pas réalisées sur les ressources.

Pour activer/désactiver un gestionnaire de médias :

  1. Dans votre navigateur, accédez à http://<hôte>:<port>/system/console/components.

  2. Cliquez sur le bouton Désactiver en regard du nom du gestionnaire de médias. Par exemple : com.day.cq.dam.handler.standard.mp3.Mp3Handler.

  3. Actualisez la page : une icône Désactivé s’affiche à côté du gestionnaire de médias.

  4. Pour activer le gestionnaire de médias, cliquez sur le bouton Activer en regard du nom de celui-ci.

Création d’un gestionnaire de médias

Pour prendre en charge un nouveau type de médias ou exécuter des tâches spécifiques sur une ressource, il est nécessaire de créer un gestionnaire de médias. Cette section décrit la procédure à suivre.

Classes et interfaces importantes

La meilleure façon de démarrer une implémentation est d’hériter d’une implémentation abstraite fournie qui prend en charge l’essentiel du traitement et qui fournit un comportement par défaut raisonnable : à savoir la classe com.day.cq.dam.core.AbstractAssetHandler.

Cette classe fournit déjà un descripteur de service abstrait. Donc, si vous héritez de cette classe et que vous utilisez le plug-in maven-sling-plugin, assurez-vous que vous avez défini l’indicateur inherit sur true.

Les méthodes suivantes doivent être implémentées :

  • extractMetadata() : cette méthode extrait les métadonnées disponibles.

  • getThumbnailImage() : cette méthode crée une miniature de la ressource transmise.

  • getMimeTypes() : cette méthode renvoie le(s) type(s) MIME de la ressource.

Voici un exemple de modèle :

package my.own.stuff; /** * @scr.component inherit="true" * @scr.service */ public class MyMediaHandler extends com.day.cq.dam.core.AbstractAssetHandler { // implémente les éléments pertinents }

L’interface et les classes sont les suivantes :

Interface com.day.cq.dam.api.handler.AssetHandler

  • Cette interface décrit le service qui ajoute la prise en charge de types MIME spécifiques. L’ajout d’un nouveau type MIME requiert l’implémentation de cette interface. L’interface contient des méthodes pour importer et exporter les documents spécifiques, pour créer des miniatures et extraire des métadonnées.

Classe com.day.cq.dam.core.AbstractAssetHandler

  • Cette classe sert de base pour toutes les autres implémentations de gestionnaires de ressources et fournit des fonctionnalités communes.

Classe com.day.cq.dam.core.AbstractSubAssetHandler :

  • Cette classe sert de base pour toutes les autres implémentations de gestionnaires de ressources et fournit des fonctionnalités communes, ainsi que la fonctionnalité commune d’extraction de sous-ressources.
  • La meilleure façon de démarrer une implémentation est d’hériter d’une implémentation abstraite fournie qui prend en charge l’essentiel du traitement et qui fournit un comportement par défaut raisonnable : à savoir la classe com.day.cq.dam.core.AbstractAssetHandler.
  • Cette classe fournit déjà un descripteur de service abstrait. Donc, si vous héritez de cette classe et que vous utilisez le plug-in maven-sling-plugin, assurez-vous que vous avez défini l’indicateur inherit sur true.

Les méthodes suivantes doivent être implémentées :

  • extractMetadata() : cette méthode extrait les métadonnées disponibles.

  • getThumbnailImage() : cette méthode crée une miniature de la ressource transmise.

  • getMimeTypes() : cette méthode renvoie le(s) type(s) MIME de la ressource.

Voici un exemple de modèle :

package my.own.stuff; /** * @scr.component inherit="true" * @scr.service */ public class MyMediaHandler extends com.day.cq.dam.core.AbstractAssetHandler { // implémente les éléments pertinents }

L’interface et les classes sont les suivantes :

Interface com.day.cq.dam.api.handler.AssetHandler

  • Cette interface décrit le service qui ajoute la prise en charge de types MIME spécifiques. L’ajout d’un nouveau type MIME requiert l’implémentation de cette interface. L’interface contient des méthodes pour importer et exporter les documents spécifiques, pour créer des miniatures et extraire des métadonnées.

Classe com.day.cq.dam.core.AbstractAssetHandler

  • Cette classe sert de base pour toutes les autres implémentations de gestionnaires de ressources et fournit des fonctionnalités communes.

Classe com.day.cq.dam.core.AbstractSubAssetHandler :

  • Cette classe sert de base pour toutes les autres implémentations de gestionnaires de ressources et fournit des fonctionnalités communes, ainsi que la fonctionnalité commune d’extraction de sous-ressources.

Exemple : créer un gestionnaire de texte spécifique

Dans cette section, vous allez créer un gestionnaire de texte spécifique qui génère des miniatures avec un filigrane.

Procédez comme suit :

Reportez-vous à Configuration de l’environnement de développement avec Eclipse pour installer et configurer Eclipse avec un plug-in Maven et pour configurer les dépendances nécessaires au projet Maven.

Lorsque vous téléchargez un fichier txt dans AEM après avoir effectué la procédure suivante, les métadonnées du fichier sont extraites, et deux miniatures comportant un filigrane sont générées.

  1.  

    Dans Eclipse, créez le projet Maven myBundle :

     

    1. Dans la barre de menus, cliquez sur Fichier, sélectionnez Nouveau, puis Autre… .

    2. Dans la boîte de dialogue, développez le dossier Maven, sélectionnez Projet Maven et cliquez sur Suivant.

    3. Cochez la case Créer un projet simple et la case Utiliser les emplacements d’espace de travail par défaut, puis cliquez sur Suivant.

    4. Définissez le projet Maven :

      • Id de groupe : com.day.cq5.myhandler

      • Id d’artefact : myBundle

      • Nom : Mon lot AEM

      • Description : Nom de mon lot AEM

    5. Cliquez sur Terminer.

  2. Réglez le compilateur Java sur la version 1.5 :

    1. Cliquez avec le bouton droit sur le projet myBundle, puis sélectionnez Propriétés.

    2. Sélectionnez Compilateur Java et définissez les propriétés suivantes sur 1.5 :

      • Niveau de conformité du compilateur

      • Compatibilité des fichiers .class générés

      • Compatibilité source

    3. Cliquez sur OK.

    4. Dans la boîte de dialogue, cliquez sur Oui.

  3. Remplacez le code du fichier pom.xml par le code suivant :

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    	<modelVersion>4.0.0</modelVersion> 
    	<!-- ====================================================================== --> 
    	<!-- P A R E N T P R O J E C T D E S C R I P T I O N --> 
    	<!-- ====================================================================== -->
    	<parent>
    		<groupId>com.day.cq.dam</groupId>
    		<artifactId>dam</artifactId>
    		<version>5.2.14</version>
    		<relativePath>../parent</relativePath>
    	</parent> 
    	<!-- ====================================================================== --> 
    	<!-- P R O J E C T D E S C R I P T I O N --> 
    	<!-- ====================================================================== -->
    	<groupId>com.day.cq5.myhandler</groupId>
    	<artifactId>myBundle</artifactId>
    	<name>My CQ5 bundle</name>
    	<version>0.0.1-SNAPSHOT</version>
    	<description>This is my CQ5 bundle</description>
    	<packaging>bundle</packaging> 
    	<!-- ====================================================================== --> 
    	<!-- B U I L D D E F I N I T I O N --> 
    	<!-- ====================================================================== -->
    	<build>
    		<plugins>
    			<plugin>
    				<groupId>org.apache.felix</groupId>
    				<artifactId>maven-scr-plugin</artifactId>
    			</plugin>
    			<plugin>
    				<groupId>org.apache.sling</groupId>
    				<artifactId>maven-sling-plugin</artifactId>
    				<configuration>
    					<slingUrlSuffix>/libs/dam/install/</slingUrlSuffix>
    				</configuration>
    			</plugin>
    			<plugin>
    				<groupId>org.apache.felix</groupId>
    				<artifactId>maven-bundle-plugin</artifactId>
    				<extensions>true</extensions>
    				<configuration>
    					<instructions>
    						<Bundle-Category>cq5</Bundle-Category>
    						<Export-Package> com.day.cq5.myhandler </Export-Package>
    					</instructions>
    				</configuration>
    			</plugin>
    		</plugins>
    	</build> 
    	<!-- ====================================================================== --> 
    	<!-- D E P E N D E N C I E S --> 
    	<!-- ====================================================================== -->
    	<dependencies>
    		<dependency>
    			<groupId>com.day.cq.dam</groupId>
    			<artifactId>cq-dam-api</artifactId>
    			<version>5.2.10</version>
    			<scope>provided</scope>
    		</dependency>
    		<dependency>
    			<groupId>com.day.cq.dam</groupId>
    			<artifactId>cq-dam-core</artifactId>
    			<version>5.2.10</version>
    			<scope>provided</scope>
    		</dependency>
    		<dependency>
    			<groupId>com.day.cq</groupId>
    			<artifactId>cq-commons</artifactId>
    		</dependency>
    		<dependency>
    			<groupId>javax.jcr</groupId>
    			<artifactId>jcr</artifactId>
    		</dependency>
    		<dependency>
    			<groupId>org.apache.felix</groupId>
    			<artifactId>org.osgi.compendium</artifactId>
    		</dependency>
    		<dependency>
    			<groupId>org.slf4j</groupId>
    			<artifactId>slf4j-api</artifactId>
    		</dependency>
    		<dependency>
    			<groupId>commons-lang</groupId>
    			<artifactId>commons-lang</artifactId>
    		</dependency>
    		<dependency>
    			<groupId>commons-collections</groupId>
    			<artifactId>commons-collections</artifactId>
    		</dependency>
    		<dependency>
    			<groupId>commons-io</groupId>
    			<artifactId>commons-io</artifactId>
    		</dependency>
    		<dependency>
    			<groupId>com.day.commons</groupId>
    			<artifactId>day-commons-gfx</artifactId>
    		</dependency>
    		<dependency>
    			<groupId>com.day.commons</groupId>
    			<artifactId>day-commons-text</artifactId>
    		</dependency>
    		<dependency>
    			<groupId>com.day.cq.workflow</groupId>
    			<artifactId>cq-workflow-api</artifactId>
    		</dependency>
    		<dependency>
    			<groupId>com.day.cq.wcm</groupId>
    			<artifactId>cq-wcm-foundation</artifactId>
    			<version>5.2.22</version>
    		</dependency>
    	</dependencies>
  4. Créez le module com.day.cq5.myhandler qui contiendra les classes Java sous myBundle/src/main/java :

    1. Sous myBundle, cliquez avec le bouton droit sur src/main/java, sélectionnez Nouveau, puis Module.

    2. Nommez-le com.day.cq5.myhandler, puis cliquez sur Terminer.

  5. Créez la classe Java MyHandler :

    1. Dans Eclipse, sous myBundle/src/main/java, cliquez avec le bouton droit sur le package com.day.cq5.myhandler, sélectionnez Nouveau, puis Classe.

    2. Dans la boîte de dialogue, attribuez le nom MyHandler à la classe Java, puis cliquez sur Finish (Terminer). Eclipse crée le fichier MyHandler.java et l’ouvre.

    3. Dans MyHandler.java, remplacez le code existant par le suivant, puis enregistrez les modifications :

    package com.day.cq5.myhandler; 
    import java.awt.Color; 
    import java.awt.Rectangle; 
    import java.awt.image.BufferedImage; 
    import java.io.IOException; 
    import java.io.InputStream; 
    import java.io.InputStreamReader; 
    import javax.jcr.Node; 
    import javax.jcr.RepositoryException; 
    import javax.jcr.Session; 
    import org.apache.commons.io.IOUtils; 
    import org.slf4j.Logger; 
    import org.slf4j.LoggerFactory; 
    import com.day.cq.dam.api.metadata.ExtractedMetadata; 
    import com.day.cq.dam.core.AbstractAssetHandler; 
    import com.day.image.Font; 
    import com.day.image.Layer; 
    import com.day.cq.wcm.foundation.ImageHelper; 
    
    /** 
     *  The <code>MyHandler</code> can extract text files 
     *  @scr.component inherit="true" immediate="true" metatype="false" 
     *  @scr.service 
     *  
     **/ 
    
    public class MyHandler extends AbstractAssetHandler { 
    	/** * Logger instance for this class. */ 
    	private static final Logger log = LoggerFactory.getLogger(MyHandler.class); 
    	/** * Music icon margin */ 
    	private static final int MARGIN = 10; 
    	/** * @see com.day.cq.dam.api.handler.AssetHandler#getMimeTypes() */ 
    	public String[] getMimeTypes() {
    		return new String[] {"text/plain"}; 
    	}
    
    	public ExtractedMetadata extractMetadata(Node asset) { 
    		ExtractedMetadata extractedMetadata = new ExtractedMetadata(); 
    		InputStream data = getInputStream(asset); 
    		try { 
    			// read text data 
    			InputStreamReader reader = new InputStreamReader(data); 
    			char[] buffer = new char[4096]; 
    			String text = ""; 
    			while (reader.read(buffer) != -1) { 
    				text += new String(buffer); 
    			} 
    			reader.close(); 
    			long wordCount = this.wordCount(text); 
    			extractedMetadata.setProperty("text", text); 
    			extractedMetadata.setMetaDataProperty("Word Count",wordCount); 
    			setMimetype(extractedMetadata, asset); 
    		} catch (Throwable t) { 
    			log.error("handling error: " + t.toString(), t); 
    		} finally { 
    			IOUtils.closeQuietly(data); 
    		} 
    		return extractedMetadata; } 
    	// ----------------------< helpers >---------------------------------------- 
    	protected BufferedImage getThumbnailImage(Node node) { 
    		ExtractedMetadata metadata = extractMetadata(node); 
    		final String text = (String) metadata.getProperty("text"); 
    		// create text layer 
    		final Layer layer = new Layer(500, 600, Color.WHITE); 
    		layer.setPaint(Color.black); 
    		Font font = new Font("Arial", 12); 
    		String displayText = this.getDisplayText(text, 600, 12); 
    		if(displayText!=null && displayText.length() > 0) {
    			// commons-gfx Font class would throw IllegalArgumentException on empty or null text 
    			layer.drawText(10, 10, 500, 600, displayText, font, Font.ALIGN_LEFT, 0, 0); 
    		} 
    		// create watermark and merge with text layer 
    		Layer watermarkLayer; 
    		try { 
    			final Session session = node.getSession(); 
    			watermarkLayer = ImageHelper.createLayer(session, "/content/dam/geometrixx/icons/certificate.png"); 
    			watermarkLayer.setX(MARGIN); 
    			watermarkLayer.setY(MARGIN); 
    			layer.merge(watermarkLayer); 
    		} catch (RepositoryException e) { 
    			// TODO Auto-generated catch block 
    			e.printStackTrace(); 
    		} catch (IOException e) { 
    			// TODO Auto-generated catch block 
    			e.printStackTrace(); } 
    		layer.crop(new Rectangle(510, 600)); 
    		return layer.getImage(); } 
    	// ---------------< private >----------------------------------------------- 
    	/** 
    	 * This method cuts lines if the text file is too long..
    	 *  * @param text
    	 *  * text to check
    	 *  * @param height
    	 *  * text box height (px)
    	 *  * @param fontheight
    	 *  * font height (px) 
    	 *  * @return the text which will fit into the box 
    	 */ 
    	private String getDisplayText(String text, int height, int fontheight) { 
    		String trimmedText = text.trim(); 
    		int numOfLines = height / fontheight; 
    		String lines[] = trimmedText.split("\n"); 
    		if (lines.length <= numOfLines) { 
    			return trimmedText; 
    		} else { 
    			String cuttetText = ""; 
    			for (int i = 0; i < numOfLines; i++) { 
    				cuttetText += lines[i] + "\n"; 
    			} 
    			return cuttetText; 
    		} 
    	} 
    	/**
    	 *  * This method counts the number of words in a string 
    	 *  * @param text the String whose words would like to be counted
    	 *  * @return the number of words in the string
    	 *  */ 
    	private long wordCount(String text) { 
    		// We need to keep track of the last character, if we have two white spaces in a row we dont want to double count 
    		// The starting of the document is always a whitespace 
    		boolean prevWhiteSpace = true; 
    		boolean currentWhiteSpace = true; 
    		char c; long numwords = 0; 
    		int j = text.length(); 
    		int i = 0; 
    		while (i < j) { 
    			c = text.charAt(i++); 
    			if (c == 0) { break; } 
    			currentWhiteSpace = Character.isWhitespace(c); 
    			if (currentWhiteSpace && !prevWhiteSpace) { numwords++; } 
    			prevWhiteSpace = currentWhiteSpace; 
    		} 
    		// If we do not end with a white space then we need to add one extra word 
    		if (!currentWhiteSpace) { numwords++; } 
    		return numwords; 
    	} 
    }
  6. Compilez la classe Java et créez le lot :

    1. Cliquez avec le bouton droit sur le projet myBundle, sélectionnez Exécuter en tant que, puis Installation Maven.

    2. Le lot myBundle-0.0.1-SNAPSHOT.jar (contenant la classe compilée) est créé sous myBundle/target.

  7. Dans CRX Explorer, créez un nœud sous /apps/myApp. Nom = install, Type = nt:folder.

  8.  

    Copiez le lot myBundle-0.0.1-SNAPSHOT.jar et enregistrez-le sous /apps/myapp/install (avec WebDAV, par exemple). Le nouveau gestionnaire de texte est à présent actif dans AEM.

     

  9. Dans votre navigateur, ouvrez la console de gestion web Apache Felix. Sélectionnez l’onglet Composants et désactivez le gestionnaire de texte par défaut m.core.impl.handler.TextHandler.

Gestionnaire de médias en ligne de commande

AEM vous permet d’exécuter n’importe quel outil de ligne de commande dans un processus pour convertir des ressources (comme, par exemple, ImageMagick) et ajouter le nouveau rendu à la ressource. Vous avez uniquement besoin d’installer l’outil de ligne de commande sur le disque hébergeant le serveur AEM, puis d’ajouter et de configurer une étape au processus. Le processus appelé, CommandLineProcess, active également le filtre en fonction de types MIME spécifiques, et crée des miniatures distinctes basées sur le nouveau rendu.

Les conversions suivantes peuvent être automatiquement exécutées et stockées dans AEM Assets :

  • Transformation EPS et AI à l’aide d’ImageMagick et de Ghostscript
  • Transcodage vidéo FLV à l’aide de FFmpeg
  • Encodage MP3 à l’aide de LAME
  • Traitement audio à l’aide de SOX

Remarque :

Sur les systèmes autres que Windows, l’outil FFMpeg renvoie une erreur lors de la génération de rendus pour une ressource vidéo dont le nom de fichier contient une apostrophe (') unique. Si le nom de votre fichier vidéo comporte une apostrophe unique, supprimez-la avant de charger le fichier dans AEM.

Le processus CommandLineProcess effectue les opérations suivantes par ordre d’apparition dans la liste :

  • Filtre le fichier en fonction des types MIME indiqués, le cas échéant.
  • Crée un répertoire temporaire sur le disque hébergeant le serveur AEM.
  • Diffuse le fichier d’origine vers le répertoire temporaire.
  • Exécute la commande définie par les arguments de l’étape. La commande est exécutée dans le répertoire temporaire avec les autorisations de l’utilisateur exécutant AEM.
  • Renvoie le résultat dans le dossier de rendu du serveur AEM.
  • Supprime le répertoire temporaire.
  • Crée des miniatures basées sur ces rendus, si spécifié. Le nombre et les dimensions des miniatures sont définis par les arguments de l’étape.

Exemple utilisant ImageMagick

L’exemple suivant montre comment configurer l’étape de processus de ligne de commande de sorte qu’à chaque fois qu’une ressource de type MIME gif ou tiff est ajoutée à /content/dam sur le serveur AEM, une image inversée de l’original est créée avec trois miniatures supplémentaires (140x100, 48x48 et 10x250).

Pour ce faire, vous utiliserez ImageMagick. ImageMagick est une suite logicielle gratuite permettant de créer, modifier et composer des images bitmap, généralement à partir de la ligne de commande.

Installez d’abord ImageMagick sur le disque hébergeant le serveur AEM :

  1. Installez ImageMagick : reportez-vous à la documentation ImageMagick.

  2. Installez l’outil afin de pouvoir exécuter convert sur la ligne de commande.

  3. Pour vérifier si cet outil est installé correctement, exécutez la commande convert -h sur la ligne de commande.

    L’écran d’aide qui s’affiche alors répertorie toutes les options possibles de l’outil convert.

    Remarque :

     Dans certaines versions de Windows (par exemple Windows SE), la commande convert peut ne pas s’exécuter, car elle est en conflit avec l’utilitaire de conversion natif de Windows. Dans ce cas, indiquez le chemin complet de l’utilitaire ImageMagick utilisé pour convertir les fichiers image en miniatures. Par exemple, "C:\Program Files\ImageMagick-6.8.9-Q16\convert.exe" -define jpeg:size=319x319 ${filename} -thumbnail 319x319 cq5dam.thumbnail.319.319.png.

  4. Pour vérifier si l’outil s’exécute correctement, ajoutez une image .jpg au répertoire de travail et exécutez la commande convert <nom-image>.jpg -flip <nom-image>-flipped.jpg sur la ligne de commande.
    Une image inversée est ajoutée au répertoire.

Ajoutez ensuite l’étape de processus de ligne de commande au processus Ressources de mise à jour de gestion des actifs numériques :

  1. Accédez à la console Processus.

  2. Dans l’onglet Modèles, modifiez le modèle Ressources de mise à jour de gestion des actifs numériques.

  3. Modifiez les paramètres de l’étape Rendu Web comme suit :
    Arguments :

    mime:image/gif,mime:image/tiff,tn:140:100,tn:48:48,tn:10:250,cmd:convert ${directory}/${filename} -flip ${directory}/${basename}.flipped.jpg

  4. Enregistrez le workflow.

Enfin, testez le processus modifié en ajoutant une nouvelle ressource à /content/dam :

  1. Dans le système de fichiers, sélectionnez une image.tiff. Renommez-la myImage.tiff et copiez-la dans /content/dam, par exemple, à l’aide de WebDAV.

  2. Accédez à la console CQ5 DAM, par exemple http://localhost:4502/libs/wcm/core/content/damadmin.html.

  3. Ouvrez la ressource myImage.tiff et vérifiez que l’image inversée et les trois miniatures ont été créées.

Configuration de l’étape du processus CommandLineProcess

Cette section décrit la procédure à suivre pour définir les Arguments du processus de CommandLineProcess.

Les valeurs des Arguments du processus doivent être séparées par une virgule et ne doivent pas commencer par un espace.

 Argument-Format Description
 mime:<mime-type>

Argument en option. Le processus est appliqué si la ressource a le même type MIME que celui de l’argument.

Plusieurs types MIME peuvent être définis.

 tn:<width>:<heigth>

Argument en option. Le processus crée une miniature avec les dimensions définies dans l’argument.

Plusieurs miniatures peuvent être définies.

 cmd: <command>

Définit la commande qui sera exécutée. La syntaxe dépend de l’outil de ligne de commande.

Une seule commande peut être définie.

Les variables suivantes permettent de créer la commande :

${filename} : nom du fichier d’entrée, par ex. original.jpg
${file} : chemin d’accès complet au fichier d’entrée, par ex. /tmp/cqdam0816.tmp/original.jpg
${directory} : répertoire du fichier d’entrée, par ex. /tmp/cqdam0816.tmp.
${basename} : nom du fichier d’entrée sans son extension, par ex. original
${extension} : extension du fichier d’entrée, par ex. jpg

Par exemple, si ImageMagick est installé sur le disque hébergeant le serveur AEM et que vous créez une étape de processus en utilisant CommandLineProcess en tant qu’implémentation et les valeurs suivantes en tant qu’arguments de processus :

mime:image/gif,mime:image/tiff,tn:140:100,tn:48:48,tn:10:250,cmd:convert ${directory}/${filename} -flip ${directory}/${basename}.flipped.jpg

puis, lors de l’exécution du processus, l’étape s’applique uniquement aux ressources dont les types MIME sont image/gif ou mime:image/tiff, elle crée ensuite une image inversée de l’original, puis la convertit en .jpg et génère trois miniatures aux dimensions suivantes : 140x100, 48x48 et 10x250.

Utilisez les Arguments de processus pour créer les trois miniatures standards à l’aide d’ImageMagick :

mime:image/tiff,mime:image/png,mime:image/bmp,mime:image/gif,mime:image/jpeg,cmd:convert ${filename}  -define jpeg:size=319x319 -thumbnail "319x319>" -background transparent -gravity center -extent 319x319 -write png:cq5dam.thumbnail.319.319.png -thumbnail "140x100>" -background transparent -gravity center -extent 140x100 -write cq5dam.thumbnail.140.100.png  -thumbnail "48x48>" -background transparent -gravity center -extent 48x48 cq5dam.thumbnail.48.48.png

Utilisez les Arguments de processus pour créer le rendu web à l’aide d’ImageMagick :

mime:image/tiff,mime:image/png,mime:image/bmp,mime:image/gif,mime:image/jpeg,cmd:convert ${nom_fichier} -define jpeg:size=1280x1280 -thumbnail "1280x1280>" cq5dam.web.1280.1280.jpeg

Remarque :

L’étape CommandLineProcess s’applique uniquement aux Ressources (nœuds du type dam:Asset) ou aux descendants d’une Ressource.

Ce produit est distribué sous licence Creative Commons Attribution - Pas d’utilisation commerciale - Partage à l’identique 3.0 non transposé  Les publications Twitter™ et Facebook ne sont pas couvertes par les dispositions Creative Commons.

Mentions légales   |   Politique de confidentialité en ligne