Bonjour,
Je début en perl...
Commente testé une balise autofermante (exemple <w:b/>) avec le module Twig, si je fais bien.
Merci
Version imprimable
Bonjour,
Je début en perl...
Commente testé une balise autofermante (exemple <w:b/>) avec le module Twig, si je fais bien.
Merci
Tu as une méthode is_empty dans la documentation du module.
Merci.
Je commence dans Perl, je n'ai pas de bon reflex et traduire l'Anglais avec Google pas toujours simple.
je travail sur une conversion.
J'arrive bien atteindre avec la commande "children('w:rPr')" et quand je passe dans un autre fonction, il me fais un erreur sur ma variable $elt. J'ai fais le tour du net mais je ne trouve pas exemple qui me parle.
je vais tenté de mettre le code.
Contenu XML:
Voici mon Code perl :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 <w:p w:rsidR="003F267B" w:rsidRDefault="009A3DA5"> <w:r> <w:t xml:space="preserve">Philou </w:t> </w:r> <w:proofErr w:type="spellStart"/> <w:r w:rsidRPr="009A3DA5"> <w:rPr> <w:b/> </w:rPr> <w:t>testBold</w:t> </w:r> <w:proofErr w:type="spellEnd"/> <w:r> <w:t xml:space="preserve"> </w:t> </w:r> <w:proofErr w:type="spellStart"/> <w:r> <w:t>philou</w:t> </w:r> <w:proofErr w:type="spellEnd"/> </w:p>
Je croix que j'ai un problème d'objet qui n'est pas crée correctement??Code:
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 #!/usr/bin/perl -w use strict; use warnings; use XML::Twig; my $FichierXML = 'document.xml'; my $twig = new XML::Twig( Twig_handlers => { 'w:p' => \&lesPara, }, ); my $FichierResulat = 'Test01InIndesg.txt'; open( my $FhResultat, '>', $FichierResulat ) # deux >> ecriture à la suite > nouveau or die("Impossible d'ouvrir le fichier $FichierResulat\n$!"); print {$FhResultat} "<ASCII-MAC>\n<Version:7.5><FeatureSet:InDesign-Roman><ColorTable:=<Black:COLOR:CMYK:Process:0,0,0,1>>\n"; # Création d'un objet twig $twig->parsefile($FichierXML); # Fermeture du fichier close($FhResultat); # function para sub lesPara{ my ( $twig, $TwigPara ) = @_; print {$FhResultat} "<ParaStyle:NormalParagraphStyle>"; foreach my $TwigCara ( $TwigPara->children('w:r')) { if (my $monStyleCara = $TwigCara->children('w:rPr')) { $TwigLangage -> setTwigHandlers({'w:rPr/*' => \&wrPrStyleCara}); print {$FhResultat} "", $TwigCara->field('w:t'), "<CharStyle:>"; } else { print {$FhResultat} "", $TwigCara->field('w:t'); } } $twig->purge; return; } # # Function pour le style de caractaire # sub wrPrStyleCara { ### my $p2 = XML::Twig::Elt->parse( '<para id="p2">para2</para>'); my ($t, $elt) = @_; if ($monTest eq 'w:b') { print {$FhResultat} "<CharStyle:gras>"; } elsif ($monTest eq 'w:i') { print {$FhResultat} "<CharStyle:italic>"; } else { print {$FhResultat} "$monTest"; } } # fin funcion style de caractère
un début de solution me suffit pour passé au problème suivant.
Je me replonge dans mes book.
Merci
Quel est concrètement le but de votre programme ?
Merci,
Désolé pour le retard... convertir un fichier docx en un fichier texte avec des tag pour Indesign. Un ami ma donner un piste et je creuse ...
Je commence à maitrisé les modules en Perl ...
Et la je passe au module Archive::Zip.
Merci