Show Menu
TÓPICOS×

Processar ativos usando manipuladores de mídia e workflows

Os ativos Adobe Experience Manager fornecem um conjunto de workflows padrão e manipuladores de mídia para processar ativos. Um fluxo de trabalho define um gerenciamento de ativos típico e uma tarefa de processamento e, em seguida, delega as tarefas específicas aos manipuladores de mídia, por exemplo, geração de miniaturas ou extração de metadados.
É possível definir um fluxo de trabalho que é executado automaticamente quando um ativo de um tipo ou formato específico é carregado no servidor. As etapas de processamento são definidas como uma série de manipuladores de mídia do AEM Assets. O AEM fornece alguns manipuladores integrados, e outros podem ser desenvolvidos Criação de um novo Media Handler personalizados ou definidos delegando o processo a uma ferramenta de linha de comando.
Os manipuladores de mídia são serviços dentro dos ativos AEM que executam ações específicas em ativos. Por exemplo, quando um arquivo de áudio MP3 é carregado no AEM, um fluxo de trabalho aciona um manipulador MP3 que extrai os metadados e gera uma miniatura. Geralmente, os manipuladores de mídia são usados em combinação com workflows. Os tipos MIME mais comuns são suportados no AEM. tarefas específicas podem ser executadas em ativos estendendo/criando workflows, estendendo/criando manipuladores de mídia ou desabilitando/habilitando manipuladores de mídia.
Consulte a página de formatos suportados pelos ativos para obter uma descrição de todos os formatos suportados pelos ativos AEM, bem como dos recursos suportados para cada formato.

Manipuladores de mídia padrão

Os seguintes manipuladores de mídia estão disponíveis nos ativos AEM e lidam com os tipos MIME mais comuns:
Nome do manipulador
Nome do serviço (no Console do sistema)
Tipos MIME suportados
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
  • aplicativo/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
fallback caso nenhum outro manipulador tenha sido encontrado para extrair dados de um ativo
Todos os manipuladores executam as seguintes tarefas:
  • extrair todos os metadados disponíveis do ativo.
  • criação de uma imagem em miniatura fora do ativo.
É possível visualização dos manipuladores de mídia ativos:
  1. No navegador, navegue até http://localhost:4502/system/console/components .
  2. Clique no link com.day.cq.dam.core.impl.store.AssetStoreImpl .
  3. Uma lista com todos os manipuladores de mídia ativos é exibida. Por exemplo:

Use manipuladores de mídia em workflows para executar tarefas em Ativos

Os manipuladores de mídia são serviços normalmente usados em combinação com workflows.
O AEM tem alguns workflows padrão para processar ativos. Para visualização, abra o console Fluxo de trabalho e clique na guia Modelos : os títulos de fluxo de trabalho que são start com os ativos AEM são os ativos específicos.
workflows existentes podem ser estendidos e novos podem ser criados para processar ativos de acordo com requisitos específicos.
O exemplo a seguir mostra como aprimorar o fluxo de trabalho de Sincronização do AEM Assets para que os ativos secundários sejam gerados para todos os ativos, exceto documentos PDF.

Desabilitando/habilitando um manipulador de mídia

Os manipuladores de mídia podem ser desativados ou ativados por meio do Console de gerenciamento da Web do Apache Felix. Quando o manipulador de mídia está desativado, suas tarefas não são executadas nos ativos.
Para ativar/desativar um manipulador de mídia:
  1. No navegador, navegue até https://<host>:<port>/system/console/components .
  2. Clique em Desativar ao lado do nome do manipulador de mídia. Por exemplo: com.day.cq.dam.handler.standard.mp3.Mp3Handler .
  3. Atualize a página: um ícone é exibido ao lado do manipulador de mídia indicando que ele está desativado.
  4. Para ativar o manipulador de mídia, clique em Ativar ao lado do nome do manipulador de mídia.

Criação de um novo Media Handler

Para suportar um novo tipo de mídia ou para executar tarefas específicas em um ativo, é necessário criar um novo manipulador de mídia. Esta seção descreve como proceder.

Classes e interfaces importantes

A melhor maneira de start de uma implementação é herdar de uma implementação abstrata fornecida que cuida da maioria das coisas e fornece um comportamento padrão razoável: a com.day.cq.dam.core.AbstractAssetHandler classe.
Essa classe já fornece um descritor de serviço abstrato. Portanto, se você herdar desta classe e usar o plug-in maven-sling-sling, certifique-se de definir o sinalizador de herança como true .
Implemente os seguintes métodos:
  • extractMetadata() : extrai todos os metadados disponíveis.
  • getThumbnailImage() : cria uma imagem em miniatura do ativo passado.
  • getMimeTypes() : retorna os tipos MIME do ativo.
Este é um modelo de exemplo:
package my.own.stuff; /** * @scr.component inherit="true" * @scr.service */ public class MyMediaHandler extends com.day.cq.dam.core.AbstractAssetHandler { // implement the relevant parts }
A interface e as classes incluem:
  • com.day.cq.dam.api.handler.AssetHandler interface: Esta interface descreve o serviço que adiciona suporte para tipos MIME específicos. A adição de um novo tipo mime requer a implementação dessa interface. A interface contém métodos para importar e exportar os documentos específicos, para criar miniaturas e extrair metadados.
  • com.day.cq.dam.core.AbstractAssetHandler classe: Essa classe serve como base para todas as outras implementações do manipulador de ativos e fornece funcionalidade comum.
  • classe com.day.cq.dam.core.AbstractSubAssetHandler :
    • Essa classe serve como base para todas as outras implementações do manipulador de ativos e fornece a funcionalidade comum usada, além da funcionalidade usada frequentemente na extração de ativos secundários.
    • A melhor maneira de start de uma implementação é herdar de uma implementação abstrata fornecida que cuida da maioria das coisas e fornece um comportamento padrão razoável: a classe com.day.cq.dam.core.AbstractAssetHandler.
    • Essa classe já fornece um descritor de serviço abstrato. Portanto, se você herdar desta classe e usar o plug-in maven-sling-sling, certifique-se de definir o sinalizador de herança como verdadeiro.
É necessário implementar os seguintes métodos:
  • extractMetadata() : este método extrai todos os metadados disponíveis.
  • getThumbnailImage() : esse método cria uma imagem em miniatura do ativo passado.
  • getMimeTypes() : esse método retorna o(s) tipo(s) mime(s) do ativo.
Este é um modelo de exemplo:
empacotar my.own.stuff /&ast;&ast; &ast; @scr.component hereit="true" &ast; @scr.service &ast;/ classe pública MyMediaHandler estende com.day.cq.dam.core.AbstractAssetHandler { // implementar as partes relevantes }
A interface e as classes incluem:
  • com.day.cq.dam.api.handler.AssetHandler interface: Esta interface descreve o serviço que adiciona suporte para tipos MIME específicos. A adição de um novo tipo mime requer a implementação dessa interface. A interface contém métodos para importar e exportar os documentos específicos, para criar miniaturas e extrair metadados.
  • com.day.cq.dam.core.AbstractAssetHandler classe: Essa classe serve como base para todas as outras implementações do manipulador de ativos e fornece funcionalidade comum.
  • com.day.cq.dam.core.AbstractSubAssetHandler classe: Essa classe serve como base para todas as outras implementações do manipulador de ativos e fornece funcionalidade comum usada, além da funcionalidade usada comum para a extração de subativos.

Exemplo: criar um manipulador de texto específico

Nesta seção, você criará um manipulador de texto específico que gera miniaturas com uma marca d'água.
Proceda do seguinte modo:
Consulte Ferramentas de desenvolvimento para instalar e configurar o Eclipse com um plug-in Maven e para configurar as dependências necessárias para o projeto Maven.
Depois de executar o procedimento a seguir, ao carregar um arquivo de texto no AEM, os metadados do arquivo são extraídos e duas miniaturas com uma marca d'água são geradas.
  1. No Eclipse, crie um projeto myBundle Maven:
    1. Na barra de menus, clique em Arquivo > Novo > Outro .
    2. Na caixa de diálogo, expanda a pasta Maven, selecione Projeto Maven e clique em Avançar .
    3. Marque a caixa Criar um projeto simples e a caixa Usar locais padrão da Workspace e clique em Avançar .
    4. Defina o projeto Maven:
      • ID do grupo: com.day.cq5.myhandler
      • Id do artefato: myBundle
      • Nome: Meu pacote do AEM
      • Descrição: Este é meu pacote do AEM
    5. Click Finish .
  2. Defina o Compilador Java como a versão 1.5:
    1. Clique com o botão direito do mouse no myBundle projeto e selecione Propriedades.
    2. Selecione Java Compiler e defina as seguintes propriedades como 1.5:
      • Nível de conformidade do compilador
      • Compatibilidade de arquivos .class gerada
      • Compatibilidade de origem
    3. Clique em OK . Na janela de diálogo, clique em Sim.
  3. Substitua o código no arquivo pom.xml pelo seguinte código:
    <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. Crie o pacote com.day.cq5.myhandler que contém as classes Java em myBundle/src/main/java :
    1. Em myBundle, clique com o botão direito do mouse src/main/java , selecione New (Novo) e Package (Pacote).
    2. Nomeie-o com.day.cq5.myhandler e clique em Concluir.
  5. Crie a classe Java MyHandler :
    1. No Eclipse, em myBundle/src/main/java , clique com o botão direito do mouse no com.day.cq5.myhandler pacote, selecione Novo e, em seguida, Classe.
    2. Na janela de diálogo, nomeie a classe Java MyHandler e clique em Concluir. O Eclipse cria e abre o arquivo MyHandler.java.
    3. Em MyHandler.java substituição do código existente pelo seguinte e salve as alterações:
    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 whitespace 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 a classe Java e crie o pacote:
    1. Clique com o botão direito do mouse no projeto myBundle, selecione Executar como e, em seguida, Maven Install (Instalação Maven).
    2. O pacote myBundle-0.0.1-SNAPSHOT.jar (que contém a classe compilada) é criado em myBundle/target .
  7. No CRX Explorer, crie um novo nó em /apps/myApp . Nome = install , Tipo = nt:folder .
  8. Copie o pacote myBundle-0.0.1-SNAPSHOT.jar e armazene-o em /apps/myApp/install (por exemplo, com WebDAV). O novo manipulador de texto agora está ativo no AEM.
  9. No seu navegador, abra o Console de gerenciamento da Web do Apache Felix. Selecione a guia Componentes e desative o manipulador de texto padrão com.day.cq.dam.core.impl.handler.TextHandler .

Manipulador de Mídia Baseado em Linha de Comando

O AEM permite que você execute qualquer ferramenta de linha de comando em um fluxo de trabalho para converter ativos (como ImageMagick) e adicionar a nova representação ao ativo. Você só precisa instalar a ferramenta de linha de comando no disco que hospeda o servidor AEM e adicionar e configurar uma etapa do processo ao fluxo de trabalho. O processo chamado CommandLineProcess , também permite filtrar de acordo com tipos MIME específicos e criar várias miniaturas com base na nova execução.
As seguintes conversões podem ser executadas e armazenadas automaticamente nos ativos AEM:
Em sistemas que não sejam Windows, a ferramenta FFMpeg retorna um erro ao gerar execuções para um ativo de vídeo que tem uma única citação (') no nome do arquivo. Se o nome do arquivo de vídeo incluir uma única citação, remova-a antes de carregá-la para o AEM.
O CommandLineProcess processo executa as seguintes operações na ordem em que são listadas:
  • Filtros o arquivo de acordo com tipos MIME específicos, se especificado.
  • Cria um diretório temporário no disco que hospeda o servidor AEM.
  • Transmite o arquivo original para o diretório temporário.
  • Executa o comando definido pelos argumentos da etapa. O comando está sendo executado no diretório temporário com as permissões do usuário que está executando o AEM.
  • Transmite o resultado de volta para a pasta de execução do servidor AEM.
  • Exclui o diretório temporário.
  • Cria miniaturas com base nessas execuções, se especificado. O número e as dimensões das miniaturas são definidos pelos argumentos da etapa.

Um exemplo usando ImageMagick

O exemplo a seguir mostra como configurar a etapa do processo da linha de comando para que cada vez que um ativo com o tipo mime gif ou tiff for adicionado a /content/dam no servidor AEM, uma imagem invertida do original seja criada junto com três miniaturas adicionais (140x100, 48x48 e 10x250).
Para fazer isso, use ImageMagick. Instale o ImageMagick no disco que hospeda o servidor AEM:
  1. Instale o ImageMagick. Consulte a documentação do ImageMagick para obter mais informações.
  2. Configure a ferramenta para que você possa executar a conversão na linha de comando.
  3. Para ver se a ferramenta está instalada corretamente, execute o seguinte comando convert -h na linha de comando.
    Ele exibe uma tela de ajuda com todas as opções possíveis da ferramenta de conversão.
    Em algumas versões do Windows (por exemplo, Windows SE), o comando de conversão pode falhar ao ser executado porque está em conflito com o utilitário de conversão nativo que faz parte da instalação do Windows. Nesse caso, mencione o caminho completo do utilitário ImageMagick usado para converter arquivos de imagem em miniaturas. Por exemplo, "C:\Program Files\ImageMagick-6.8.9-Q16\convert.exe" -define jpeg:size=319x319 ${filename} -thumbnail 319x319 cq5dam.thumbnail.319.319.png .
  4. Para ver se a ferramenta é executada corretamente, adicione uma imagem JPG ao diretório de trabalho e execute o comando convert <image-name>.jpg -flip <image-name>-flipped.jpg na linha de comando.
    Uma imagem virada é adicionada ao diretório.
Em seguida, adicione a etapa do processo da linha de comando ao fluxo de trabalho Atualizar ativo do DAM :
  1. Vá para o console Fluxo de trabalho .
  2. Na guia Modelos , edite o modelo DAM Update Asset (Atualizar ativo DAM).
  3. Altere as configurações da etapa de execução ativada pela Web da seguinte maneira:
    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. Salve o fluxo de trabalho.
Para testar o fluxo de trabalho modificado, adicione um ativo ao /content/dam .
  1. No sistema de arquivos, obtenha uma imagem TIFF de sua escolha. Renomeie-o para myImage.tiff e copie-o para /content/dam , por exemplo, usando WebDAV.
  2. Vá para o console CQ5 DAM , por exemplo http://localhost:4502/libs/wcm/core/content/damadmin.html .
  3. Abra o ativo myImage.tiff e verifique se a imagem invertida e as três miniaturas foram criadas.

Configurar a etapa do processo CommandLineProcess

Esta seção descreve como definir os Argumentos de processo do CommandLineProcess . Separe os valores de Argumentos de Processo usando uma vírgula e não start um valor com um espaço em branco.
Formato do argumento
Descrição
mime:<mime-type>
Argumento opcional. O processo é aplicado se o ativo tiver o mesmo tipo MIME que o argumento.
Vários tipos MIME podem ser definidos.
tn:<largura>:<altura>
Argumento opcional. O processo cria uma miniatura com as dimensões definidas no argumento.
Várias miniaturas podem ser definidas.
cmd: <comando>
Define o comando que será executado. A sintaxe depende da ferramenta de linha de comando. Somente um comando pode ser definido.
As seguintes variáveis podem ser usadas para criar o comando:
${filename} : nome do arquivo de entrada, por exemplo original.jpg
${file} : nome completo do caminho do arquivo de entrada, por exemplo /tmp/cqdam0816.tmp/original.jpg
${directory} : diretório do arquivo de entrada, por exemplo /tmp/cqdam0816.tmp
${basename} : nome do arquivo de entrada sem sua extensão, por exemplo original
${extension} : extensão do arquivo de entrada, por exemplo jpg
Por exemplo, se ImageMagick estiver instalado no disco que hospeda o servidor AEM e se você criar uma etapa do processo usando CommandLineProcess como Implementação e os seguintes valores como Argumentos de Processo:
mime:image/gif,mime:image/tiff,tn:140:100,tn:48:48,tn:10:250,cmd:convert ${directory}/${filename} -flip ${directory}/${basename}.flipped.jpg
então, quando o fluxo de trabalho é executado, a etapa se aplica somente aos ativos que têm image/gif ou mime:image/tiff como mime-types, cria uma imagem invertida do original, a converte em .jpg e cria três miniaturas que têm as dimensões: 140 x 100, 48 x 48 e 10 x 250.
Use os seguintes Argumentos de Processo para criar as três miniaturas padrão usando o 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 os seguintes Argumentos de Processo para criar a execução ativada pela Web usando o 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
A CommandLineProcess etapa se aplica somente aos Ativos (nós do tipo dam:Asset ) ou descendentes de um ativo.