Baixe este arquivo zip [1] para o seu servidor AEM.
Problema
Depois de carregar determinados PDFs, a instância do AEM falha. Nos arquivos de log, você vê OutOfMemoryError. Nos dumps de encadeamento, você vê encadeamentos como o abaixo, mostrando encadeamentos presos no código da JVM sun.java2d.cmm.lcms.LCMS.createNativeTransform:
"JobHandler: /etc/workflow/instances/server0/2017-02-16/update_asset_833:/content/dam/geometrixx/documents/Test.pdf/jcr:content/renditions/original" #168 daemon prio=1 os_prio=0 tid=0x00007ff525c59800 nid=0x1ab7 runnable [0x00007ff3feffc000] java.lang.Thread.State: RUNNABLE at sun.java2d.cmm.lcms.LCMS.createNativeTransform(Native Method) at sun.java2d.cmm.lcms.LCMS.createTransform(LCMS.java:156) at sun.java2d.cmm.lcms.LCMSTransform.doTransform(LCMSTransform.java:155) - locked <0x000000077e9ae718> (a sun.java2d.cmm.lcms.LCMSTransform) at sun.java2d.cmm.lcms.LCMSTransform.colorConvert(LCMSTransform.java:268) at java.awt.image.ColorConvertOp.ICCBIFilter(ColorConvertOp.java:355) at java.awt.image.ColorConvertOp.filter(ColorConvertOp.java:282) at com.adobe.internal.pdftoolkit.image.ARGBImage.convertToRGB(ARGBImage.java:340) at com.adobe.internal.pdftoolkit.image.ARGBImage.handleICCColorSpace(ARGBImage.java:177) at com.adobe.internal.pdftoolkit.image.ARGBImage.convertToRGB(ARGBImage.java:310) at com.adobe.internal.pdftoolkit.image.ARGBImage.access$1300(ARGBImage.java:59) at com.adobe.internal.pdftoolkit.image.ARGBImage$ARGBTilesIterator.ConvertToRGB(ARGBImage.java:587) at com.adobe.internal.pdftoolkit.image.ARGBImage$ARGBTilesIterator.hasNext(ARGBImage.java:640) at com.adobe.internal.pdftoolkit.services.rasterizer.impl.RasterContentImageItem.writeToDisplayArea(RasterContentImageItem.java:211) at com.adobe.internal.pdftoolkit.services.rasterizer.impl.RasterDocument.createPage(RasterDocument.java:131) at com.adobe.internal.pdftoolkit.services.rasterizer.impl.PDFToRasterConverter.toBufferedImage(PDFToRasterConverter.java:127) at com.adobe.internal.pdftoolkit.services.rasterizer.PageRasterizer.next(PageRasterizer.java:98) at com.day.cq.dam.handler.standard.pdf.PdfHandler.getImage(PdfHandler.java:583) at com.day.cq.dam.handler.standard.pdf.PdfHandler.getImage(PdfHandler.java:546) at com.day.cq.dam.core.impl.cache.CQBufferedImageCache.getImage(CQBufferedImageCache.java:116) at com.day.cq.dam.core.impl.gfx.CommonsGfxRenderer.createImageLayer(CommonsGfxRenderer.java:460) at com.day.cq.dam.core.impl.gfx.CommonsGfxRenderer.createLayer(CommonsGfxRenderer.java:138) at com.day.cq.dam.core.impl.gfx.CommonsGfxRenderer.render(CommonsGfxRenderer.java:91) at com.adobe.cq.gfx.impl.GfxImpl.render(GfxImpl.java:94) at com.day.cq.dam.core.impl.RenditionMakerImpl$PlanBasedTemplate.apply(RenditionMakerImpl.java:127) at com.day.cq.dam.core.impl.RenditionMakerImpl.generateRenditions(RenditionMakerImpl.java:184) at com.day.cq.dam.core.process.CreateThumbnailProcess.createThumbnails(CreateThumbnailProcess.java:119) at com.day.cq.dam.core.process.ThumbnailProcess.execute(ThumbnailProcess.java:76) at com.day.cq.workflow.compatibility.CQWorkflowProcessRunner.execute(CQWorkflowProcessRunner.java:93) at com.adobe.granite.workflow.core.job.HandlerBase.executeProcess(HandlerBase.java:184) at com.adobe.granite.workflow.core.job.JobHandler.process(JobHandler.java:234) at org.apache.sling.event.impl.jobs.JobConsumerManager$JobConsumerWrapper.process(JobConsumerManager.java:512) at org.apache.sling.event.impl.jobs.queues.JobQueueImpl.startJob(JobQueueImpl.java:303) - locked <0x00000005cd6dab40> (a org.apache.sling.event.impl.jobs.queues.JobExecutionContextImpl) at org.apache.sling.event.impl.jobs.queues.JobQueueImpl.access$100(JobQueueImpl.java:66) at org.apache.sling.event.impl.jobs.queues.JobQueueImpl$1.run(JobQueueImpl.java:238) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)
Ambiente
AEM 6.x usando o JDK 8
Causa
É um problema conhecido com o processamento de PDF no AEM (CQ-4202164) causado por um problema da Oracle JVM.
Resolução
Nos sistemas Windows e Mac usando o Oracle JVM:
Se você estiver usando o Oracle JVM no Windows ou Mac, configure o Java para usar a API do KCMS herdada em vez do LCMS. Há um problema conhecido que faz com que isso não funcione no JDK8 no Linux.
Modifique seu script de inicialização do AEM e inclua este parâmetro da JVM na variável CQ_JVM_OPTS:
-Dsun.java2d.cmm=sun.java2d.cmm.kcms.KcmsServiceProvider
Por exemplo (snippet do script de início):
# default JVM options if [ -z "$CQ_JVM_OPTS" ]; then CQ_JVM_OPTS='-server -Xmx1024m -XX:MaxPermSize=256M -Djava.awt.headless=true -Dsun.java2d.cmm=sun.java2d.cmm.kcms.KcmsServiceProvider' fi
Outras soluções (todos os sistemas operacionais)
A. Limpar as tarefas de lançamento do fluxo de trabalho do ativo de atualização
- Acesse http://host:port/crx/de/index.jsp e faça o login como usuário administrador.
- Navegue para este caminho em que {slingid} é o id da sling da instância do AEM
/var/eventing/jobs/assigned/{slingid}/com.adobe.granite.workflow.job.etc.workflow.models.dam.update_asset.jcr_content.model - Clique com o botão direito e exclua o nó com.adobe.granite.workflow.job.etc.workflow.models.dam.update_asset.jcr_content.model
- Salve.
- Reinicie o AEM.
Isso exclui todos os trabalhos de sling ativos para PDFs que estão bloqueando o AEM.
B. Instalar a ferramenta de linha de comando PDF Rasterizer
-
-
Descompacte o arquivo zip em uma nova pasta no servidor.
-
Faça o upload de um arquivo PDF para o servidor na mesma pasta de onde você extraiu o arquivo zip.
-
Execute este comando nessa pasta para garantir que o rasterizador funcione (substitua pdffilename.pdf pelo nome do arquivo do documento PDF).
/opt/aem/author62/rasterizer/PDFRasterizer -d -p 1 -s 1280 -t PNG -i pdffilename.pdf
A saída deverá ser algo desse tipo:
Total time in image conversion (in ms): 163 Total time (in ms): 896. Time to initialize: 12. Time for conversion: 884
-
Supondo que o rasterizador funcione bem na linha de comando, siga as etapas neste artigo para configurá-lo para funcionar no AEM.
-
Além das etapas nessa página, você também deve modificar o Ativos de atualização do DAM etapa do fluxo de trabalho Rasterizar visualização de visualização de imagem PDF / AI. Remova application / pdf da lista de Tipos MIME.
-
Clique em Save para salvar o modelo de fluxo de trabalho.
-
Agora, tente fazer o upload de PDFs e as renderizações são geradas rapidamente e sem alta utilização de memória.