use inkscape --shell to export files
[Printer-EVOLIS.git] / inkscape-render.pl
1 #!/usr/bin/perl
2
3 use warnings;
4 use strict;
5 use autodie;
6
7 my $card_svg = 'card/ffzg-2010.svg';
8
9 my ($nr,$ime,$prezime) = ( qw/
10 200900000042
11 Dobrica
12 Pavlinušić
13 / );
14
15 my $mapping = {
16 '200908109999' => $nr,
17 'Knjižničarko' => $ime,
18 'Čitalić' => $prezime,
19 };
20
21 sub mapping { $mapping->{ $_[0] } }
22
23 my $re = join('|', keys %$mapping);
24
25 mkdir 'out' unless -d 'out';
26 my $out = 'out/' . $nr;
27
28 foreach my $existing ( glob $out . '*' ) {
29         warn "# remove $existing ", -s $existing, " bytes\n";
30         unlink $existing;
31 }
32
33 open(my $in,     '<', $card_svg);
34 open(my $print,  '>', "$out.print.svg");
35 open(my $screen, '>', "$out.screen.svg");
36
37 while(<$in>) {
38
39         if ( m{($re)} ) {
40                 warn "mapping $1\n";
41                 s{($1)}{mapping($1)}e;
42         }
43
44         if ( s{##print##}{none} ) {
45                 warn "print layer: $_\n";
46                 print $print $_;
47                 s{none}{inline};
48                 print $screen $_;
49
50         } else {
51                 print $print  $_;
52                 print $screen $_;
53         }
54
55 }
56
57 close($in);
58 close($print);
59 close($screen);
60
61 open(my $inkscape, '|-', 'inkscape --shell --without-gui');
62
63 sub inkscape_export {
64         my $part = shift;
65         print $inkscape "$out.print.svg --export-area-page --export-pdf $out.$part.pdf --export-id $part\n";
66         print $inkscape "$out.screen.svg --export-png $out.png --export-dpi 300";
67 }
68
69 inkscape_export 'print-front';
70 inkscape_export 'print-back';
71
72 close($inkscape);
73
74 __END__
75
76 #system "inkscape --file $out.print.svg  --export-pdf $out.pdf";
77
78 system "inkscape --file $out.print.svg --export-area-page --export-pdf $out.print-front.pdf --export-id print-front";
79 system "inkscape --file $out.print.svg --export-area-page --export-pdf $out.print-back.pdf --export-id print-back";
80 system "pdftk  $out.print-front.pdf $out.print-back.pdf cat output $out.print-duplex.pdf";
81
82 #system "inkscape --file $out.screen.svg --export-png $out.png --export-dpi 180";
83
84 #system "inkscape --file $out.screen.svg --export-png $out.300.png --export-dpi 300";
85
86 system "inkscape --file $out.print.svg --export-area-page --export-png $out.print-front.png --export-dpi 150 --export-id print-front --export-id-only";
87 system "inkscape --file $out.print.svg --export-area-page --export-png $out.print-back.png --export-dpi 150 --export-id print-back --export-id-only";
88
89
90 #system "qiv $out.png";
91 #system "xpdf $out.pdf";