convertir des fichiers lst en pdf - Perl - Programmation
Marsh Posté le 09-03-2016 à 14:40:50
C'est quoi le format d'un fichier lst? Juste du texte que tu veux convertir 1:1 en pdf? Un pdf par fichier ou tout les fichiers dans un seul pdf?
edit: En supposant que c'est du texte, une recherche rapide me retourne des programmes qu'on pourrait appeller depuis Perl.
http://www.gnu.org/software/enscript/enscript.html (à voir si il existe une version Windows (tu es bien sous Windows?))
http://www.eprg.org/pdfcorner/text2pdf/
Marsh Posté le 09-03-2016 à 14:46:27
C'est du texte que hje veux convertir au format PDF.
Je voudrais un PDF par fichier si j'ai 100 fichiers lst je veux 100 PDF
Cordialement
Marsh Posté le 09-03-2016 à 15:25:52
Regardes si le script perl a2pdf ne convient pas à tes besoins.
http://search.cpan.org/~jonallen/a [...] t/a2pdf.pm
A+,
Marsh Posté le 09-03-2016 à 15:44:58
lorsque je fais un system (a2pdf "C2016_03_07_11/prod/test.lst" );
j'obtiens ce message d'erreur :Name "main::a2pdf" used only once: possible typo at convertir_txt_pdf.pl line 46.
Est-ce que cela signifie que je ne peux l'utiliser si et seulement si c'est un fichier txt et non un fichier lst ?
Marsh Posté le 09-03-2016 à 16:22:31
J'ai essayé ces deux méthodes :
system (a2pdf "C:\2016_03_07_11\prod\test1.lst" );
message d'erreur :
Can't spawn "cmd.exe": No such file or directory at C:\2016_03_07_11\prod\convertir_txt_pdf.pl
line 46.
system (test2pdf "C:\2016_03_07_11\prod\test1.lst" );
message d'erreur :
Can't spawn "cmd.exe": No such file or directory at C:\2016_03_07_11\prod\convertir_txt_pdf.pl
line 47.
Marsh Posté le 09-03-2016 à 18:29:19
Si tu fais un system("echo 1" ); p.ex. ça donne quoi? Si il ne trouve pas cmd.exe il faut vérifier la variable PATH (mais prudence, pas faire de bêtises).
Après avoir installé le truc chez moi je peux faire genre
Code :
|
mais je ne trouve pas ça très élégant de passer par system() pour un truc qui est écrit en Perl...
edit: Voici un example qui me convient mieux, en partie copié de C:\Programme\Strawberry\perl\site\bin\a2pdf
Code :
|
Suffit de rajouter un readdir ou semblable et une boucle et c'est gagné.
Marsh Posté le 09-03-2016 à 23:05:17
solerian a écrit : lorsque je fais un system (a2pdf "C:/2016_03_07_11/prod/test.lst" ); |
En faisant:
{
local @ARGV = ('-o', 'test.pdf', 'C:/2016_03_07_11/prod/test.lst');
do 'a2pdf';
}
ça devrait marcher, et envoyer la sortie sur test.pdf, mais j'ai pas testé.
EDIT: j'ai testé, mais ça a l'air buggé sous Windows: ça exécute le script, mais il n'y a pas de retour dans le script appelant (ça devrait être le cas)
A+,
Marsh Posté le 10-03-2016 à 00:01:06
rat de combat a écrit :
|
faudra faire gaffe à creer un répertoire App et y copier le module a2pdf.pm
et j'ai modifié ton post: la balise doit être code=perl, et non pas code="perl" pour que marche la coloration syntactique.
A+,
Marsh Posté le 10-03-2016 à 08:33:27
Bonjour rat de combat j'ai fais un system("echo 1" ) et il trouve le cmd.exe étant donné qu'il me renvoi 1
Marsh Posté le 10-03-2016 à 08:35:25
Bonjour Gilou,
J'ai crée le répertoire App mais je ne vois pas à quoi ressemble le module a2pdf.pm qu'est ce qu'il faut mettre à l'intérieur ?
Marsh Posté le 10-03-2016 à 11:57:58
lorsque j'exécute mon programme dans Powershell j'utilise la commande la suivante :
perl.exe C:\Users\baranowp\Documents\2016_03_07_11\prod\convertir_txt_pdf.pl
J'obtiens ce message d'erreur :
Can't locate Config/IniFiles.pm in @INC (you may need to install the App::a2pdf module) (@INC contains: CStrawberry/perl/site/lib CStrawberry/perl/vendor/lib CStrawberry/perl/lib .) at C:\Users\baranowp\Documents\2016_03_07_11\prod\convertir_txt_pdf.pline 3.
BEGIN failed--compilation aborted at C:\Users\baranowp\Documents\2016_03_07_11\prod\convertir_txt_pdf.p line 3.
Marsh Posté le 10-03-2016 à 13:22:16
gilou a écrit : faudra faire gaffe à creer un répertoire App et y copier le module a2pdf.pm |
Heu... Pourquoi? J'ai juste installé a2pdf normalement (enfin presque, en ligne de commande cpan -i /a2pdf/ de mémoire et non cpan a2pdf à défaut d'avoir le nom exact), sans rien copier nul part. Le script tourne.
Citation : et j'ai modifié ton post: la balise doit être code=perl, et non pas code="perl" pour que marche la coloration syntactique. |
Merci, je prends note.
@solerian
Faut installer le module. Pour StrawberryPerl tu tappes cpan <nom du module> en ligne de commande, soit cpan Config::IniFiles.
Marsh Posté le 10-03-2016 à 13:40:49
C'est quoi la différence entre cpan -i Config::IniFlies et cpan Config::IniFlies
Marsh Posté le 10-03-2016 à 13:45:19
RTFM
Citation : # install modules ( sole -i is optional ) |
Autrement dit, pas de différence.
Marsh Posté le 10-03-2016 à 13:58:56
Quand je fais un cpan App::a2pdf ça ne fonctionne il me met un message d'erreur et lorsque je fais cpan Config::IniFiles ça fonctionne mais quand j'exécute le programme il me dis qu'il y a une erreur dans le fichier PM
Marsh Posté le 10-03-2016 à 14:05:53
Sois plus précis (messages d'erreurs). Le a2pdf a un nom légèrement différent, il faut utiliser -i /a2pdf/ pour faire une recherche (les // délimitent une expression Regex), pour Config::IniFiles on peut se passer du -i (mais ça devrait aussi marcher avec).
edit: Le nom exact semble être App::a2pdf
Marsh Posté le 10-03-2016 à 14:06:57
solerian a écrit : Bonjour Gilou, |
Si tu browses les sources de a2pdf, tu vois qu'il y a un répertoire App et qu'il ciontient un seul fichier, a2pdf.pm
Mais de toute façon, comme la solution avec un do (normalement préférable, puisqu'elle ne déclenche pas la création d'une nouvelle instance de l'interpréteur) n'a pas l'air de marcher sous Windows (je subodore un pb spécifique à Windows: chez moi, ça s’exécute une fois et créée le fichier pdf, mais ensuite, au lieu de sortir du bloc {...} et de continuer l'exécution du script, ça sort du script, sans indiquer la moindre erreur), inutile de persévérer dans cette voie, autant utiliser la solution du rongeur combatif.
A+,
Marsh Posté le 10-03-2016 à 14:15:22
Mais la solution du rongeur combatif fait appel au module App::a2pdf, que je n'arrive pas à installer
Marsh Posté le 10-03-2016 à 14:19:26
solerian a écrit : Mais la solution du rongeur combatif fait appel au module App::a2pdf, que je n'arrive pas à installer |
Comme je disais, sois plus précis, donne les messages d'erreurs.
Marsh Posté le 10-03-2016 à 14:30:28
Premier message c'est au niveau de la compilation :
Can't locate App/a2pdf.pm in @INC (you may need to install the App::a2pdf module) (@INC contains: CStrawberry/perl/site/lib CStrawberry/perl/vendor/lib CStrawberry/perl/lib .) at autre_methode_conversion.pl line 3.
BEGIN failed--compilation aborted at autre_methode_conversion.pl line 3.
Et le seconde c'est au niveau de l'interpréteur quand j'exécute la commande perl :
Can't call method "val" on an undefined value at C:\users\baranowp\Documents\2016_03_07_11\param.pl line 9.
Marsh Posté le 10-03-2016 à 14:34:43
Je me suis trompé il n'y a qu'un seul message d'erreur c'est que celui la :
Can't locate App/a2pdf.pm in @INC (you may need to install the App::a2pdf module) (@INC contains: CStrawberry/perl/site/lib CStrawberry/perl/vendor/lib CStrawberry/perl/lib .) at autre_methode_conversion.pl line 3.
BEGIN failed--compilation aborted at autre_methode_conversion.pl line 3.
Marsh Posté le 10-03-2016 à 14:39:29
Tu as installé le module? Refait un cpan App::a2pdf en ligne de commande.
edit: correction, décidément...
edit2: recorrection...
Marsh Posté le 10-03-2016 à 15:03:05
je refais un cpan App::a2df :
Voici le resultat que cette commande me renvoi :
Loading internal null logger. Install Log::Log4perl for logging messages
CPAN: CPAN::SQLite loaded ok (v0.211)
Database was generated on Thu, 10 Mar 2016 09:16:27 GMT
CPAN: Module::CoreList loaded ok (v5.20151220)
Config::IniFiles is up to date (2.88).
C:\Users\baranowp>cpan App::a2df
Loading internal null logger. Install Log::Log4perl for logging messages
CPAN: CPAN::SQLite loaded ok (v0.211)
Database was generated on Thu, 10 Mar 2016 09:16:27 GMT
Warning: Cannot install App::a2df, don't know what it is.
Try the command
i /App::a2df/
to find objects with matching identifiers.
CPAN: Time::HiRes loaded ok (v1.9728)
Marsh Posté le 10-03-2016 à 15:20:01
Pardon, c'est App::a2pdf bien sûr, erreur de ma part.
Donc je confirme: cpan App::a2pdf
Marsh Posté le 10-03-2016 à 16:03:49
ça ne fonctionne toujours pas :
Test Summary Report
-------------------
t/compile.t (Wstat: 256 Tests: 1 Failed: 1)
Failed test: 1
Non-zero exit status: 1
Files=2, Tests=4, 1 wallclock secs ( 0.03 usr + 0.05 sys = 0.08 CPU)
Result: FAIL
Failed 1/2 test programs. 1/4 subtests failed.
dmake.exe: Error code 255, while making 'test_dynamic'
JONALLEN/a2pdf-1.13.tar.gz
C:\STRAWB~1\c\bin\dmake.exe test -- NOT OK
//hint// to see the cpan-testers results for installing this module, try:
reports JONALLEN/a2pdf-1.13.tar.gz
Stopping: 'install' failed for 'App::a2pdf'.
Marsh Posté le 10-03-2016 à 16:18:04
étrange... Il me semble qu'il y a une dépendance qui manquait lors de l'install mais je ne me souviens pas exactement... Tu peux voir plus haut dans les messages qu'imprime cpan si il n'y a pas quelque chose dans cette direction?
Après avoir regardé dans le code, à tout hasard, est-ce que Switch est installé chez toi? Pour savoir tu tappes cpan -D Switch. Si ce n'est pas installé tu peux toujours le faire et réssayer après le a2pdf mais à tes risques...
edit +1 pour Switch après avoir regardé quand est-ce que le fichier de mon installation a été modifié...
Marsh Posté le 10-03-2016 à 16:45:59
Voici ce que me renvoi la commande cpan -D Switch :
Loading internal null logger. Install Log::Log4perl for logging messages
CPAN: CPAN::SQLite loaded ok (v0.211)
Database was generated on Thu, 10 Mar 2016 09:16:27 GMT
(no description)
C/CH/CHORNY/Switch-2.17.tar.gz
(no installation file)
Installed: not installed
CPAN: 2.17 Not up to date
Alexandr Ciornii (CHORNY)
alexchorny@gmail.com
Marsh Posté le 10-03-2016 à 16:52:56
Je viens de trouver un module PDF
PDf::create j'ai réussi à l'installer avec cpan PDF::Create
Marsh Posté le 10-03-2016 à 16:54:21
Alors cpan Switch puis cpan App::a2pdf . Mais bon, apparemment il y en a plus besoin.
Marsh Posté le 10-03-2016 à 16:56:25
ReplyMarsh Posté le 10-03-2016 à 18:23:42
Voila pourquoi j'utilise le Perl d'active state sous Windows, leur package manager ppm fait tout ce boulot sans qu'on ait a se prendre la tête.
A+,
Marsh Posté le 10-03-2016 à 18:41:59
solerian a écrit : le cpan App::a2pdf ça ne fonctionne pas même avec l'utilisation de cpan switch. |
J'ai pourtant réussi à l'installer (sous Strawberry)... C'est quoi l'erreur, toujours ce problème de test? (simple curiosité)
As-tu déjà utilisé/testé PDF::Create? D'après la doc c'est un peu plus bas niveau dans le sens où il faut préciser des coordonnées pour insérer du texte dans le pdf.
Marsh Posté le 10-03-2016 à 19:26:06
Ah! J'ai pigé pourquoi le do ne semblait pas marcher (en fait ça marche).
C'est parce qu'au cours de l'exécution du do 'a2pdf', STDOUT est fermé (ou bien dérouté vers un fichier) et pas rouvert, donc je voyais pas mes print du script principal.
A+,
Marsh Posté le 11-03-2016 à 10:12:04
J'utilise maintenat le module PDF::API2.
Quelqu'un connait ?
Marsh Posté le 11-03-2016 à 18:06:51
C'est pour cela qu'on t'a dit d'utiliser App::a2pdf, comme le fait RdC dans son exemple, parce que App::a2pdf fait le boulot avec PDF::API2 pour toi, mais en te simplifiant la tache un maximum.
A+,
Marsh Posté le 14-03-2016 à 09:53:17
Bonjour,
Je ne vois pas comment faire pour dire à mon pogramme de convertir les .ldt en .pdf.
J'ai trouvé sur internet une fonction convert
Est-ce que vous la connaissez? et est-ce que je peux l'utiliser dans mon programme ?
Cordialment
Marsh Posté le 14-03-2016 à 11:10:28
C'est .ldt, maintenant? plus .lst?
A+,
Marsh Posté le 09-03-2016 à 11:50:46
Bonjour à tous,
Je souhaite convertir plusieurs fichiers de type lst en PDF sans passer par PDF Creator parce que cette méthode est beaucoup trop longue.
Est-ce possible de convertir des fichiers lst en PDF avec perl ?
Est-ce que la fonction sprintf permettrait de convertir des formats lst en PDF?
Dans un premier temps je pensais utiliser la fonction GetFilesList afin de lister le contenu du répertoire C:\2016_03_07_11\prod et ensuite d'afficher tout les fichiers se trouvant dans prod et ayant pour extension .lst.
Voici le contenu du répertoire prod (pas en intégralité juste 2 3 pur l'exemple):
test.lst
test1.lst
test2.lst
etc ...
J'espère que mes informations sont claires et compréhensible.
Cordialement