14 votos

ImageMagick:convert-im6.q16: no hay imágenes definidas

Según esta pregunta, ¿Cómo puedo convertir una serie de imágenes en un PDF desde la línea de comandos en linux? , ImageMagick puede convertir varias imágenes en un solo PDF.

¿Cómo podría invertir la operación y convertir un PDF de varias páginas en múltiples imágenes?

He probado el siguiente comando, pero tengo los errores que se muestran:

$ convert test.pdf test-%02.png
convert-im6.q16: attempt to perform an operation not allowed by the security policy `PDF' @ error/constitute.c/IsCoderAuthorized/408.
convert-im6.q16: no images defined `test-%02.png' @ error/convert.c/ConvertImageCommand/3258.

gs se instaló:

$ gs --version
9.26

Versión de Ubuntu:

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 19.04
Release:    19.04
Codename:   disco

0 votos

Quizás stackoverflow.com/q/2693820/12181862 tiene algunos consejos.

0 votos

¿Qué versión de Ubuntu estás utilizando? Parece que una edición juiciosa de /etc/ImageMagick-7/policy.xml debería solucionar el problema: añadir <policy domain="coder" rights="read | write" pattern="PDF" /> antes de </policymap>

0 votos

Ubuntu 19.04 @andrew.46

24voto

Shaun Bohannon Puntos 271

Curiosamente, ImageMagick en la versión 19.04 (y en otras versiones de Ubuntu) desactiva muchos tipos de formato ghostscript. Esto se puede ver en este fragmento de /etc/ImageMagick-6/policy.xml :

  <!-- disable ghostscript format types -->
  <policy domain="coder" rights="none" pattern="PS" />
  <policy domain="coder" rights="none" pattern="EPS" />
  <policy domain="coder" rights="none" pattern="PDF" /> <------- Here!!
  <policy domain="coder" rights="none" pattern="XPS" />

Por supuesto, he añadido la flecha para llamar tu atención :). Modifica esta línea con flecha a:

  <policy domain="coder" rights="read | write" pattern="PDF" />

Puede utilizar su editor de texto favorito para lograr esto, utilizando privilegios elevados, o tal vez simplemente utilizar el siguiente sed un solo texto :

sudo sed -i_bak \
's/rights="none" pattern="PDF"/rights="read | write" pattern="PDF"/' \
/etc/ImageMagick-6/policy.xml

Y entonces todo debería estar bien, he probado esto exhaustivamente en mi propia VM 19.04 donde la conversión que buscas funciona impecablemente ...

Si desea volver a cambiar la configuración a por defecto la siguiente línea restaurará el archivo de copia de seguridad creado en la ejecución con sed:

sudo mv /etc/ImageMagick-6/policy.xml_bak /etc/ImageMagick-6/policy.xml

¡Cómo mola la línea de comandos!

0 votos

¡Gracias! ¡Esto me ha estado molestando toda la mañana!

0 votos

@Pedroski Me alegra saber que te ha funcionado :)

0 votos

¿Qué pasa con el problema de seguridad con PostScript PDF descrito en cromwell-intl.com/open-source/pdf-not-authorized.html ? ¿Es eso una preocupación?

5voto

Luke Puplett Puntos 358

Otra razón para obtener ese mismo error es que las imágenes de origen son demasiado anchas, demasiado altas o demasiado pesadas.

El /etc/ImageMagick-6/policy.xml controla lo que es aceptable como imagen. La anchura y la altura máximas se establecen así:

<policy domain="resource" name="width" value="10KP"/>
<policy domain="resource" name="height" value="10KP"/>

10KP significa 10000 píxeles. Si su imagen es más grande que eso corriendo identify no mostrará la información de la imagen en el terminal y la imagen está básicamente fuera del alcance de Image Magick.

Otras propiedades comunes que afectan a que las imágenes estén disponibles o no son: memory , map , area y disk .

Aquí el documento que describe policy.xml : https://imagemagick.org/script/security-policy.php

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: