62 votes

ImageMagick n'est pas autorisé à convertir un PDF en image

J'ai un programme dans lequel je dois convertir un PDF en image à l'aide d'Image Magick. Je fais cela en utilisant le package subprocess

         cmd = 'magick convert -density 300 '+pdfFile+'['+str(rangeTuple[0])+'-'+str(rangeTuple[1])+'] -depth 8 '+'temp.tiff' #WINDOWS
        if(os.path.isfile('temp.tiff')):
            os.remove('temp.tiff')
        subprocess.call(cmd,shell=True)
        im = Image.open('temp.tiff')

L'erreur que j'ai est:

 convert-im6.q16: not authorized `temp2.pdf' @ error/constitute.c/ReadImage/412.
convert-im6.q16: no images defined `temp.tiff' @ error/convert.c/ConvertImageCommand/3258.
Traceback (most recent call last):
  File "UKExtraction2.py", line 855, in <module>
    doItAllUpper("A0","UK5.csv","temp",59,70,"box",2,1000,firstPageCoordsUK,boxCoordUK,voterBoxCoordUK,internalBoxNumberCoordUK,externalBoxNumberCoordUK,addListInfoUK)
  File "UKExtraction2.py", line 776, in doItAllUpper
    doItAll(tempPDFName,outputCSV,2,pdfs,formatType,n_blocks,writeBlockSize,firstPageCoords,boxCoord,voterBoxCoord,internalBoxNumberCoord,externalBoxNumberCoord,addListInfo,pdfName)
  File "UKExtraction2.py", line 617, in doItAll
    mainProcess(pdfName,(0,noOfPages-1),formatType,n_blocks,outputCSV,writeBlockSize,firstPageCoords,boxCoord,voterBoxCoord,internalBoxNumberCoord,externalBoxNumberCoord,addListInfo,bigPDFName,basePages)
  File "UKExtraction2.py", line 542, in mainProcess
    im = Image.open('temp.tiff')
  File "/home/rohit/.local/lib/python3.6/site-packages/PIL/Image.py", line 2609, in open
    fp = builtins.open(filename, "rb")
FileNotFoundError: [Errno 2] No such file or directory: 'temp.tiff'

Le plus important est:

 convert-im6.q16: not authorized `temp2.pdf' @ error/constitute.c/ReadImage/412.

Je pense que c'est parce qu'ImageMagick n'est pas autorisé à accéder au PDF. Que faut-il faire maintenant? Je suis sur un serveur Linux. Toute aide est appréciée.

32voto

Solution simple et rapide:

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

Une fois terminé, vous pouvez restaurer l'original avec

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

11voto

shigazaru Points 153

J'utilise Dockerfile pour mettre à jour une image et j'ai soudainement eu le fichier policy.xml sur mon chemin. bien que la version d'Ubuntu (xenial) soit la même et ImageMagick également.

J'ai fini par supprimer la seule ligne causant mon problème.

RUN sed -i 's/^.*policy.*coder.*none.*PDF.*//' /etc/ImageMagick-6/policy.xml

j'espère que cela aide quelqu'un

-2voto

Sujeet Kumar Points 627

Utilisez la commande ci-dessous pour supprimer le fichier de politique afin de le réparer.Si nécessaire, vous pouvez également effectuer une sauvegarde de ce fichier de politique.

 rm /etc/<ImageMagick_PATH>/policy.xml

pour moi, c'était ImageMagick6 et la commande était:

 sudo rm /etc/ImageMagick-6/policy.xml

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X