IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

convertir des fichiers lst en pdf


Sujet :

Langage Perl

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 183
    Points : 32
    Points
    32
    Par défaut convertir des fichiers lst en pdf
    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

  2. #2
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 469
    Points
    12 469
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    il y a de nombreux modules PDF sur le CPAN, comme le montre une simple recherche Google: https://www.google.fr/search?q=cpan+...aYK8nwaLL4t4AF


    Pour ce que tu veux faire, le meilleur est sans doute: http://search.cpan.org/~areibens/PDF...ib/PDF/API2.pm

    (Mais je ne les ai pas tous testés, loin d'en faut, je juge surtout d'après la doc.).

  3. #3
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Que contiennent ces fichiers .lst ? (du texte ?)
    Tu peux peut-être envisager d'utiliser ImageMagick qui permet de faire énormément de types de conversion (sous Linux et Windows), y compris de conversion en PDF.
    ImageMagick dispose également d'une interface en perl (module Image::Magick).
    Après, les outils ImageMagick dispose de très nombres options, et leur utilisation n'est pas forcément évidente si tu ne connais pas.
    Mais si le résultat d'une commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    convert *.lst pdf-%03d.pdf
    convient, ça peut être très simple.
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 183
    Points : 32
    Points
    32
    Par défaut
    le contenu d'un fichier lst c'est du texte c'est comme du XML

  5. #5
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Les fichiers textes sont pris en charge par ImageMagick...
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 183
    Points : 32
    Points
    32
    Par défaut
    D'accord de ce fait j'aurais quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Image :: Magick
    my @Files = GetFilesList ('C:/2016_03_07_11/prod');
    foreach my $File  (@Files) 
    { 
    	convert *.lst pdf-%03d.pdf
     
    }

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 183
    Points : 32
    Points
    32
    Par défaut
    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.

  8. #8
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    L'outil convert de ImageMagick fonctionne directement sous l'invité de commande (shell sous Unix ou "Invité de commande" sous Windows).
    Pour utiliser le module Image::Magick de perl, c'est un peu plus compliquer (il faut créer des object Image::Magick avec new, lire les fichiers, et les écrire à nouveau avec la bon type, comme par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    use strict;
    use warnings;
    use Image::Magick;
    use File::Basename;
     
    # ARGV contient les fichiers à convertir
    foreach my $file (@ARGV) {
      my ($f, $dir) = fileparse($file);
      my $im = Image::Magick->new();
      $im->Read($file);
      $im->Write("$f.pdf");
    }
    J'ai écrit ça sans l'avoir testé.

    En uniligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -Mv5.14 -MImage::Magick -E '$i = Image::Magick->new();$i->Read($_);$i->Write(s/\.lst/.pdf/r) foreach @ARGV' *.lst
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 183
    Points : 32
    Points
    32
    Par défaut
    Bonjour à tous,

    Je viens d'installer Strawberry Perl.

    Lorsque j'exécute mon programme Perl avec ce que tu m'as donné voici ce que j'obtiens dans le cmd :
    Pièce jointe 203456

    Et lorsque j'exécute mon programme perl dans Powershell j'obtiens :
    Pièce jointe 203457

  10. #10
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Si tu utilises Strawberry perl, tu dois lancer l'invité de commande de Strawberry perl (même si c'est aussi sensé fonctionner depuis les autres shell de Windows).
    Je suppose donc que ton installation est incomplète (variable d'environnement PATH non mise à jour).
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  11. #11
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    Bonjour,

    Après avoir installé Perl, as-tu redémarré ton PC ?
    Ensuite, tu fais et tu relances ton programme.

  12. #12
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Je doute que ce soit suffisant ... il me semble qu'il faut également installer ImageMagick, mais je n'en suis plus sûr.
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 183
    Points : 32
    Points
    32
    Par défaut
    Je viens de redémarrer mon Pc et j'ai exécuté ta commande l'installation c'est bien passé.

    Mais quand j'exécute de nouveau mon programme voici ce qu'il me dit :

    Can't locate Image/Magick.pm in @INC (you may need to install the Image::Magick module) (@INC contains: C:/Strawberry/perl/site/lib C:/Strawberry/perl/vendor/lib C:/Strawberry/perl/lib .) at convertir_txt_pdf.pl line 3.
    BEGIN failed--compilation aborted at convertir_txt_pdf.pl line 3.

  14. #14
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Installe ImageMagick comme que t'y ai invité, puis le module CPAN Image::Magick, comme djibril te l'a demandé.
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  15. #15
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 183
    Points : 32
    Points
    32
    Par défaut
    Je n'ai pas trouvé Image Magick mais plutôt App::a2pdf

  16. #16
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 183
    Points : 32
    Points
    32
    Par défaut
    Je viens de trouver un module PDF
    PDf::create j'ai réussi à l'installer avec cpan PDF::Create

  17. #17
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 183
    Points : 32
    Points
    32
    Par défaut
    J'utilise finalement PDF::API2

  18. #18
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 183
    Points : 32
    Points
    32
    Par défaut
    J'utilise une fois encore un fichier d'initialisation dont voici le contenu :
    [repertoire]
    REP_PROD=C:/Users/baranowp/Documents/2016_03_07_11/prod

    [fichier]
    FIC_1=C:\Users\baranowp\Documents\2016_03_07_11\prod\test.lst
    Fic_2=C:\Users\baranowp\Documents\2016_03_07_11\prod\test1.lst

    Voici le code que j'utilise :

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     use strict;
    use warnings;
    use Config::IniFiles;
    use PDF::API2;
    
    my @repertoire; ## repertoire prod ##
    my @fichier;  ## test.lst test1.lst ##
    
    my $cfg = Config::IniFiles->new( -file => $ARGV[0] );
    foreach ('REP_PROD') {
    	  push @repertoire, $cfg->val('repertoire', $_);
    	  }
    foreach ('Fic_1','FIC_2') {
    	  push @fichier, $cfg->val('fichier', $_) if $cfg->val('fichier', $_);;
       }
       
    my $file=$fichier[0];;
    (my $file_out=$file)=~s/\.lst$/.pdf/;
    
    my %options = (
      header        => 1,          # Include header on all pages
      footer        => 1,          # Include footer on all pages
      line_numbers  => 1,          # Print line numbers
      page_width    => 595,        # A4
      page_height   => 842,        # A4
      left_margin   => 48,         # 0.75"
      right_margin  => 48,         # 0.75"
      top_margin    => 60,         # 
      bottom_margin => 60,         # 
      font_face     => 'Courier',  # Monospaged text
      font_size     => 9,          # Text size = 9 points
      perl_syntax   => 1,          # Perform Perl syntax highlighting
      icon_scale    => 0.5,        # Icon scaling (%age)
     );
     
    $options{title}=$file;
     
    my $pdf=PDF::API2->new(%options);
     
    open(IN, '<', $file);
    foreach my $line (<IN> )
    {
        $pdf->print($line);
        }
       close(IN);
        
       [B]open(OUT, '>', $file_out);[/B]
       print OUT $pdf->{pdf}->stringify;
      close(OUT);
    Voici mes messages d'erreurs:

    - Use of uninitialized value $file_out in substitution (s///) at C:\users\baranowp\documents\2016_03_07_11\prod\convertir_lst_pdf.pl line 18.
    - Use of uninitialized value $file in open at C:\users\baranowp\documents\2016_03_07_11\prod\convertir_lst_pdf.pl line 41.
    - readline() on closed filehandle IN at C:\users\baranowp\documents\2016_03_07_11\prod\convertir_lst_pdf.pl line 42.
    - Use of uninitialized value $file_out in open at C:\users\baranowp\documents\2016_03_07_11\prod\convertir_lst_pdf.pl line 48.
    - Can't locate object method "stringify" via package "PDF::API2::Basic:DF::File" at C:\users\baranowp\documents\2016_03_07_1\prod\convertir_lst_pdf.pl line 49.

    Je ne comprend pas mes erreurs que mon interpréteur me renvoie, pouvez-vous m'aider s'il vous plaît
    Je vous en remercie par avance.

    Cordialement

  19. #19
    Membre habitué
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juillet 2014
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2014
    Messages : 84
    Points : 197
    Points
    197
    Par défaut
    Il manque un back slash dans la substitution pour protéger le '.'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (my $file_out=$file)=~s/\.lst$/ \.pdf/;
    Use of uninitialized value $file
    la valeur de $file est vide, donc ouverture impossible.

    Commence par corriger la regex.

  20. #20
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 183
    Points : 32
    Points
    32
    Par défaut
    J'ai corrigé ma regex avec le back slash manquant mais toujours le même message d'erreur

Discussions similaires

  1. [E-07] Convertir des fichiers objects en PDF
    Par lucazzo dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 05/11/2008, 14h03
  2. [FPDF] Convertir des fichiers word uploadés en pdf
    Par swissmade dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 02/08/2007, 11h02
  3. [Word] Convertir des fichiers word uploadés en pdf
    Par philippe2 dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 07/12/2006, 14h34
  4. Réponses: 2
    Dernier message: 17/08/2004, 14h27
  5. [] Convertir un fichier word en pdf
    Par SpaceFrog dans le forum VBA Word
    Réponses: 7
    Dernier message: 06/12/2002, 15h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo