Bonjour,
Je suis sous python 2.7, car cela m'est imposé par l'éditeur de mon logiciel principal.
Puis ghostscript 9.52.
Je prévois d'utiliser ghostscript, pour convertir des PDF en Jpg.
j'utilise le code suivant qui fonctionne bien;
Mais ce que je m'aperçois, c'est que tant que la fenêtre python n'est pas fermée, le jpg en sortie n'est pas libéré (l'explorateur windows affiche 0ko).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 def pdf2jpeg(pdf_input_path, jpeg_output_path): args = ["pef2jpeg", # actual value doesn't matter "-dNOPAUSE", "-sDEVICE=jpeg", "-r300", #dpi "-sOutputFile=" + jpeg_output_path, pdf_input_path] encoding = locale.getpreferredencoding() args = [a.encode(encoding) for a in args] ghostscript.Ghostscript(*args) pdf2jpeg( r"C:\temp\MonFichier.pdf", r"C:\temp\MonFichier.jpg")
Hors, je souhaite parcourir des répertoire, pour exporter les jpg à la chaine. Du coup si je lance deux fois ma def à la suite sur 2 pdf différents, ça plante...
ex:
cela passe, pour mon premier fichier. Mais arrivé sur le second, j'ai une erreur fatal de Ghostscript, car il n'a toujours pas fermé le 1er jpg exporté...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 def pdf2jpeg (): [...] #lecture de mon répertoire => liste de fichiers for fichier in liste_fichier: #determine l'extension [...] if extension == "pdf": pdf2jpeg( r"Fichier.pdf", r"Fichier.jpg") del fichier
Comment puis-je lui faire libérer le premier fichier image, pour pouvoir traiter le second PDF, svp?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 File "C:\Python27\ArcGIS10.7\lib\site-packages\ghostscript\__init__.py", line 174, in Ghostscript stderr=kw.get('stderr', None)) File "C:\Python27\ArcGIS10.7\lib\site-packages\ghostscript\__init__.py", line 74, in __init__ rc = gs.init_with_args(instance, args) File "C:\Python27\ArcGIS10.7\lib\site-packages\ghostscript\_gsprint.py", line 273, in init_with_args raise GhostscriptError(rc) GhostscriptError: Fatal
Partager