Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2442 connectés 

  FORUM HardWare.fr
  Programmation
  Perl

  convertir des fichiers lst en pdf

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

convertir des fichiers lst en pdf

n°2277250
solerian
Posté le 09-03-2016 à 11:50:46  profilanswer
 

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

mood
Publicité
Posté le 09-03-2016 à 11:50:46  profilanswer
 

n°2277258
rat de com​bat
attention rongeur méchant!
Posté le 09-03-2016 à 14:40:50  profilanswer
 

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/


Message édité par rat de combat le 09-03-2016 à 14:46:34
n°2277260
solerian
Posté le 09-03-2016 à 14:46:27  profilanswer
 

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  

n°2277290
gilou
Modérateur
Modzilla
Posté le 09-03-2016 à 15:25:52  profilanswer
 

Regardes si le script perl a2pdf ne convient pas à tes besoins.
http://search.cpan.org/~jonallen/a [...] t/a2pdf.pm
 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2277301
solerian
Posté le 09-03-2016 à 15:44:58  profilanswer
 

lorsque je fais un system (a2pdf "C:/2016_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 ?

n°2277313
solerian
Posté le 09-03-2016 à 16:22:31  profilanswer
 

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.
 

n°2277359
rat de com​bat
attention rongeur méchant!
Posté le 09-03-2016 à 18:29:19  profilanswer
 

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 :
  1. use strict;
  2. use warnings;
  3. my $file="c:\\test.lst";
  4. (my $file_out=$file)=~s/\.lst$/.pdf/;
  5. system("C:\\Programme\\Strawberry\\perl\\site\\bin\\a2pdf $file>$file_out" );


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 :
  1. use strict;
  2. use warnings;
  3. use App::a2pdf;
  4. use autodie;
  5.  
  6. my $file="c:\\test.lst";
  7. (my $file_out=$file)=~s/\.lst$/.pdf/;
  8.  
  9. my %options = (
  10.  header        => 1,          # Include header on all pages
  11.  footer        => 1,          # Include footer on all pages
  12.  line_numbers  => 1,          # Print line numbers
  13.  page_width    => 595,        # A4
  14.  page_height   => 842,        # A4
  15.  left_margin   => 48,         # 0.75"
  16.  right_margin  => 48,         # 0.75"
  17.  top_margin    => 60,         #
  18.  bottom_margin => 60,         #
  19.  font_face     => 'Courier',  # Monospaged text
  20.  font_size     => 9,          # Text size = 9 points
  21.  perl_syntax   => 1,          # Perform Perl syntax highlighting
  22.  icon_scale    => 0.5,        # Icon scaling (%age)
  23.  );
  24.  
  25. $options{title}=$file;
  26.  
  27. my $pdf=App::a2pdf->new(%options);
  28.  
  29. open(IN, '<', $file);
  30. foreach my $line (<IN> )
  31. {
  32.     $pdf->print($line);
  33. }
  34. close(IN);
  35.  
  36. open(OUT, '>', $file_out);
  37. binmode OUT;
  38. print OUT $pdf->{pdf}->stringify;
  39. close(OUT);


Suffit de rajouter un readdir ou semblable et une boucle et c'est gagné.

Message cité 1 fois
Message édité par gilou le 10-03-2016 à 00:01:57
n°2277371
gilou
Modérateur
Modzilla
Posté le 09-03-2016 à 23:05:17  profilanswer
 

solerian a écrit :

lorsque je fais un system (a2pdf "C:/2016_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 ?


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+,


Message édité par gilou le 10-03-2016 à 00:05:59

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2277375
gilou
Modérateur
Modzilla
Posté le 10-03-2016 à 00:01:06  profilanswer
 

rat de combat a écrit :

Code :
  1. use strict;
  2. use warnings;
  3. use App::a2pdf;


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+,

Message cité 1 fois
Message édité par gilou le 10-03-2016 à 00:03:36

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2277378
solerian
Posté le 10-03-2016 à 08:33:27  profilanswer
 

Bonjour rat de combat j'ai fais un system("echo 1" ) et il trouve le cmd.exe étant donné qu'il me renvoi 1

mood
Publicité
Posté le 10-03-2016 à 08:33:27  profilanswer
 

n°2277379
solerian
Posté le 10-03-2016 à 08:35:25  profilanswer
 

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 ?

n°2277388
solerian
Posté le 10-03-2016 à 09:55:02  profilanswer
 

Bonjour Gilou je viens d'instyaller Strawberry Perl

n°2277400
solerian
Posté le 10-03-2016 à 11:57:58  profilanswer
 

 
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.  
 
 
 

n°2277402
rat de com​bat
attention rongeur méchant!
Posté le 10-03-2016 à 13:22:16  profilanswer
 

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.

n°2277405
solerian
Posté le 10-03-2016 à 13:40:49  profilanswer
 

C'est quoi la différence entre cpan -i Config::IniFlies et cpan Config::IniFlies

n°2277406
rat de com​bat
attention rongeur méchant!
Posté le 10-03-2016 à 13:45:19  profilanswer
 

RTFM :o

 
Citation :

# install modules ( sole -i is optional )

 

Autrement dit, pas de différence.


Message édité par rat de combat le 10-03-2016 à 13:45:35
n°2277407
solerian
Posté le 10-03-2016 à 13:58:56  profilanswer
 

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

n°2277408
rat de com​bat
attention rongeur méchant!
Posté le 10-03-2016 à 14:05:53  profilanswer
 

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


Message édité par rat de combat le 10-03-2016 à 14:13:56
n°2277409
gilou
Modérateur
Modzilla
Posté le 10-03-2016 à 14:06:57  profilanswer
 

solerian a écrit :

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 ?

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+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2277411
solerian
Posté le 10-03-2016 à 14:15:22  profilanswer
 

Mais la solution du rongeur combatif fait appel au module App::a2pdf, que je n'arrive pas à installer

n°2277413
rat de com​bat
attention rongeur méchant!
Posté le 10-03-2016 à 14:19:26  profilanswer
 

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.

n°2277415
solerian
Posté le 10-03-2016 à 14:30:28  profilanswer
 

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: C:/Strawberry/perl/site/lib C:/Strawberry/perl/vendor/lib C:/Strawberry/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.

n°2277418
solerian
Posté le 10-03-2016 à 14:34:43  profilanswer
 

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.  

n°2277419
rat de com​bat
attention rongeur méchant!
Posté le 10-03-2016 à 14:39:29  profilanswer
 

Tu as installé le module? Refait un cpan App::a2pdf en ligne de commande.
 
edit: correction, décidément...
edit2: recorrection...


Message édité par rat de combat le 10-03-2016 à 15:20:52
n°2277424
solerian
Posté le 10-03-2016 à 15:03:05  profilanswer
 

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)

n°2277427
rat de com​bat
attention rongeur méchant!
Posté le 10-03-2016 à 15:20:01  profilanswer
 

Pardon, c'est App::a2pdf bien sûr, erreur de ma part.
 
Donc je confirme: cpan App::a2pdf

n°2277434
solerian
Posté le 10-03-2016 à 16:03:49  profilanswer
 

ç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'.

n°2277437
rat de com​bat
attention rongeur méchant!
Posté le 10-03-2016 à 16:18:04  profilanswer
 

é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é...


Message édité par rat de combat le 10-03-2016 à 16:19:36
n°2277439
solerian
Posté le 10-03-2016 à 16:45:59  profilanswer
 

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

n°2277440
solerian
Posté le 10-03-2016 à 16:52:56  profilanswer
 

Je viens de trouver un module PDF  
PDf::create j'ai réussi à l'installer avec cpan PDF::Create

n°2277441
rat de com​bat
attention rongeur méchant!
Posté le 10-03-2016 à 16:54:21  profilanswer
 

Alors cpan Switch puis cpan App::a2pdf . Mais bon, apparemment il y en a plus besoin.

n°2277443
solerian
Posté le 10-03-2016 à 16:56:25  profilanswer
 

le cpan App::a2pdf ça ne fonctionne pas même avec l'utilisation de cpan switch.

n°2277448
gilou
Modérateur
Modzilla
Posté le 10-03-2016 à 18:23:42  profilanswer
 

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+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2277449
rat de com​bat
attention rongeur méchant!
Posté le 10-03-2016 à 18:41:59  profilanswer
 

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.


Message édité par rat de combat le 10-03-2016 à 18:42:37
n°2277452
gilou
Modérateur
Modzilla
Posté le 10-03-2016 à 19:26:06  profilanswer
 

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+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2277466
solerian
Posté le 11-03-2016 à 10:12:04  profilanswer
 

J'utilise maintenat le module PDF::API2.
Quelqu'un connait ?

n°2277503
gilou
Modérateur
Modzilla
Posté le 11-03-2016 à 18:06:51  profilanswer
 

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+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2277574
solerian
Posté le 14-03-2016 à 09:53:17  profilanswer
 

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

n°2277581
gilou
Modérateur
Modzilla
Posté le 14-03-2016 à 11:10:28  profilanswer
 

C'est .ldt, maintenant? plus .lst?
 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2277583
solerian
Posté le 14-03-2016 à 11:43:58  profilanswer
 

C'est toujours .lst j'ai fait une faute de frappe

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Perl

  convertir des fichiers lst en pdf

 

Sujets relatifs
fusion des fichiers en 1 fichierCopie de fichiers vers dossiers en fonction du nom de fichier
comparaison de 2 fichierspasser les noms de fichiers contenant une ou plusieurs espace(s) ?
[Aide] convertir balise <iframe> en <object>Attributs de fichiers en bianire
Convertir plusieurs fichiers en UTF8?Traitement par lot, convertir les fichiers avec la mêm extention
Comment convertir 200 fichiers .dot en .doc ...Macro VBA pour convertir les fonts de 350 fichiers ....
Plus de sujets relatifs à : convertir des fichiers lst en pdf


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR