convert /home/bill/TempScan/*.png myfile.pdf
da mensaje de error:
convert-im6.q16: not authorized `myfile.pdf' @ error/constitute.c/WriteImage/1037.
¡Cualquier ayuda sería apreciada!
Respuesta1
convert
es una poderosa herramienta de línea de comandos para convertir gráficos. Ghostscript proporciona soporte para PDF. Debido a una importanteagujero de seguridad en GhostscriptAntes de la versión 9.24, el uso de convert
archivos PDF se bloqueó como medida provisional. El problema se solucionó desde la versión 9.24 de Ghostscript. Si bien las versiones de Ghostscript se actualizan a versiones seguras en todas las versiones compatibles de Ubuntu (en este momento desde Ubuntu 16.04 en adelante), es posible que la restricción de uso aún esté vigente.
El archivo de política es /etc/ImageMagick-6/policy.xml
. Puede editar ese archivo como usuario root para cambiar las políticas.
Eliminando todas las restricciones de uso
Para los usuarios de escritorio que no ejecutan un servidor web, simplemente eliminar estas restricciones podría ser suficiente. Para ello, se puede eliminar el archivo, pero es mejor "sacar el archivo" cambiándole el nombre. Con este comando, estás cambiando el nombre del archivo. Como resultado, se levantan todas las políticas, pero aún puedes revertirlas si es necesario:
sudo mv /etc/ImageMagick-6/policy.xml /etc/ImageMagick-6/policy.xmlout
Para volver a la situación original, simplemente cambie el nombre al nombre original:
sudo mv /etc/ImageMagick-6/policy.xmlout /etc/ImageMagick-6/policy.xml
Tenga en cuenta que sacar el archivo de política disminuye la seguridad del sistema.
Eliminando solo la restricción de combinar en PDF
Para su caso específico, gene_wood en un comentario señaló la posibilidad de relajar selectivamente la política para trabajar con archivos PDF comentando una línea:
<policy domain="coder" rights="none" pattern="PDF" />
Edite el archivo y coloque marcas de comentarios alrededor de esta línea para desactivar esta regla:
<!-- <policy domain="coder" rights="none" pattern="PDF" /> -->
Si no desea eliminar todas las políticas de seguridad, este es el camino a seguir.
Respuesta2
Comovanadio publicado, tienes que cambiar la política de ImageMagick.
sudo vim /etc/ImageMagick-6/policy.xml
y reemplazar la línea
<policy domain="coder" rights="none" pattern="PDF" />
con
<policy domain="coder" rights="read|write" pattern="PDF" />
Si solo desea permitir la escritura y no la lectura, también puede borrar la read|
parte de la línea anterior.
Por cierto, para aquellos que estén interesados en la vulnerabilidad ImageMagick, aquí hay 2 enlaces informativos:
Respuesta3
En lugar de volver a aflojar las restricciones de seguridad de ImageMagick, simplemente usaríaimg2pdf.
Está diseñado específicamente para este tipo de casos de uso.
Deberías usar img2pdf si tus prioridades son (en este orden):
- siempre sin pérdidas:la imagen incrustada en el PDF siempre tendrá exactamente la misma información de color para cada píxel que la entrada
- pequeño:Si es posible, la diferencia de tamaño entre la imagen de entrada y el PDF de salida solo será la sobrecarga del propio contenedor de PDF.
- rápido:Si es posible, la imagen de entrada simplemente se pega en el documento PDF tal como está, sin necesidad de volver a codificar los datos de píxeles mediante la CPU.
El software de conversión convencional (como ImageMagick) haría lo siguiente:
- no ser sin pérdidas porque la recodificación con pérdida a JPEG
- no sea pequeño porque el uso de codificación flate derrochadora de datos de píxeles sin procesar
- No sea rápido porque los datos de entrada se vuelven a codificar.
Otra ventaja de no tener que volver a codificar la entrada (en las situaciones más comunes) es que img2pdf puede manejar entradas mucho más grandes que otros programas, porque los datos de píxeles sin procesar nunca tienen que cargarse en la memoria.
Este debería ser el comando equivalente:
img2pdf --out myfile.pdf /home/bill/TempScan/*.png
Si, por alguna razón, no puede hacer eso (por ejemplo, no puede instalar nuevos paquetes), otra posible vía para una conversión sin pérdidas sería convertir convert
sus imágenes en un archivo TIFF de varias páginas y luego utilizarlas tiff2pdf
desde las herramientas libtiff.
Respuesta4
Aquí hay una forma aún más conveniente de obtener automáticamente la(s) ubicación(es) del(los) archivo(s) Policy.xml y realizar la búsqueda/reemplazo en todos ellos:
for file in `convert -list policy | grep "Path:" | grep -v built | sed 's/Path: \(.*\)/\1/g'`; do sed -i 's/domain="coder" rights="none" pattern="PDF"/domain="coder" rights="read|write" pattern="PDF"/g' $file; done