Dialogbuchung - Buchen, Storno und Löschen protokollieren
[kivitendo-erp.git] / SL / Template / HTML.pm
1 package SL::Template::HTML;
2
3 use parent qw(SL::Template::LaTeX);
4
5 use strict;
6
7 sub new {
8   my $type = shift;
9
10   return $type->SUPER::new(@_);
11 }
12
13 sub format_string {
14   my ($self, $variable) = @_;
15   my $form = $self->{"form"};
16
17   $variable = $main::locale->quote_special_chars('Template/HTML', $variable);
18
19   # Allow some HTML markup to be converted into the output format's
20   # corresponding markup code, e.g. bold or italic.
21   my @markup_replace = ('b', 'i', 's', 'u', 'sub', 'sup');
22
23   foreach my $key (@markup_replace) {
24     $variable =~ s/\&lt;(\/?)${key}\&gt;/<$1${key}>/g;
25   }
26
27   return $variable;
28 }
29
30 sub get_mime_type() {
31   my ($self) = @_;
32
33   if ($self->{"form"}->{"format"} =~ /postscript/i) {
34     return "application/postscript";
35   } elsif ($self->{"form"}->{"format"} =~ /pdf/i) {
36     return "application/pdf";
37   } else {
38     return "text/html";
39   }
40 }
41
42 sub uses_temp_file {
43   my ($self) = @_;
44
45   if ($self->{"form"}->{"format"} =~ /postscript/i) {
46     return 1;
47   } elsif ($self->{"form"}->{"format"} =~ /pdf/i) {
48     return 1;
49   } else {
50     return 0;
51   }
52 }
53
54 sub convert_to_postscript {
55   my ($self) = @_;
56   my ($form, $userspath) = ($self->{"form"}, $self->{"userspath"});
57
58   # Convert the HTML file to postscript
59
60   if (!chdir("$userspath")) {
61     $self->{"error"} = "chdir : $!";
62     $self->cleanup();
63     return 0;
64   }
65
66   $form->{"tmpfile"} =~ s/\Q$userspath\E\///g;
67   my $psfile = $form->{"tmpfile"};
68   $psfile =~ s/.html/.ps/;
69   if ($psfile eq $form->{"tmpfile"}) {
70     $psfile .= ".ps";
71   }
72
73   system($::lx_office_conf{applications}->{html2ps} . " -f html2ps-config < $form->{tmpfile} > $psfile");
74   if ($?) {
75     $self->{"error"} = $form->cleanup($::lx_office_conf{applications}->{html2ps});
76     return 0;
77   }
78
79   $form->{"tmpfile"} = $psfile;
80
81   $self->cleanup();
82
83   return 1;
84 }
85
86 sub convert_to_pdf {
87   my ($self) = @_;
88   my ($form, $userspath) = ($self->{"form"}, $self->{"userspath"});
89
90   # Convert the HTML file to PDF
91
92   if (!chdir("$userspath")) {
93     $self->{"error"} = "chdir : $!";
94     $self->cleanup();
95     return 0;
96   }
97
98   $form->{"tmpfile"} =~ s/\Q$userspath\E\///g;
99   my $pdffile = $form->{"tmpfile"};
100   $pdffile =~ s/.html/.pdf/;
101   if ($pdffile eq $form->{"tmpfile"}) {
102     $pdffile .= ".pdf";
103   }
104
105   system($::lx_office_conf{applications}->{html2ps} . " -f html2ps-config < $form->{tmpfile} | ps2pdf - $pdffile");
106   if ($?) {
107     $self->{"error"} = $form->cleanup($::lx_office_conf{applications}->{html2ps});
108     return 0;
109   }
110
111   $form->{"tmpfile"} = $pdffile;
112
113   $self->cleanup();
114
115   return 1;
116 }
117
118 1;