#!/usr/bin/perl -w use strict; use autodie; use warnings; use Carp qw(croak); use Getopt::Std; sub main{ my ($image,$number,$scale,$COLS) = @_; my $header = '\documentclass[12pt]{report} \usepackage{graphicx} \usepackage{array} \usepackage{makecell} \usepackage[T1]{fontenc} \usepackage[margin=0.25in]{geometry} \usepackage[utf8]{inputenc} \begin{document} '; my $footer = '\end{document}'; open my $tombolatex, '>','int.tex'; print $tombolatex $header; my $body = '\begin{tabular}{'.('|c|' x $COLS).'} \hline'. (('\thead{Ticket} &'."\n") x ($COLS-1)). '\thead{Ticket}'."\n".'\\\\[6ex] \hline'. (('\makecell{\includegraphics[scale=ISCALE]{image}\\\\ Ticket} &'."\n")x ($COLS-1)). '\makecell{\includegraphics[scale=ISCALE]{image}\\\\ Ticket} \\\\[12ex] \hline \end{tabular} '; print $tombolatex $body x (1 + $number / $COLS); print $tombolatex $footer; close $tombolatex; open $tombolatex, '>','res.tex'; open my $input,'<','int.tex'; my $tn = 1; my $iter = 0; my $find = 'Ticket'; $find = quotemeta $find; while(<$input>){ my $replace = "Ticket $tn"; my $line= $_; $line=~s/image/$image/g; $line =~s/ISCALE/$scale/g; if($line =~ s/$find/$replace/g){ if($tn % $COLS == 0){ if($iter == 1){ $tn++; $iter = 0; } else{ $tn -= ($COLS-1); $iter++; } } else{ $tn++; } } print $tombolatex $line; } } our ($opt_i,#image switch $opt_n,#number of tickets $opt_s,#image_scale $opt_c,#number of columns $opt_o);#output filename getopts('i:n:s:c:o:'); my @shortargs= ($opt_i,$opt_n,$opt_s,$opt_c,$opt_o); if(!defined($shortargs[0])|| !defined $shortargs[1] || !defined $shortargs[2]|| !defined $shortargs[3]||!defined $shortargs[4]){ croak <<"END" -i image to put on tickets: $shortargs[0] -n number of tickets: $shortargs[1] -s image scale: $shortargs[2] -c number of columns: $shortargs[3] -o filename: $shortargs[4] END } main @shortargs; `pdflatex res.tex`; unlink 'int.tex'; rename 'res.pdf', $shortargs[4]; my @res = glob "res.*"; unlink @res;