projects
/
kivitendo-erp.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
b7bb932
)
Wenn UTF-8 als Datenbankcharset verwendet wird, so muss der ReportGenerator die an...
author
Moritz Bunkus
<m.bunkus@linet-services.de>
Wed, 25 Jun 2008 15:50:24 +0000
(15:50 +0000)
committer
Moritz Bunkus
<m.bunkus@linet-services.de>
Wed, 25 Jun 2008 15:50:24 +0000
(15:50 +0000)
SL/ReportGenerator.pm
patch
|
blob
|
history
diff --git
a/SL/ReportGenerator.pm
b/SL/ReportGenerator.pm
index
2273c2e
..
f5550a6
100644
(file)
--- a/
SL/ReportGenerator.pm
+++ b/
SL/ReportGenerator.pm
@@
-1,5
+1,6
@@
package SL::ReportGenerator;
package SL::ReportGenerator;
+use Encode;
use IO::Wrap;
use List::Util qw(max);
use Text::CSV_XS;
use IO::Wrap;
use List::Util qw(max);
use Text::CSV_XS;
@@
-406,6
+407,15
@@
sub _cm2bp {
return $_[0] * 72 / 2.54;
}
return $_[0] * 72 / 2.54;
}
+sub _decode_text {
+ my $self = shift;
+ my $text = shift;
+
+ $text = decode('UTF-8', $text) if ($self->{text_is_utf8});
+
+ return $text;
+}
+
sub generate_pdf_content {
eval {
require PDF::API2;
sub generate_pdf_content {
eval {
require PDF::API2;
@@
-427,6
+437,9
@@
sub generate_pdf_content {
my $num_columns = scalar @visible_columns;
my $num_header_rows = 1;
my $num_columns = scalar @visible_columns;
my $num_header_rows = 1;
+ my $font_encoding = $main::dbcharset || 'ISO-8859-15';
+ $self->{text_is_utf8} = $font_encoding =~ m/^utf-?8$/i;
+
foreach $name (@visible_columns) {
push @column_props, { 'justify' => $self->{columns}->{$name}->{align} eq 'right' ? 'right' : 'left' };
}
foreach $name (@visible_columns) {
push @column_props, { 'justify' => $self->{columns}->{$name}->{align} eq 'right' ? 'right' : 'left' };
}
@@
-440,7
+453,7
@@
sub generate_pdf_content {
foreach $name (@visible_columns) {
$column = $self->{columns}->{$name};
foreach $name (@visible_columns) {
$column = $self->{columns}->{$name};
- push @{ $data_row }, $
column->{text}
;
+ push @{ $data_row }, $
self->_decode_text($column->{text})
;
push @{ $cell_props_row }, {};
}
push @{ $cell_props_row }, {};
}
@@
-454,7
+467,7
@@
sub generate_pdf_content {
push @cell_props, $cell_props_row;
foreach my $custom_header_col (@{ $custom_header_row }) {
push @cell_props, $cell_props_row;
foreach my $custom_header_col (@{ $custom_header_row }) {
- push @{ $data_row }, $
custom_header_col->{text}
;
+ push @{ $data_row }, $
self->_decode_text($custom_header_col->{text})
;
my $num_output = ($custom_header_col->{colspan} * 1 > 1) ? $custom_header_col->{colspan} : 1;
if ($num_output > 1) {
my $num_output = ($custom_header_col->{colspan} * 1 > 1) ? $custom_header_col->{colspan} : 1;
if ($num_output > 1) {
@@
-472,7
+485,7
@@
sub generate_pdf_content {
foreach my $row_set (@{ $self->{data} }) {
if ('HASH' eq ref $row_set) {
if ($row_set->{type} eq 'colspan_data') {
foreach my $row_set (@{ $self->{data} }) {
if ('HASH' eq ref $row_set) {
if ($row_set->{type} eq 'colspan_data') {
- push @data, [ $
row_set->{data}
];
+ push @data, [ $
self->_decode_text($row_set->{data})
];
$cell_props_row = [];
push @cell_props, $cell_props_row;
$cell_props_row = [];
push @cell_props, $cell_props_row;
@@
-496,7
+509,7
@@
sub generate_pdf_content {
my $col_idx = 0;
foreach my $col_name (@visible_columns) {
my $col = $row->{$col_name};
my $col_idx = 0;
foreach my $col_name (@visible_columns) {
my $col = $row->{$col_name};
- push @{ $data_row },
join("\n", @{ $col->{data} }
);
+ push @{ $data_row },
$self->_decode_text(join("\n", @{ $col->{data} })
);
$column_props[$col_idx]->{justify} = 'right' if ($col->{align} eq 'right');
$column_props[$col_idx]->{justify} = 'right' if ($col->{align} eq 'right');
@@
-554,7
+567,7
@@
sub generate_pdf_content {
$pdf->mediabox($paper_width, $paper_height);
my $font = $pdf->corefont(defined $pdfopts->{font_name} && $supported_fonts{lc $pdfopts->{font_name}} ? ucfirst $pdfopts->{font_name} : 'Verdana',
$pdf->mediabox($paper_width, $paper_height);
my $font = $pdf->corefont(defined $pdfopts->{font_name} && $supported_fonts{lc $pdfopts->{font_name}} ? ucfirst $pdfopts->{font_name} : 'Verdana',
- '-encoding' => $
main::dbcharset || 'ISO-8859-15'
);
+ '-encoding' => $
font_encoding
);
my $font_size = $pdfopts->{font_size} || 7;
my $title_font_size = $font_size + 1;
my $padding = 1;
my $font_size = $pdfopts->{font_size} || 7;
my $title_font_size = $font_size + 1;
my $padding = 1;
@@
-567,7
+580,7
@@
sub generate_pdf_content {
my $top_text_height = 0;
if ($self->{options}->{top_info_text}) {
my $top_text_height = 0;
if ($self->{options}->{top_info_text}) {
- my $top_text = $self->
{options}->{top_info_text}
;
+ my $top_text = $self->
_decode_text($self->{options}->{top_info_text})
;
$top_text =~ s/\r//g;
$top_text =~ s/\n+$//;
$top_text =~ s/\r//g;
$top_text =~ s/\n+$//;
@@
-614,7
+627,7
@@
sub generate_pdf_content {
my $curpage = $pdf->openpage($page_num);
if ($pdfopts->{number}) {
my $curpage = $pdf->openpage($page_num);
if ($pdfopts->{number}) {
- my $label = $
main::locale->text("Page #1/#2", $page_num, $pdf->pages(
));
+ my $label = $
self->_decode_text($main::locale->text("Page #1/#2", $page_num, $pdf->pages()
));
my $text_obj = $curpage->text();
$text_obj->font($font, $font_size);
my $text_obj = $curpage->text();
$text_obj->font($font, $font_size);
@@
-623,12
+636,13
@@
sub generate_pdf_content {
}
if ($opts->{title}) {
}
if ($opts->{title}) {
+ my $title = $self->_decode_text($opts->{title});
my $text_obj = $curpage->text();
$text_obj->font($font, $title_font_size);
my $text_obj = $curpage->text();
$text_obj->font($font, $title_font_size);
- $text_obj->translate(($paper_width - $margin_left - $margin_right) / 2 + $margin_left - $text_obj->advancewidth($
opts->{title}
) / 2,
+ $text_obj->translate(($paper_width - $margin_left - $margin_right) / 2 + $margin_left - $text_obj->advancewidth($
title
) / 2,
$paper_height - $margin_top);
$paper_height - $margin_top);
- $text_obj->text($
opts->{title}
, '-underline' => 1);
+ $text_obj->text($
title
, '-underline' => 1);
}
}
}
}