'<pagebreak>',
'&', quotemeta("\n"),
'"', '\$', '%', '_', '#', quotemeta('^'),
- '{', '}', '<', '>', '£', "\r"
+ '{', '}', '<', '>', '£', "\r", '±', '\xe1',
],
quotemeta("\\") => '\\textbackslash ',
'<pagebreak>' => '',
'>' => '$>$',
'£' => '\pounds ',
"\r" => "",
+ '±' => '$\pm$',
+ '\xe1' => '$\bullet$',
quotemeta('^') => '\^\\',
quotemeta("\n") => '\newline '
);
$variable =~ s/\$\<\$${key}\$\>\$(.*?)\$<\$\/${key}\$>\$/\\${new}\{$1\}/gi;
}
+ $variable =~ s/[\x00-\x1f]//g;
+
return $variable;
}
# replace the special variables <%sumcarriedforward%>
# and <%lastpage%>
- my $psum = $form->format_amount($myconfig, $sum, 2);
+ my $psum = $form->format_amount($self->{"myconfig"}, $sum, 2);
$pb =~ s/<%sumcarriedforward%>/$psum/g;
$pb =~ s/<%lastpage%>/$current_page/g;
$current_line += $lines;
}
if ($i < scalar(@{$form->{"linetotal"}})) {
- $sum += $form->parse_amount($myconfig, $form->{"linetotal"}->[$i]);
+ $sum += $form->parse_amount($self->{"myconfig"},
+ $form->{"linetotal"}->[$i]);
}
-
+
+ $form->{"cumulatelinetotal"}[$i] = $form->format_amount($self->{"myconfig"}, $sum, 2);
+
my $new_text = $self->parse_block($text, (@indices, $i));
return undef unless (defined($new_text));
$new_contents .= $start_tag . $new_text . $end_tag;
local *OUT = $_[1];
my $form = $self->{"form"};
- # Do we have to run LaTeX two times? This is needed if
- # the template contains page references.
- my $two_passes = 0;
-
if (!open(IN, "$form->{templates}/$form->{IN}")) {
$self->{"error"} = "$!";
return 0;
close(IN);
my $contents = join("", @_);
- $two_passes = 1 if ($contents =~ /\\pageref/s);
# detect pagebreak block and its parameters
if ($contents =~ /<%pagebreak\s+(\d+)\s+(\d+)\s+(\d+)\s*%>(.*?)<%end(\s*pagebreak)?%>/s) {
print(OUT $new_contents);
if ($form->{"format"} =~ /postscript/i) {
- return $self->convert_to_postscript($two_passes);
+ return $self->convert_to_postscript();
} elsif ($form->{"format"} =~ /pdf/i) {
- return $self->convert_to_pdf($two_passes);
+ return $self->convert_to_pdf();
} else {
return 1;
}
}
sub convert_to_postscript {
- my ($self, $two_passes) = @_;
+ my ($self) = @_;
my ($form, $userspath) = ($self->{"form"}, $self->{"userspath"});
# Convert the tex file to postscript
$form->{tmpfile} =~ s/$userspath\///g;
- system("latex --interaction=nonstopmode $form->{tmpfile} " .
- "> $form->{tmpfile}.err");
- if ($?) {
- $self->{"error"} = $form->cleanup();
- $self->cleanup();
- return 0;
- }
- if ($two_passes) {
+ for (my $run = 1; $run <= 2; $run++) {
system("latex --interaction=nonstopmode $form->{tmpfile} " .
"> $form->{tmpfile}.err");
if ($?) {
}
sub convert_to_pdf {
- my ($self, $two_passes) = @_;
+ my ($self) = @_;
my ($form, $userspath) = ($self->{"form"}, $self->{"userspath"});
# Convert the tex file to PDF
$form->{tmpfile} =~ s/$userspath\///g;
- system("pdflatex --interaction=nonstopmode $form->{tmpfile} " .
- "> $form->{tmpfile}.err");
- if ($?) {
- $self->{"error"} = $form->cleanup();
- $self->cleanup();
- return 0;
- }
-
- if ($two_passes) {
+ for (my $run = 1; $run <= 2; $run++) {
system("pdflatex --interaction=nonstopmode $form->{tmpfile} " .
"> $form->{tmpfile}.err");
if ($?) {
####
-#### HTMLTemplate
+#### OpenDocumentTemplate
####
package OpenDocumentTemplate;
return 1;
}
+
+##########################################################
+####
+#### XMLTemplate
+####
+##########################################################
+
+package XMLTemplate;
+
+use vars qw(@ISA);
+
+@ISA = qw(HTMLTemplate);
+
+sub new {
+ #evtl auskommentieren
+ my $type = shift;
+
+ return $type->SUPER::new(@_);
+}
+
+sub format_string {
+ my ($self, $variable) = @_;
+ my $form = $self->{"form"};
+
+ my %replace =
+ ('order' => ['<', '>', quotemeta("\n")],
+ '<' => '<',
+ '>' => '>',
+ quotemeta("\n") => '<br>',
+ );
+
+ map({ $variable =~ s/$_/$replace{$_}/g; } @{ $replace{"order"} });
+
+ # Allow no markup to be converted into the output format
+ my @markup_replace = ('b', 'i', 's', 'u', 'sub', 'sup');
+
+ foreach my $key (@markup_replace) {
+ $variable =~ s/\<(\/?)${key}\>//g;
+ }
+
+ return $variable;
+}
+
+sub get_mime_type() {
+ my ($self) = @_;
+
+ if ($self->{"form"}->{"format"} =~ /elsterwinston/i) {
+ return "application/xml ";
+ } elsif ($self->{"form"}->{"format"} =~ /elstertaxbird/i) {
+ return "application/x-taxbird";
+ } else {
+ return "text";
+ }
+}
+
+sub uses_temp_file {
+ # tempfile needet for XML Output
+ return 1;
+}
+
1;