Rotation Ghostscprit
Fermé
MBARON76
Messages postés
11
Date d'inscription
dimanche 13 mars 2022
Statut
Membre
Dernière intervention
26 avril 2022
-
Modifié le 15 avril 2022 à 11:49
MBARON76 Messages postés 11 Date d'inscription dimanche 13 mars 2022 Statut Membre Dernière intervention 26 avril 2022 - 26 avril 2022 à 18:12
MBARON76 Messages postés 11 Date d'inscription dimanche 13 mars 2022 Statut Membre Dernière intervention 26 avril 2022 - 26 avril 2022 à 18:12
A voir également:
- Rotation Ghostscprit
- Rotation ecran pc - Guide
- Rotation video - Guide
- Problème rotation écran tablette lenovo - Forum Matériel & Système
- Rotation calque photoshop ✓ - Forum Photoshop
- Tablette samsung rotation écran ne fonctionne plus - Forum Samsung
7 réponses
barnabe0057
Messages postés
14452
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
3 août 2024
4 917
15 avril 2022 à 18:15
15 avril 2022 à 18:15
Bonjour,
Concernant ta première méthode, les caractères <> sont des caractères spéciaux qui sont interprétés comme des redirections.
Pour ne pas qu'ils soient interprétés par l'invite de commandes, il faut les "échapper" comme ceci :
Concernant ta première méthode, les caractères <> sont des caractères spéciaux qui sont interprétés comme des redirections.
Pour ne pas qu'ils soient interprétés par l'invite de commandes, il faut les "échapper" comme ceci :
macommande="C:\Progra~1\gs\gs9.55.0\\bin\gswin64c.exe -dPDFA -dbase -dBATCH -dNOPAUSE -dNoSAFER -dQUIET -dtextFormat=3 -sDEVICE=txtwrite -sOutputFile=\"c:\fichiersorti.txt" -dEPSCrop -c \"^<^</Orientation 3^>^> setpagedevice\" -f c:\fichierentree.ps -c quit" subprocess.call(macommande, shell=True)
yg_be
Messages postés
23327
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 novembre 2024
Ambassadeur
1 551
15 avril 2022 à 12:29
15 avril 2022 à 12:29
bonjour,
qui te retourne l'erreur, python ou la console exécutant la commande?
prends le temps de partager le texte complet et précis du message d'erreur reçu.
en python, au lieu de
fais plutôt:
qui te retourne l'erreur, python ou la console exécutant la commande?
prends le temps de partager le texte complet et précis du message d'erreur reçu.
en python, au lieu de
subprocess.call("blabla", shell=True),
fais plutôt:
macommande="blabla" subprocess.call(ma commande , shell=True)
MBARON76
Messages postés
11
Date d'inscription
dimanche 13 mars 2022
Statut
Membre
Dernière intervention
26 avril 2022
Modifié le 15 avril 2022 à 13:19
Modifié le 15 avril 2022 à 13:19
Merci, comme ça c'est surement plus lisible, en effet.
Ma commande :
C'est la console qui me retourne des erreurs lorsque j'ajoute cette ligne :
En ligne de commande dans une fenêtre dos, ça fonctionne.
.
Ma commande :
args = ["ps2txt", # actual value doesn't matter
"-dPDFA",
"-dbase",
"-dBATCH",
"-dNOPAUSE",
"-dNoSAFER",
"-dQUIET"
"-dFirstPage=3", #Démarrage de la conversion à la page 3
"-dtextFormat=3",
"-sDEVICE=txtwrite", #Type de conversion ici en txt
"-sOutputFile=\""+ Dir_input_path + Fil_input_path[:-2] + "txt\"",
"-dEPSCrop",
Dir_input_path + Fil_input_path]
print args
with ghostscript.Ghostscript(*args) as g:
ghostscript.cleanup()
C'est la console qui me retourne des erreurs lorsque j'ajoute cette ligne :
"-c "<</Orientation 3>> setpagedevice"",
En ligne de commande dans une fenêtre dos, ça fonctionne.
.
yg_be
Messages postés
23327
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 novembre 2024
1 551
15 avril 2022 à 17:30
15 avril 2022 à 17:30
Peux-tu partager du texte, et pas des images?
Peux-tu partager la commande qui fonctionne quand tu ne passes pas par du python?
Où est passé le message d'erreur "<< était inattendu"?
Peux-tu partager la commande qui fonctionne quand tu ne passes pas par du python?
Où est passé le message d'erreur "<< était inattendu"?
MBARON76
Messages postés
11
Date d'inscription
dimanche 13 mars 2022
Statut
Membre
Dernière intervention
26 avril 2022
17 avril 2022 à 19:24
17 avril 2022 à 19:24
Génial !
Est ce qu'il y a un tuto qui reprends toutes ces subtilités du langage Python. Au démarrage, c'est assez bloquant ces petits aménagements nécessaires.
Je tests ça dès mon retour au boulot.
Bon week-end.
Est ce qu'il y a un tuto qui reprends toutes ces subtilités du langage Python. Au démarrage, c'est assez bloquant ces petits aménagements nécessaires.
Je tests ça dès mon retour au boulot.
Bon week-end.
barnabe0057
Messages postés
14452
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
3 août 2024
4 917
Modifié le 17 avril 2022 à 20:52
Modifié le 17 avril 2022 à 20:52
Bien que Python possède aussi des caractères spéciaux, dans ton cas ceux-ci ne sont pas liés à Python mais plutôt à l'invite de commandes (cmd.exe)
https://www.robvanderwoude.com/escapechars.php
https://www.robvanderwoude.com/escapechars.php
yg_be
Messages postés
23327
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 novembre 2024
1 551
17 avril 2022 à 21:27
17 avril 2022 à 21:27
Cela n'a rien à voir avec Python.
Teste tes commandes avant de les utiliser via Python, par exemple via un fichier .bat.
Teste tes commandes avant de les utiliser via Python, par exemple via un fichier .bat.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
MBARON76
Messages postés
11
Date d'inscription
dimanche 13 mars 2022
Statut
Membre
Dernière intervention
26 avril 2022
25 avril 2022 à 17:31
25 avril 2022 à 17:31
Bonjour,
Voici la commande qui fonctionne directement dans un .cmd :
Je passe mes variables %inputfilet% et %outputfile% depuis python.
Et là pas de problème il me tourne bien mes pages en paysage.
CAS 1 : commande executée depuis mon scripte python.
Ca fonctionne, mais lorsque j'essaye d'intégrer ce code
J'ai l'erreur suivante :
CAS 2 : Autre méthode en passant les arguments
Je fais la conversion avec celle fonction, qui est lancée pour chaque fichier présent dans le répertoire de traitement.
Pas de soucis, mais là il manque la rotation de la page.
J'ajoute donc la ligne suivante :
Et lorsque je lance mon script python j'ai le message d'erreur suivant :
Il évoque une violation d'écriture.
Le ^ ne semble pas changer grand chose malheureusement. Snif !
Je pense à un problème d'écriture et/ou d'interprétation dans les passages d'arguments. Mais je ne trouve pas où.
Merci encore.
Voici la commande qui fonctionne directement dans un .cmd :
C:\Progra~1\gs\gs9.55.0\bin\gswin64c.exe -dbase -dBATCH -dNOPAUSE -dNoSafer -dQUIET -sDEVICE=txtwrite -dFirstPage=3 -sOutputFile="%outputfile%" -dEPSCrop -c "<</Orientation 3>> setpagedevice" -f "%inputfile%" -c quit
Je passe mes variables %inputfilet% et %outputfile% depuis python.
Et là pas de problème il me tourne bien mes pages en paysage.
CAS 1 : commande executée depuis mon scripte python.
subprocess.call("C:\Progra~1\gs\gs9.55.0\\bin\gswin64c.exe -dbase -dBATCH -dNOPAUSE -dNoSAFER -dQUIET -sDEVICE=txtwrite -dFirstPage=3 -sOutputFile=\""+ Dir_input_path + Fil_input_path[:-2] + ".txt\" "+Dir_input_path + Fil_input_path, shell=True)
Ca fonctionne, mais lorsque j'essaye d'intégrer ce code
-c "<</Orientation 3>> setpagedevice"comme ci-dessous :
subprocess.call("C:\Progra~1\gs\gs9.55.0\\bin\gswin64c.exe -dbase -dBATCH -dNOPAUSE -dNoSAFER -dQUIET -sDEVICE=txtwrite -dFirstPage=3 -c \"<</Orientation 3>> setpagedevice\" -sOutputFile=\""+ Dir_input_path + Fil_input_path[:-2] + ".txt\" "+Dir_input_path + Fil_input_path, shell=True)
J'ai l'erreur suivante :
**** Unable to open the initial device, quitting.
CAS 2 : Autre méthode en passant les arguments
Je fais la conversion avec celle fonction, qui est lancée pour chaque fichier présent dans le répertoire de traitement.
def ps2txt(Dir_input_path, Fil_input_path):
args = ["ps2txt", # actual value doesn't matter
"-dPDFA",
"-dbase",
"-dBATCH",
"-dNOPAUSE",
"-dNoSAFER",
"-dQUIET"
"-dFirstPage=3", #Démarrage de la conversion à la page 3
"-dtextFormat=3",
"-sDEVICE=txtwrite", #Type de conversion ici en txt
"-sOutputFile=\""+ Dir_input_path + Fil_input_path[:-2] + "txt\"",
"-dEPSCrop",
Dir_input_path + Fil_input_path]
with ghostscript.Ghostscript(*args) as g:
ghostscript.cleanup()
Pas de soucis, mais là il manque la rotation de la page.
J'ajoute donc la ligne suivante :
"-c "^<^</Orientation 3^>^> setpagedevice"",ou
"-c \"<</Orientation 3>> setpagedevice\"",
Et lorsque je lance mon script python j'ai le message d'erreur suivant :
['ps2txt', '-dPDFA', '-dbase', '-dBATCH', '-dNOPAUSE', '-dNoSAFER', '-dQUIET-dFirstPage=3', '-dtextFormat=3', '-c "<</Orientation 3>> setpagedevice"', '-sDEVICE=txtwrite', '-sOutputFile="c:\\Import\\fichier.txt"', '-dEPSCrop', 'c:\\Import\\fichier.PS']
GPL Ghostscript 9.55.0 (2021-09-27)
Copyright (C) 2021 Artifex Software, Inc. All rights reserved.
This software is supplied under the GNU AGPLv3 and comes with NO WARRANTY:
see the file COPYING for details.
%%[ ProductName: GPL Ghostscript ]%%
Traceback (most recent call last):
File "C:\Python27\gsprint.py", line 150, in <module>
ps2txt (Directory_input, File_input)
File "C:\Python27\gsprint.py", line 53, in ps2txt
with ghostscript.Ghostscript(*args) as g:
File "C:\Python27\lib\site-packages\ghostscript\__init__.py", line 174, in Ghostscript
stderr=kw.get('stderr', None))
File "C:\Python27\lib\site-packages\ghostscript\__init__.py", line 74, in __init__
rc = gs.init_with_args(instance, args)
File "C:\Python27\lib\site-packages\ghostscript\_gsprint.py", line 271, in init_with_args
rc = libgs.gsapi_init_with_args(instance, len(argv), c_argv)
WindowsError: exception: access violation writing 0x00000000
Il évoque une violation d'écriture.
Le ^ ne semble pas changer grand chose malheureusement. Snif !
Je pense à un problème d'écriture et/ou d'interprétation dans les passages d'arguments. Mais je ne trouve pas où.
Merci encore.
yg_be
Messages postés
23327
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 novembre 2024
1 551
25 avril 2022 à 20:16
25 avril 2022 à 20:16
au lieu d'écrire:
peux-tu écrire:
cela aiderait à comparer ce qui fonctionne directement dans un .cmd et ce qui ne fonctionne pas quand appelé par python.
pour tester, tu pourrais aussi, à partir du python, créer un fichier cmd, et verifier qu'il peut s'exécuter.
subprocess.call("C:\Progra~1\gs\gs9.55.0\\bin\gswin64c.exe -dbase -dBATCH -dNOPAUSE -dNoSAFER -dQUIET -sDEVICE=txtwrite -dFirstPage=3 -c \"<</Orientation 3>> setpagedevice\" -sOutputFile=\""+ Dir_input_path + Fil_input_path[:-2] + ".txt\" "+Dir_input_path + Fil_input_path, shell=True)
peux-tu écrire:
lacommande= "C:\Progra~1\gs\gs9.55.0\\bin\gswin64c.exe -dbase -dBATCH -dNOPAUSE -dNoSAFER -dQUIET -sDEVICE=txtwrite -dFirstPage=3 -c \"<</Orientation 3>> setpagedevice\" -sOutputFile=\""+ Dir_input_path + Fil_input_path[:-2] + ".txt\" "+Dir_input_path + Fil_input_path print("lacommande:", lacommande) subprocess.call( lacommande, shell=True)
cela aiderait à comparer ce qui fonctionne directement dans un .cmd et ce qui ne fonctionne pas quand appelé par python.
pour tester, tu pourrais aussi, à partir du python, créer un fichier cmd, et verifier qu'il peut s'exécuter.
MBARON76
Messages postés
11
Date d'inscription
dimanche 13 mars 2022
Statut
Membre
Dernière intervention
26 avril 2022
26 avril 2022 à 14:31
26 avril 2022 à 14:31
Bon et bien l'approche systèmique est en effet la meilleur.
Merci pour cette ultime proposition de passer par une variable.
Déjà c'est plus facile à lire, ensuite j'ai rechercher à reproduire l'exact syntaxe, et là ca marche.
Il ne faut en effet oublier aucun argument, et l'ordre des arguments est important.
Du coup cette ligne de commande fonctionne :
Il est important de mettre le
Vous aurez remarqué le double slash à gs9.55.0\bin. parce que 0\b n'est pas interprété comme il faut.
Je test avec le passage d'arguments, et je vais aussi le faire pour la transformation PDF. Je vous livre les résultats après.
En tout cas commu super sympa, c'est un plaisir déchanger avec vous.
Merci pour cette ultime proposition de passer par une variable.
Déjà c'est plus facile à lire, ensuite j'ai rechercher à reproduire l'exact syntaxe, et là ca marche.
Il ne faut en effet oublier aucun argument, et l'ordre des arguments est important.
Du coup cette ligne de commande fonctionne :
LaCommande = "C:\Progra~1\gs\gs9.55.0\\bin\gswin64c.exe -dbase -dBATCH -dNOPAUSE -dNoSAFER -dQUIET -sDEVICE=txtwrite -dFirstPage=3 -sOutputFile=\""+ Dir_input_path + Fil_input_path[:-2] + "txt\" -dEPSCrop -c \"<</Orientation 3>> setpagedevice\" -f "+Dir_input_path + Fil_input_path
print (LaCommande)
subprocess.call(LaCommande, shell=True)
Il est important de mettre le
-c "<</Orientation 3>> setpagedevice"juste après le nom du fichier de sorti, et ne pas oublier le -f.
Vous aurez remarqué le double slash à gs9.55.0\bin. parce que 0\b n'est pas interprété comme il faut.
Je test avec le passage d'arguments, et je vais aussi le faire pour la transformation PDF. Je vous livre les résultats après.
En tout cas commu super sympa, c'est un plaisir déchanger avec vous.
yg_be
Messages postés
23327
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 novembre 2024
1 551
26 avril 2022 à 16:52
26 avril 2022 à 16:52
Cette "ultime" proposition était la première: déjà faite le 15 avril 2022 à 12:29.
MBARON76
Messages postés
11
Date d'inscription
dimanche 13 mars 2022
Statut
Membre
Dernière intervention
26 avril 2022
>
yg_be
Messages postés
23327
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 novembre 2024
26 avril 2022 à 18:12
26 avril 2022 à 18:12
Vrai. C'est l'ajout du print entre les deux et ta proposition de comparer entre le .cmd et le print qui m'a fait tilter.
Je faisais le print, mais avant le subprocess, et pas directement avec la variable. Comme ça c'est en effet beaucoup plus pratique pour tester le code. :)
Je faisais le print, mais avant le subprocess, et pas directement avec la variable. Comme ça c'est en effet beaucoup plus pratique pour tester le code. :)
MBARON76
Messages postés
11
Date d'inscription
dimanche 13 mars 2022
Statut
Membre
Dernière intervention
26 avril 2022
26 avril 2022 à 15:00
26 avril 2022 à 15:00
J'ai testé via le passage d'arguments mais là ça bloque. En attendant voilà la ligne de commande pour une transformation PS en PDF.
LaCommande = "C:\Progra~1\gs\gs9.55.0\\bin\gswin64c.exe -dbase -dPDFA -dBATCH -dNOPAUSE -dNOPROMPT -dNoSAFER -dFirstPage=3 -sDEVICE=pdfwrite -sOutputFile=\""+ Dir_input_path + Fil_input_path[:-2] + ".pdf\" -dEPSCrop -c \"<</Orientation 3>> setpagedevice\" -f "+Dir_input_path + Fil_input_path
print (LaCommande)
subprocess.call(LaCommande, shell=True)