Show Menu
THEMEN×

Process assets using media handlers and workflows

Adobe Experience Manager Assets verfügt über eine Reihe von Standard-Workflows- und Media-Handlern zur Verarbeitung von Assets. Ein Arbeitsablauf definiert die Aufgaben, die für die Assets ausgeführt werden sollen, und delegiert dann die spezifischen Aufgaben an die Media-Handler, z. B. die Erstellung von Miniaturbildern oder die Metadaten-Extraktion.
Ein Workflow kann so konfiguriert werden, dass er automatisch ausgeführt wird, wenn ein Asset eines bestimmten MIME-Typs hochgeladen wird. The processing steps are defined in terms of a series of Assets media handlers. Experience Manager bietet einige integrierte Handler und zusätzliche Handler können entweder speziell entwickelt oder definiert werden, indem der Prozess an ein Befehlszeilen-Tool delegiert wird.
Media handlers are services in Assets that perform specific actions on assets. For example, when an MP3 audio file is uploaded into Experience Manager, a workflow triggers an MP3 handler that extracts the metadata and generates a thumbnail. Medien-Handler werden normalerweise in Verbindung mit Workflows verwendet. Most common MIME types are supported within Experience Manager. Spezielle Aufgaben können an Assets durchgeführt werden, indem Workflows erweitert bzw. erstellt, Medien-Handler erweitert bzw. erstellt oder Medien-Handler deaktiviert bzw. aktiviert werden.
See the Assets supported formats page for a description of all the formats supported by Assets as well as features supported for each format.

Default media handlers

The following media handlers are available within Assets and handle the most common MIME types:
Handler-Name
Dienstname (in der Systemkonsole)
Unterstützte MIME-Typen
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
Ausweichmöglichkeit, falls kein anderer Handler gefunden wurde, der Daten aus einem Asset extrahiert
Alle Handler führen folgende Aufgaben aus:
  • Extraktion aller verfügbaren Metadaten aus einem Asset.
  • Erstellen eines Miniaturbilds eines Assets.
So Ansicht der aktiven Medienhandler:
  1. Navigieren Sie im Browser zu http://localhost:4502/system/console/components .
  2. Klicken Sie auf com.day.cq.dam.core.impl.store.AssetStoreImpl .
  3. Eine Liste mit allen aktiven Medien-Handlern wird angezeigt. Beispiel:

Use media handlers in workflows to perform tasks on assets

Medien-Handler sind Dienste, die normalerweise in Verbindung mit Workflows verwendet werden.
Experience Manager bietet verschiedene Standard-Workflows zur Bearbeitung von Assets. Um sie anzuzeigen, öffnen Sie die Workflow-Konsole und klicken Sie auf die Registerkarte Modelle : Die Workflow-Namen, die mit beginnen, sind Asset-spezifische Workflows.Assets
Bereits bestehende Workflows können erweitert und neue Workflows können erstellt werden, um Assets nach spezifischen Anforderungen zu bearbeiten.
Das folgende Beispiel zeigt, wie der AEM Assets-Synchronisierungs-Workflow erweitert werden kann, damit Teil-Assets für alle Assets außer PDF-Dokumente erstellt werden.

Deaktivieren oder Aktivieren eines Medienhandlers

Die Medien-Handler können über die Apache Felix Web Management-Konsole deaktiviert bzw. aktiviert werden. Wenn der Medien-Handler deaktiviert ist, werden seine Aufgaben zur Bearbeitung von Assets nicht durchgeführt.
So aktivieren/deaktivieren Sie einen Medien-Handler:
  1. Navigieren Sie im Browser zu https://<host>:<port>/system/console/components .
  2. Klicken Sie neben dem Namen des Medien-Handlers auf Deaktivieren . Beispiel: com.day.cq.dam.handler.standard.mp3.Mp3Handler .
  3. Aktualisieren Sie die Seite: Neben dem Medien-Handler wird ein Symbol angezeigt, das angibt, dass er deaktiviert ist.
  4. Um den Medien-Handler zu aktivieren, klicken Sie neben dem Namen des Medien-Handlers auf Aktivieren .

Create a new media handler

Um einen neuen Medientyp zu unterstützen oder eine bestimmte Aufgabe an einem Asset durchzuführen, muss ein neuer Medien-Handler erstellt werden. In diesem Abschnitt wird beschrieben, wie Sie vorgehen.

Important classes and interfaces

Am besten ist es, zu Beginn einer Implementierung den Inhalt einer bereitgestellten abstrakten Implementierung zu übernehmen, wodurch die meisten Dinge im Voraus erledigt werden und ein angemessenes Standardverhalten erreicht wird: die com.day.cq.dam.core.AbstractAssetHandler -Klasse.
Diese Klasse enthält bereits einen abstrakten Dienst-Deskriptor. Wenn Sie also den Inhalt dieser Klasse übernehmen und das maven-sling-Plug-in verwenden, müssen Sie die Übernahmemarkierung auf true setzen.
Implementieren Sie die folgenden Methoden:
  • extractMetadata() : extrahiert alle verfügbaren Metadaten.
  • getThumbnailImage() : erstellt ein Miniaturbild aus einem Asset.
  • getMimeTypes() : gibt die Asset-MIME-Typen zurück.
Hier eine Beispielvorlage:
package my.own.stuff; /** * @scr.component inherit="true" * @scr.service */ public class MyMediaHandler extends com.day.cq.dam.core.AbstractAssetHandler { // implement the relevant parts }

Schnittstelle und Klassen:
  • com.day.cq.dam.api.handler.AssetHandler -Schnittstelle: Diese Schnittstelle beschreibt den Dienst, der Unterstützung für bestimmte MIME-Typen hinzufügt. Wenn ein neuer MIME-Typ hinzugefügt werden soll, muss diese Schnittstelle implementiert werden. Die Schnittstelle enthält Methoden zum Importieren und Exportieren der jeweiligen Dokumente, zum Erstellen von Miniaturbildern und zum Extrahieren von Metadaten.
  • com.day.cq.dam.core.AbstractAssetHandler -Klasse: Diese Klasse dient als Grundlage für alle anderen Asset-Handler-Implementierungen und bietet häufig verwendete Funktionen.
  • com.day.cq.dam.core.AbstractSubAssetHandler -Klasse:
    • Diese Klasse dient als Grundlage für alle anderen Asset-Handler-Implementierungen und bietet häufig verwendete Funktionen sowie häufig verwendete Funktionen für die Extraktion von Teilassets.
    • Die beste Methode zum Beginn einer Implementierung besteht darin, eine bereitgestellte abstrakte Implementierung zu übernehmen, die die meisten Dinge übernimmt und ein vernünftiges Standardverhalten bietet: die Klasse com.day.cq.dam.core.AbstractAssetHandler.
    • Diese Klasse enthält bereits einen abstrakten Dienst-Deskriptor. Wenn Sie also den Inhalt dieser Klasse übernehmen und das maven-sling-Plug-in verwenden, müssen Sie das Übernahme-Flag auf true setzen.
Die folgenden Methoden müssen implementiert werden:
  • extractMetadata() : Diese Methode extrahiert alle verfügbaren Metadaten.
  • getThumbnailImage() : Diese Methode erstellt ein Miniaturbild aus dem übergebenen Asset.
  • getMimeTypes() : Diese Methode gibt den/die Asset-MIME-Typ(en) zurück.
Hier eine Beispielvorlage:
package my.own.stuff; /&ast;&ast; &ast; @scr.component inherit="true" &ast; @scr.service &ast;/ public class MyMediaHandler extends com.day.cq.dam.core.AbstractAssetHandler { // die relevanten Teile implementieren }
Schnittstelle und Klassen:
  • com.day.cq.dam.api.handler.AssetHandler -Schnittstelle: Diese Schnittstelle beschreibt den Dienst, der Unterstützung für bestimmte MIME-Typen hinzufügt. Wenn ein neuer MIME-Typ hinzugefügt werden soll, muss diese Schnittstelle implementiert werden. Die Schnittstelle enthält Methoden zum Importieren und Exportieren der jeweiligen Dokumente, zum Erstellen von Miniaturbildern und zum Extrahieren von Metadaten.
  • com.day.cq.dam.core.AbstractAssetHandler -Klasse: Diese Klasse dient als Grundlage für alle anderen Asset-Handler-Implementierungen und bietet häufig verwendete Funktionen.
  • com.day.cq.dam.core.AbstractSubAssetHandler -Klasse: Diese Klasse dient als Grundlage für alle anderen Asset-Handler-Implementierungen und bietet häufig verwendete Funktionen sowie übliche Funktionen für die Extrahierung von Teil-Assets.

Example: create a specific text handler

In diesem Abschnitt erstellen Sie einen spezifischen Text-Handler, der Miniaturbilder mit einem Wasserzeichen erstellt.
Gehen Sie wie folgt vor:
Lesen Sie die Entwicklungstools , um Eclipse mit einem Maven Plugin zu installieren und einzurichten und um die Abhängigkeiten einzurichten, die für das Maven Projekt benötigt werden.
After you perform the following procedure, when you upload a TXT file into Experience Manager, the file's metadata are extracted and two thumbnails with a watermark are generated.
  1. Erstellen Sie in Eclipse myBundle ein Maven Projekt:
    1. In the Menu bar, click File > New > Other .
    2. In the dialog, expand the Maven folder, select Maven project and click Next .
    3. Check the Create a simple project box and the Use default Workspace locations box, then click Next .
    4. Definieren eines Maven Projekts:
      • Group Id: com.day.cq5.myhandler .
      • Artefakt-ID: myBundle.
      • Name: Mein Experience Manager Bundle.
      • Description: This is my Experience Manager bundle.
    5. Klicken Sie auf Finish .
  2. Set the Java compiler to version 1.5:
    1. Right-click the myBundle project, select Properties.
    2. Select Java Compiler and set following properties to 1.5:
      • Compiler-Kompatibilitätsstufe
      • Kompatibilität von generierten .class-Dateien
      • Quellkompatibilität
    3. Klicken Sie auf OK . In the dialog window, click Yes .
  3. Replace the code in the pom.xml file with the following code:
    <project xmlns="https://maven.apache.org/POM/4.0.0" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="https://maven.apache.org/POM/4.0.0 https://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. Erstellen Sie das Paket com.day.cq5.myhandler , das die Java Klassen unter myBundle/src/main/java :
    1. Under myBundle, right-click src/main/java , select New, then Package.
    2. Name it com.day.cq5.myhandler and click Finish.
  5. Erstellen Sie die Java Klasse MyHandler :
    1. Klicken Sie Eclipseunter myBundle/src/main/java der rechten Maustaste auf das com.day.cq5.myhandler Paket. Wählen Sie Neuund dann Klasse.
    2. In the dialog window, name the Java class MyHandler and click Finish. Eclipse erstellt und öffnet die Datei MyHandler.java .
    3. In MyHandler.java replace the existing code with the following and then save the changes:
    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 whitespaces in a row we don't 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 whitespace then we need to add one extra word.
      if (!currentWhiteSpace) { numwords++; }
      return numwords;
     }
    }
    
    
  6. Compile the Java class and create the bundle:
    1. Right-click the myBundle project, select Run As , then Maven Install .
    2. The bundle myBundle-0.0.1-SNAPSHOT.jar (containing the compiled class) is created under myBundle/target .
  7. In CRX explorer, create a new node under /apps/myApp . Name = install , Type = nt:folder .
  8. Copy the bundle myBundle-0.0.1-SNAPSHOT.jar and store it under /apps/myApp/install (for example with WebDAV). The new text handler is now active in Experience Manager.
  9. In your browser, open the Apache Felix Web Management Console. Select the Components tab and disable the default text handler com.day.cq.dam.core.impl.handler.TextHandler .

Command Line based media handler

Experience ManagerMit können Sie ein beliebiges Befehlszeilen-Tool (z. B. ) innerhalb eines Workflows ausführen, um Assets zu konvertieren und dem Asset das neue Ausgabeformat hinzuzufügen. ImageMagick You only need to install the command-line tool on the disk hosting the Experience Manager server and to add and configure a process step to the workflow. Der aufgerufene Prozess CommandLineProcess ermöglicht zudem die Filterung nach spezifischen MIME-Typen und die Erstellung mehrerer Miniaturbilder auf der Grundlage des neuen Ausgabeformats.
The following conversions can be automatically run and stored within Assets:
Bei Nicht-Windows-Systemen gibt das FFmpeg-Tool einen Fehler zurück, wenn Darstellungen für ein Video-Asset generiert werden, dessen Dateiname ein einfaches Anführungszeichen (') enthält. If the name of your video file includes a single quote, remove it before uploading to Experience Manager.
Der Prozess CommandLineProcess führt folgende Vorgänge in der angegebenen Reihenfolge aus:
  • Filtert die Datei nach bestimmten MIME-Typen, falls angegeben.
  • Creates a temporary directory on the disk hosting the Experience Manager server.
  • Streamt die Originaldatei in das temporäre Verzeichnis.
  • Führt den Befehl aus, der über die Argumente des Schritts definiert ist. The command is being executed within the temporary directory with the permissions of the user running Experience Manager.
  • Streams the result back into the rendition folder of the Experience Manager server.
  • Löscht das temporäre Verzeichnis.
  • Erstellt Miniaturbilder auf der Grundlage dieser Ausgabeformate, falls angegeben. Die Anzahl und die Abmessungen von Miniaturbildern werden durch die Argumente des Schritts definiert.

An example using ImageMagick

The following example shows you how to set up the command line process step so that every time an asset with the miMIME e-type GIF or TIFF is added to /content/dam on the Experience Manager server, a flipped image of the original is created together with three additional thumbnails (140x100, 48x48, and 10x250).
To do this, use ImageMagick. ImageMagick ist eine kostenlose Befehlszeilensoftware zum Erstellen, Bearbeiten und Erstellen von Bitmapbildern.
Installieren Sie ImageMagick auf dem Datenträger, auf dem der Experience Manager Server gehostet wird:
  1. Install ImageMagick: See ImageMagick documentation .
  2. Richten Sie das Tool ein, damit Sie den Befehl „convert“ über die Befehlszeile ausführen können.
  3. Um festzustellen, ob das Tool ordnungsgemäß installiert wurde, führen Sie den Befehl convert -h über die Befehlszeile aus.
    Es wird ein Hilfebildschirm mit allen möglichen Optionen des Konvertierungs-Tools angezeigt.
    In some versions of Windows, the convert command may fail to run because it conflicts with the native convert utility that is part of Windows installation. In this case, mention the complete path for the ImageMagick software used to convert image files to thumbnails. Beispiel: "C:\Program Files\ImageMagick-6.8.9-Q16\convert.exe" -define jpeg:size=319x319 ${filename} -thumbnail 319x319 cq5dam.thumbnail.319.319.png .
  4. To see if the tool runs properly, add a JPG image to the working directory and run the command convert <image-name>.jpg -flip <image-name>-flipped.jpg on the command line. Ein gespiegeltes Bild wird dem Verzeichnis hinzugefügt. Fügen Sie dann den Befehlszeilenprozessschritt dem Workflow DAM-Update-Asset hinzu.
  5. Rufen Sie die Konsole Workflow auf.
  6. Bearbeiten Sie auf der Registerkarte Modelle das Modell DAM-Update-Asset .
  7. Ändern Sie die Argumente des Schritts für die Web-aktivierte Darstellung in: mime:image/gif,mime:image/tiff,tn:140:100,tn:48:48,tn:10:250,cmd:convert ${directory}/${filename} -flip ${directory}/${basename}.flipped.jpg .
  8. Speichern Sie den Workflow.
Fügen Sie zum Testen des geänderten Workflows ein Asset zu /content/dam hinzu.
  1. Rufen Sie im Dateisystem ein TIFF-Bild Ihrer Wahl ab. Benennen Sie es in myImage.tiff um und kopieren Sie es in /content/dam , z. B. mithilfe von WebDAV.
  2. Rufen Sie die Konsole CQ5 DAM auf, z. B. http://localhost:4502/libs/wcm/core/content/damadmin.html .
  3. Öffnen Sie das Asset myImage.tiff und prüfen Sie, ob das gespiegelte Bilder und die drei Miniaturbilder erstellt wurden.

Configure the CommandLineProcess process step

In diesem Abschnitt wird beschrieben, wie die Prozess-Argumente des CommandLineProcess festgelegt werden.
Trennen Sie die Werte der Prozessargumente durch Kommas und verwenden Sie kein Leerzeichen, um sie mit einemLeerzeichen zu versehen.
Argument-Format
Beschreibung
mime:<MIME-Typ>
Optionales Argument. Der Prozess wird angewendet, wenn das Asset denselben MIME-Typ wie das Argument hat.
Es können mehrere MIME-Typen definiert werden.
tn:<Breite>:<Höhe>
Optionales Argument. Der Prozess erstellt ein Miniaturbild mit den Abmessungen, die im Argument definiert sind.
Es können mehrere Miniaturbilder definiert werden.
cmd: <Befehl>
Definiert den ausgeführten Befehl. Die Syntax hängt vom Befehlszeilen-Tool ab. Nur ein Befehl kann definiert werden.
Die folgenden Variablen können zum Erstellen des Befehls verwendet werden:
${filename} : Name der Eingabedatei, z. B. original.jpg
${file} : Vollständiger Pfadname der Eingabedatei, z. B. /tmp/cqdam0816.tmp/original.jpg
${directory} : Verzeichnis der Eingabedatei, z. B. /tmp/cqdam0816.tmp
${basename} : Name der Eingabedatei ohne Erweiterung, z. B. Original
${extension} : Erweiterung der Eingabedatei, z. B. JPG.
For example, if ImageMagick is installed on the disk hosting the Experience Manager server and if you create a process step using CommandLineProcess as Implementation and the following values as Process 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
then, when the workflow runs, the step only applies to assets that have image/gif or mime:image/tiff as mime-types , it creates a flipped image of the original, converts it into JPG and creates three thumbnails that have the dimensions: 140x100, 48x48, and 10x250.
Use the following Process Arguments to create the three standard thumbnails using 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
Use the following Process Arguments to create the web-enabled rendition using ImageMagick:
mime:image/tiff,mime:image/png,mime:image/bmp,mime:image/gif,mime:image/jpeg,cmd:convert ${filename} -define jpeg:size=1280x1280 -thumbnail "1280x1280>" cq5dam.web.1280.1280.jpeg
The CommandLineProcess step only applies to assets (nodes of type dam:Asset ) or descendants of an asset.