8 use Data::Dump qw(dump);
11 die "unsage: $0 card/template.svg 201008159999 login Ime Prezime\n" unless @ARGV;
13 my ($card_svg,$nr,$login,$ime,$prezime) = @ARGV;
15 my $png = $ENV{PNG} || 0;
17 warn "# svg: $card_svg nr: $nr ime: $ime prezime: $prezime\n";
20 '200908109999' => $nr,
21 'login0123456789@ffzg.hr' => $login,
22 'Knjižničarko' => $ime,
23 'Čitalić' => $prezime,
26 mkdir 'out' unless -d 'out';
27 my $out = 'out/' . $nr;
29 foreach my $existing ( glob $out . '*' ) {
30 warn "# remove $existing ", -s $existing, " bytes\n";
34 my $twig = XML::Twig->new(
39 utf8::decode( $text );
40 warn "# tspan ", dump($text);
41 if ( my $replace = $mapping->{ $text } ) {
42 warn "# replace ", $text, " => $replace\n";
43 # utf8::decode( $replace );
44 $el->set_text( $replace );
48 pretty_print => 'indented',
50 $twig->parsefile( $card_svg );
52 foreach my $layer ( qw( front back ) ) {
54 foreach my $el ( $twig->get_xpath(q{g[@inkscape:groupmode="layer"]}) ) {
55 if ( $el->{att}->{'inkscape:label'} eq $layer ) {
56 $el->set_att( 'style' => 'display:inline' );
58 $el->set_att( 'style' => 'display:none' );
63 my $base = "$out.$layer";
65 my $rsvg_convert = "rsvg-convert --width=1016 --height=648";
67 $rsvg_convert .= " --output $base.png";
69 $rsvg_convert .= " | pngtopnm -alpha | pnminvert > $base.pnm";
71 $rsvg_convert = "tee /tmp/test.svg | $rsvg_convert";
73 open(my $rsvg, '|-', $rsvg_convert);
74 $twig->print( $rsvg );
77 my $path =(glob("$base*"))[0];
78 warn "# $path ", -s $path, " bytes\n";