Téléchargez ce fichier zip [1] sur le serveur AEM.
Problème
Une fois certains fichiers PDF transférés, l’instance AEM se bloque. Dans les fichiers journaux, l'erreur OutOfMemoryError est observée. Dans les images mémoire de threads, vous observez des threads semblables à celui ci-dessous montrant des threads bloqués dans le code 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)
Environnement
AEM 6.x utilisant JDK 8
Cause
Ce cas de figure a été observé dans le traitement d'un PDF dans AEM (CQ-4202164) grâce à un problème d'Oracle JVM.
Résolution
Sur les systèmes Windows et Mac utilisant Oracle JVM :
En cas d'utilisation de Oracle JVM sous Windows ou Mac, configurez Java pour employer KCMS API hérité au lieu de LCMS. Un problème causant cet échec dans JDK8 sous Linux a été constaté.
Modifier le script de démarrage AEM et ajouter ce paramètre JVM à la variable CQ_JVM_OPTS :
-Dsun.java2d.cmm=sun.java2d.cmm.kcms.KcmsServiceProvider
par exemple (extrait de code du script de démarrage) :
# 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
autres solutions (pour tous les systèmes d’exploitation)
A. Effacez les tâches de processus de mise à jour de ressources
- Accéder à http://host:port/crx/de/index.jsp et se connecter en tant qu'utilisateur admin.
- Parcourez en suivant ce chemin où {slingid} est l'ID Sling d'une instance AEM
/var/eventing/jobs/assigned/{slingid}/com.adobe.granite.workflow.job.etc.workflow.models.dam.update_asset.jcr_content.model - Cliquez avec le bouton droit de la souris et supprimez le nœud com.adobe.granite.workflow.job.etc.workflow.models.dam.update_asset.jcr_content.model
- Enregistrer.
- Relancez AEM.
Cette opération supprime toutes les Tâches Sling actives pour les fichiers PDF qui ne sont pas en train de boguer AEM.
B. Installer l'outil de ligne de commande de pixellisation PDF
-
-
Décompresser le fichier zip dans un nouveau dossier sur le serveur.
-
Transférez un fichier PDF sur le serveur dans le même dossier que celui où le fichier zip a été extrait.
-
Exécuter cette commande dans ce fichier pour s'assurer que la pixellisation par ligne fonctionne (remplacer pdffilename.pdf par le nom du document PDF).
/opt/aem/author62/rasterizer/PDFRasterizer -d -p 1 -s 1280 -t PNG -i pdffilename.pdf
La sortie doit être comme suit :
Total time in image conversion (in ms): 163 Total time (in ms): 896. Time to initialize: 12. Time for conversion: 884
-
En supposant que la pixellisation fonctionne correctement sur la ligne de commande, suivez les étapes décrites dans cet article pour la configurer afin de l'utiliser dans AEM.
-
En plus des étapes sur cette page, modifiez également celle du processus de mise à jour de gestion des actifs numériques (DAM) Pixellisation de rendu d'aperçu d'image PDF/AI. Supprimer application/pdf de la liste de types MIME.
-
Cliquez sur Enregistrer pour enregistrer le modèle de processus.
-
Essayez maintenant de soumettre des PDF : les rendus sont générés rapidement et sans l'utilisation élevée de mémoire.
Adobe
Recevez de l’aide plus rapidement et plus facilement
Nouvel utilisateur ?