- my $userspath = $::lx_office_conf{paths}->{userspath};
- my $vars = $params{variables} || {};
- my $form = Form->new('');
- $form->{$_} = $vars->{$_} for keys %{ $vars };
- $form->{format} = 'pdf';
- $form->{cwd} = getcwd();
- $form->{templates} = $::instance_conf->get_templates;
- $form->{IN} = $params{template};
- $form->{tmpdir} = $form->{cwd} . '/' . $userspath;
- my ($suffix) = $params{template} =~ m{\.(.+)};
-
- my $temp_fh;
- ($temp_fh, $form->{tmpfile}) = File::Temp::tempfile(
+ return __PACKAGE__->create_parsed_file(
+ format => 'pdf',
+ template_type => 'LaTeX',
+ %params,
+ );
+}
+
+sub create_parsed_file {
+ my ($class, %params) = @_;
+
+ my $keep_temp_files = $::lx_office_conf{debug} && $::lx_office_conf{debug}->{keep_temp_files};
+ my $userspath = SL::System::Process::exe_dir() . "/" . $::lx_office_conf{paths}->{userspath};
+ my $temp_dir = File::Temp->newdir(
+ "kivitendo-print-XXXXXX",
+ DIR => $userspath,
+ CLEANUP => !$keep_temp_files,
+ );
+
+ my $vars = $params{variables} || {};
+ my $form = Form->new('');
+ $form->{$_} = $vars->{$_} for keys %{$vars};
+ $form->{format} = lc($params{format} || 'pdf');
+ $form->{cwd} = SL::System::Process::exe_dir();
+ $form->{templates} = $::instance_conf->get_templates;
+ $form->{IN} = $params{template};
+ $form->{tmpdir} = $temp_dir->dirname;
+ my $tmpdir = $form->{tmpdir};
+ my ($suffix) = $params{template} =~ m{\.(.+)};
+
+ my ($temp_fh, $tmpfile) = File::Temp::tempfile(