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 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
|
use strict;
use warnings;
use CAM::PDF;
use CAM::PDF::PageText;
use Config::IniFiles;
my @repertoire;
my @filelist;
my $cfg = Config::IniFiles->new( -file => $ARGV[0] );
foreach ('REP_FACTURE','REP_BULLETIN') {
push @repertoire, $cfg->val('repertoire', $_) if $cfg->val('repertoire', $_);
}
sub GetFilesList
{
my $Path = $_[0];
my $FileFound;
my @FilesList=();
## Lecture de la liste des fichiers
opendir (my $FhRep, $Path)
or die "Impossible d'ouvrir le repertoire $Path\n";
my @Contenu = grep { !/^\.\.?$/ } readdir($FhRep);
closedir ($FhRep);
foreach my $FileFound (@Contenu) {
## Traitement des fichiers
if (-f "$Path/$FileFound") {
push (@FilesList, "$Path/$FileFound" );
}
## Traitement des repertoires
elsif ( -d "$Path/$FileFound") {
## Boucle pour lancer la recherche en mode recursif
push (@FilesList, GetFilesList("$Path/$FileFound") );
}
}
return @FilesList;
}
my @Files = GetFilesList ($repertoire[0]);
foreach my $File (@Files) {
next unless $File =~ /\.pdf$/i;
print "$File \n";
}
@Files = GetFilesList ($repertoire[0]);
foreach my $File (@Files) {
next unless $File =~ /\.txt$/i;
print "$File \n";
}
@Files = GetFilesList ($repertoire[1]);
foreach my $File (@Files) {
next unless $File =~ /\.pdf$/i;
print "$File \n";
}
@Files = GetFilesList ($repertoire[1]);
foreach my $File (@Files) {
next unless $File =~ /\.txt$/i;
print "$File \n";
}
sub convert_pdf_to_text {
my $pdf = CAM::PDF->new(shift);
my $fic_txt_out = shift;
my $tmp = $pdf->getPageContentTree(1);
my $text = CAM::PDF::PageText->render($tmp);
# ajustements à effectuer par rapport à la sortie,
# sur un exemple simple, il me fallait ceci:
$text =~ s/\n{5}/\n/g;
$text =~ s/\n{4}/ /g;
open my $fout, '>', $fic_txt_out or die "Ouverture impossible de $fic_txt_out $!";
print $fout $text;
close $fout;
}
my @pdf_files = glob ("$repertoire[0]/*.pdf"); # répertoire facture
for my $in_file (@Files) {
my $out_file = $in_file;
$out_file =~ s/\.pdf/.txt/; # construit le nom de fichier en sortie à partir du nom en entrée
convert_pdf_to_text($in_file, $out_file);
}
@pdf_files = glob ("$repertoire[1]/*.pdf"); # répertoire bulletin paie
for my $in_file (@Files) {
my $out_file = $in_file;
$out_file =~ s/\.pdf/.txt/; # construit le nom de fichier en sortie à partir du nom en entrée
convert_pdf_to_text($in_file, $out_file);
} |
Partager