Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 49f0957f

Von Moritz Bunkus vor etwa 18 Jahren hinzugefügt

  • ID 49f0957f2d464a13f5cf46566333bc2293cf106b
  • Vorgänger 23b02fbf
  • Nachfolger 81891b0c

Reportgenerator: Beim Listenexport als PDF kann das PDF auch direkt ausgedruckt werden.

Unterschiede anzeigen:

SL/ReportGenerator.pm
package SL::ReportGenerator;
use IO::Wrap;
use List::Util qw(max);
use Text::CSV_XS;
use SL::Form;
......
'margin_bottom' => 1.5,
'margin_right' => 1.5,
'number' => 1,
'print' => 0,
'printer_id' => 0,
'copies' => 1,
},
'csv_export' => {
'quote_char' => '"',
......
};
}
sub generate_content {
my $self = shift;
my $format = lc $self->{options}->{output_format};
if (!$self->{columns}) {
$self->{form}->error('Incorrect usage -- no columns specified');
}
if ($format eq 'html') {
return $self->generate_html_content();
} elsif ($format eq 'csv') {
return $self->generate_csv_content();
} elsif ($format eq 'pdf') {
return $self->generate_pdf_content();
} else {
$self->{form}->error('Incorrect usage -- unknown format (supported are HTML, CSV, PDF)');
}
}
sub generate_with_headers {
my $self = shift;
my $format = lc $self->{options}->{output_format};
......
$self->generate_csv_content();
} elsif ($format eq 'pdf') {
print qq|content-type: application/pdf\n|;
print qq|content-disposition: attachment; filename=${filename}.pdf\n\n|;
$self->generate_pdf_content();
} else {
......
END
;
my $printer_command;
if ($opt->{print} && $opt->{printer_id}) {
$form->{printer_id} = $opt->{printer_id};
$form->get_printer_code($myconfig);
$printer_command = $form->{printer_command};
}
my $cfg_file_name = Common::tmpname() . '-html2ps-config';
my $cfg_file = IO::File->new($cfg_file_name, 'w') || $form->error($locale->text('Could not write the html2ps config file.'));
......
my $gs = IO::File->new("${cmdline} |");
if ($gs) {
while (my $line = <$gs>) {
print $line;
my $content;
if (!$printer_command) {
print qq|content-type: application/pdf\n|;
print qq|content-disposition: attachment; filename=${filename}.pdf\n\n|;
while (my $line = <$gs>) {
print $line;
}
} else {
while (my $line = <$gs>) {
$content .= $line;
}
}
$gs->close();
unlink $cfg_file_name, $html_file_name;
if ($printer_command && $content) {
foreach my $i (1 .. max $opt->{copies}, 1) {
my $printer = IO::File->new("| ${printer_command}");
if (!$printer) {
$form->error($locale->text('Could not spawn the printer command.'));
}
$printer->print($content);
$printer->close();
}
$form->{report_generator_printed} = 1;
}
} else {
unlink $cfg_file_name, $html_file_name;
$form->error($locale->text('Could not spawn html2ps or GhostScript.'));

Auch abrufbar als: Unified diff