123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299 |
- #!/usr/bin/perl
- use strict;
- use warnings;
- use PDF::FDF::Simple;
- use Data::Dumper;
- use DateTime;
- my $membres = [];
- my $fede = {
- 'titre' => "\nFédération des fournisseurs d'accès à Internet associatifs (Fédération FDN)",
- 'signature' => 'Pierre CRÉMAULT, secrétaire',
- 'siege' => 'Paris',
- 'waldec' => '',
- };
- my $fdn = {
- 'type' => 'stay', # init', 'add', 'del', 'stay'
- 'siren' => '419897855',
- 'waldec' => '107563P',
- 'prefecture' => 'Paris',
- 'titre' => "\n".'French Data Network (Réseau Français de Données)',
- 'objet' => "L'association a pour but : la promotion, l'utilisation et le développement des réseaux Internet et Usenet dans le respect de leur éthique en favorisant en particulier les utilisations à des fins de recherche ou d'éducation sans volonté commerciale.",
- 'siege' => 'chez Benjamin Bayart, 10 rue du Croissant',
- 'cp' => '75002',
- 'ville' => 'Paris'
- };
- push @$membres, $fdn;
- my $ldn = {
- 'type' => 'stay', # init', 'add', 'del', 'stay'
- 'siren' => '528368624',
- 'waldec' => 'W543005639',
- 'prefecture' => 'Nancy',
- 'titre' => "\nLorraine Data Network",
- 'objet' => "\nPromotion, utilisation et développement des réseaux Internet dans le respect de leur éthique en favorisant en particulier les utilisateurs à des fins de recherche ou d'éducation sans volonté commerciale",
- 'siege' => '213, rue des Vignerons',
- 'cp' => '54600',
- 'ville' => 'Villers-lès-Nancy'
- };
- push @$membres, $ldn;
- my $aqn = {
- 'type' => 'stay', # init', 'add', 'del', 'stay'
- 'siren' => '527777767',
- 'waldec' => 'W332010849',
- 'prefecture' => 'Gironde',
- 'titre' => "\nAquilenet",
- 'objet' => "\nPromotion, utilisation et développement du réseau Internet dans le respect de son éthique en favorisant en particulier les utilisations à des fins de recherche ou d'éducation sans volonté commerciale.",
- 'siege' => "155, cours de la Somme, Bât. G",
- 'cp' => '33800',
- 'ville' => 'Bordeaux'
- };
- push @$membres, $aqn;
- my $ilico = {
- 'type' => 'stay', # init', 'add', 'del', 'stay'
- 'siren' => '525018727',
- 'waldec' => 'W192001666',
- 'prefecture' => 'Corrèze',
- 'titre' => "\nAssociation Ilico (Internet Libre en Corrèze)",
- 'objet' => "Promouvoir l'utilisation et le développement du réseau Internet, c'est-à-dire le réseau public routé par le procole IP (Internet Protocol), constitué des systèmes autonomes reconnus par l'IANA (Internet Assigned Numbers Authority); favoriser les utilisation de ce réseau à des fins de recherche et d'éducation sans volonté commerciale et enfin, de défendre la neutralité de ce réseau.",
- 'siege' => "Mairie, Le Bourg",
- 'cp' => '19330',
- 'ville' => 'Chanteix'
- };
- push @$membres, $ilico;
- my $sames = {
- 'type' => 'stay', # init', 'add', 'del', 'stay'
- 'siren' => '514034230',
- 'waldec' => 'W641003539',
- 'prefecture' => 'Bayonne',
- 'titre' => "\nSames wireless",
- 'objet' => "Mettre en oeuvre et administrer un réseau informatique local desservant les habitations du quartier saint jean de sames puis d'autres habitations du bourg pour mutualiser des facilités informatiques comprenant un accès à l'Internet à haut débit sans obligation de résultat.",
- 'siege' => "Mairie",
- 'cp' => '64520',
- 'ville' => 'Sames'
- };
- push @$membres, $sames;
- my $teta = {
- 'type' => 'stay', # init', 'add', 'del', 'stay'
- 'siren' => '529558710',
- 'waldec' => 'W313015266',
- 'prefecture' => 'Ville',
- 'titre' => "\nTetaneutral.net",
- 'objet' => "Cette association a pour objet de promouvoir l'utilisation et le développement du réseau Internet, c'est à dire le réseau public, routé par le protocole IP (Internet Protocol), constitué des systèmes autonomes reconnus par l'IANA (Internet Assigned Numbers Authority) ; de favoriser les utilisations de ce réseau à des fins scientifiques, sociales, de recherche, d'éducation, de culture et artistiques sans volonté commerciale, de favoriser la compréhension du réseau Internet et de ses enjeux par le public et enfin, de défendre la neutralité de ce réseau.",
- 'siege' => "chez Marc Bruyere, 10 place Saint Julien",
- 'cp' => '31000',
- 'ville' => 'Toulouse'
- };
- push @$membres, $teta;
- my $franci = {
- 'type' => 'stay', # init', 'add', 'del', 'stay'
- 'siren' => '529187775',
- 'waldec' => 'W941006323',
- 'prefecture' => 'Val-de-Marne',
- 'titre' => "\nFranciliens.net",
- 'objet' => "Promotion, utilisation et développement du réseau Internet dans le respect de sa neutralité et de son éthique en favorisant en particulier les utilisations à des fins de recherche ou d'éducation sans volonté commerciale; l'association a vocation à intervenir sur le territoire de la région Île de France.",
- 'siege' => "Chez Pierre Crémault, 96 avenue du Général de Gaulle",
- 'cp' => '94700',
- 'ville' => 'Maisons-Alfort'
- };
- push @$membres, $franci;
- my $iloth = {
- 'type' => 'add', # 'del', 'stay'
- 'siren' => '525190153',
- 'waldec' => 'W343011615',
- 'prefecture' => 'Montpellier',
- 'titre' => "\nInternet Libre et Ouvert pour Tous dans l'Hérault (ILOTH)",
- 'objet' => "\nLa promotion, l'utilisation et le développement de l'Internet libre et ouvert pour tous dans le pur respect de sa neutralité sans aucune volonté commerciale.",
- 'siege' => "480 rue de Centrayrargues, RES. Imperator BAT. A1",
- 'cp' => '34070',
- 'ville' => 'Montpellier'
- };
- push @$membres, $iloth;
- my $vierge = {
- 'type' => 'add', # 'del', 'stay'
- 'siren' => '',
- 'waldec' => 'W',
- 'prefecture' => 'Ville',
- 'titre' => "\nNom asso",
- 'objet' => "\nObjet de l'asso",
- 'siege' => "chez ...",
- 'cp' => '00000',
- 'ville' => 'Ville'
- };
- #push @$membres, $vierge;
- my $fields = <<EOF;
- 'form1[0].Page1[0].Adhesion[0]';
- 'form1[0].Page1[0].Code_SIREN[0]';
- 'form1[0].Page1[0].Comp_Init[0]';
- 'form1[0].Page1[0].Comp_Modif[0]';
- 'form1[0].Page1[0].Date_declaration[0]';
- 'form1[0].Page1[0].Imprimer1[0]';
- 'form1[0].Page1[0].Lieu_declaration[0]';
- 'form1[0].Page1[0].Nbre_Init[0]';
- 'form1[0].Page1[0].Nbre_Modif[0]';
- 'form1[0].Page1[0].Nom_declarant[0]';
- 'form1[0].Page1[0].NumCerfa[0]';
- 'form1[0].Page1[0].Num_Waldec[0]';
- 'form1[0].Page1[0].Retrait[0]';
- 'form1[0].Page1[0].Réinitialiser1[0]';
- 'form1[0].Page1[0].Titre_Long[0]';
- 'form1[0].Page2[0].Adresse_Siege_Asso[0]';
- 'form1[0].Page2[0].Adresse_Siege_Asso[1]';
- 'form1[0].Page2[0].Adresse_Siege_Asso[2]';
- 'form1[0].Page2[0].Associations_Tiers[0]';
- 'form1[0].Page2[0].Associations_Tiers[1]';
- 'form1[0].Page2[0].Associations_Tiers[2]';
- 'form1[0].Page2[0].Code_SIREN_Asso[0]';
- 'form1[0].Page2[0].Code_SIREN_Asso[1]';
- 'form1[0].Page2[0].Code_SIREN_Asso[2]';
- 'form1[0].Page2[0].Codepostal_Asso[0]';
- 'form1[0].Page2[0].Codepostal_Asso[1]';
- 'form1[0].Page2[0].Codepostal_Asso[2]';
- 'form1[0].Page2[0].Commune_Asso[0]';
- 'form1[0].Page2[0].Commune_Asso[1]';
- 'form1[0].Page2[0].Commune_Asso[2]';
- 'form1[0].Page2[0].Num_Waldec[0]';
- 'form1[0].Page2[0].Num_Waldec_Asso[0]';
- 'form1[0].Page2[0].Num_Waldec_Asso[1]';
- 'form1[0].Page2[0].Num_Waldec_Asso[2]';
- 'form1[0].Page2[0].Objet_Asso[0]';
- 'form1[0].Page2[0].Objet_Asso[1]';
- 'form1[0].Page2[0].Objet_Asso[2]';
- 'form1[0].Page2[0].Prefecture[0]';
- 'form1[0].Page2[0].Prefecture[1]';
- 'form1[0].Page2[0].Prefecture[2]';
- 'form1[0].Page2[0].Titre_Asso[0]';
- 'form1[0].Page2[0].Titre_Asso[1]';
- 'form1[0].Page2[0].Titre_Asso[2]';
- 'form1[0].Page2[0].Titre_Long[0]';
- EOF
- my $date;
- my $nbasso = 0;
- my $nbadd = 0;
- my $nbdel = 0;
- my $type = 'init';
- sub faire_page($$) {
- my ( $values, $page ) = @_;
- my $fdf = new PDF::FDF::Simple ();
- $fdf->filename('13969.fdf');
- $fdf->load();
- $fdf->content($values);
- $fdf->save('test.fdf');
- my $keep;
- if ( $page eq 'garde' ) {
- $keep = 1;
- } else {
- $keep = 2;
- }
- `pdftk cerfa_13969-01.pdf fill_form test.fdf output - | pdftk - cat $keep output page$page.pdf`;
- return "page$page.pdf";
- }
- sub page_garde {
- my $values = {
- 'form1[0].Page1[0].Titre_Long[0]' => $fede->{'titre'},
- 'form1[0].Page1[0].Nom_declarant[0]' => $fede->{'signature'},
- 'form1[0].Page1[0].Date_declaration[0]' => $date,
- 'form1[0].Page1[0].Lieu_declaration[0]' => $fede->{'siege'},
- };
- if ( $fede->{'waldec'} ) {
- $values->{'form1[0].Page1[0].Num_Waldec[0]'} = $fede->{'waldec'};
- }
- if ( $type eq 'init' ) {
- $values->{'form1[0].Page1[0].Comp_Init[0]'} = 1;
- $values->{'form1[0].Page1[0].Nbre_Init[0]'} = $nbasso;
- } else {
- $values->{'form1[0].Page1[0].Comp_Modif[0]'} = 1;
- $values->{'form1[0].Page1[0].Nbre_Modif[0]'} = $nbasso;
- $values->{'form1[0].Page1[0].Retrait[0]'} = $nbadd;
- $values->{'form1[0].Page1[0].Adhesion[0]'} = $nbdel;
- }
- return faire_page($values, 'garde');
- }
- sub page_asso(@) {
- my @a = @_;
- my $pg = pop @a;
- my $values = {};
- $values->{'form1[0].Page2[0].Num_Waldec[0]'} = $fede->{'waldec'};
- $values->{'form1[0].Page2[0].Titre_Long[0]'} = $fede->{'titre'};
- for my $n ( 0..2) {
- next if ! defined $a[$n];
- $values->{"form1[0].Page2[0].Adresse_Siege_Asso[$n]"} = $a[$n]->{'siege'};
- # $values->{"form1[0].Page2[0].Associations_Tiers[0]"} = 'XXX';
- $values->{"form1[0].Page2[0].Code_SIREN_Asso[$n]"} = $a[$n]->{'siren'};
- $values->{"form1[0].Page2[0].Codepostal_Asso[$n]"} = $a[$n]->{'cp'};
- $values->{"form1[0].Page2[0].Commune_Asso[$n]"} = $a[$n]->{'ville'};
- $values->{"form1[0].Page2[0].Num_Waldec_Asso[$n]"} = $a[$n]->{'waldec'};
- $values->{"form1[0].Page2[0].Objet_Asso[$n]"} = $a[$n]->{'objet'};
- $values->{"form1[0].Page2[0].Prefecture[$n]"} = $a[$n]->{'prefecture'};
- $values->{"form1[0].Page2[0].Titre_Asso[$n]"} = $a[$n]->{'titre'};
- }
- return faire_page($values, $pg);
- }
- sub declaration() {
- my $now = DateTime->now;
- $date = $now->strftime("%A %d %B %Y");
- $date = "25 juin 2011";
- if ( $type eq 'init' ) {
- for my $m ( @$membres ) {
- $m->{'type'} = 'init';
- }
- $nbasso = @$membres;
- $nbadd = $nbdel = 0;
- } else {
- for my $m ( @$membres ) {
- if ( $m->{'type'} eq 'del' ) {
- $nbdel++; next;
- }
- if ( $m->{'type'} eq 'add' ) {
- $nbadd++; $nbasso++; next;
- }
- if ( $m->{'type'} eq 'stay') {
- $nbasso++; next;
- }
- if ( $m->{'type'} eq 'init' ) {
- $m->{'type'} = 'stay';
- $nbasso++; next;
- }
- die "Je ne connais pas ce type '$m->{'type'}' pour ".Dumper($m);
- }
- }
- my @pages;
- my $i = 1;
- push @pages, page_garde();
- while ( @$membres ) {
- my $a1 = shift @$membres;
- my $a2 = shift @$membres;
- my $a3 = shift @$membres;
- push @pages, page_asso($a1, $a2, $a3, $i++);
- }
- my $input = "";
- my $cat = "";
- for my $p ( @pages ) {
- $input .= " $p";
- $cat .= "";
- }
- `pdftk $input cat $cat output xx.pdf`;
- }
- $type = 'add';
- declaration();
|