use SL::Helper::CreatePDF qw();
use SL::Helper::Flash;
use SL::Locale::String;
+use SL::System::Process;
use SL::Template::LaTeX;
use Rose::Object::MakeMethods::Generic
sub action_create_pdf {
my ($self, %params) = @_;
+ my $keep_temp_files = $::lx_office_conf{debug} && $::lx_office_conf{debug}->{keep_temp_files};
+ my $temp_dir = File::Temp->newdir(
+ "kivitendo-print-XXXXXX",
+ DIR => SL::System::Process::exe_dir() . "/" . $::lx_office_conf{paths}->{userspath},
+ CLEANUP => !$keep_temp_files,
+ );
+
my $base_name = $self->requirement_spec->type->template_file_name || 'requirement_spec';
- my @pictures = $self->prepare_pictures_for_printing;
- my %result = SL::Template::LaTeX->parse_and_create_pdf("${base_name}.tex", SELF => $self, rspec => $self->requirement_spec);
+ my @pictures = $self->prepare_pictures_for_printing($temp_dir->dirname);
+ my %result = SL::Template::LaTeX->parse_and_create_pdf("${base_name}.tex", SELF => $self, rspec => $self->requirement_spec, userspath => $temp_dir->dirname);
unlink @pictures unless ($::lx_office_conf{debug} || {})->{keep_temp_files};
}
sub prepare_pictures_for_printing {
- my ($self) = @_;
+ my ($self, $userspath) = @_;
my @files;
- my $userspath = File::Spec->rel2abs($::lx_office_conf{paths}->{userspath});
- my $target = "${userspath}/kivitendo-print-requirement-spec-picture-" . Common::unique_id() . '-';
+ $userspath ||= SL::System::Process::exe_dir() . "/" . $::lx_office_conf{paths}->{userspath};
+ my $target = "${userspath}/kivitendo-print-requirement-spec-picture-" . Common::unique_id() . '-';
foreach my $picture (map { @{ $_->pictures } } @{ $self->requirement_spec->text_blocks }) {
my $output_file_name = $target . $picture->id . '.' . $picture->get_default_file_name_extension;