D
Dave
In the code snippet below @foutput is an array of 'paragraphs': which are
arrays of 'text items': which are arrays with two elements, the first being
a text string and the second another text string which holds formatting
information (currently 'b' for bold 's' for superscript and '' for normal).
The code works in than it opens a Word document and produces formatted text
therein. The problem is that non-ascii Unicode characters do not transfer
cleanly. I expect that Perl and Word are making different assumptions about
what encoding is in use (Word seems to be recieving utf-8 but interpreting
it as 'code page 1252') but I don't know how change it.
Here is the code snippet (use strict and use warnings are in operation at
the top of the file) :
elsif ($opt{w}) {
use Win32::OLE;
my $word = CreateObject Win32::OLE 'Word.Application' or die $!;
$word->{'Visible'} = 1;
my $document = $word->Documents->Add;
my $selection = $word->Selection;
my $i = 0;
foreach my $para (@foutput) {
$i++; last if $i == 5; # just a few for debugging
foreach (@{$para}) {
if (@{$_}[1] eq "") {
$selection->TypeText(@{$_}[0]);
}
elsif (@{$_}[1] eq "b") {
$selection->Font->{Bold} = 1;
$selection->TypeText(@{$_}[0]);
$selection->Font->{Bold} = 0;
}
elsif (@{$_}[1] eq "s") {
$selection->Font->{Superscript} = 1;
$selection->TypeText(@{$_}[0]);
$selection->Font->{Superscript} = 0;
}
else {
die "Unknown formatting: " . @{$_}[1];
}
}
$selection -> TypeParagraph;
}
arrays of 'text items': which are arrays with two elements, the first being
a text string and the second another text string which holds formatting
information (currently 'b' for bold 's' for superscript and '' for normal).
The code works in than it opens a Word document and produces formatted text
therein. The problem is that non-ascii Unicode characters do not transfer
cleanly. I expect that Perl and Word are making different assumptions about
what encoding is in use (Word seems to be recieving utf-8 but interpreting
it as 'code page 1252') but I don't know how change it.
Here is the code snippet (use strict and use warnings are in operation at
the top of the file) :
elsif ($opt{w}) {
use Win32::OLE;
my $word = CreateObject Win32::OLE 'Word.Application' or die $!;
$word->{'Visible'} = 1;
my $document = $word->Documents->Add;
my $selection = $word->Selection;
my $i = 0;
foreach my $para (@foutput) {
$i++; last if $i == 5; # just a few for debugging
foreach (@{$para}) {
if (@{$_}[1] eq "") {
$selection->TypeText(@{$_}[0]);
}
elsif (@{$_}[1] eq "b") {
$selection->Font->{Bold} = 1;
$selection->TypeText(@{$_}[0]);
$selection->Font->{Bold} = 0;
}
elsif (@{$_}[1] eq "s") {
$selection->Font->{Superscript} = 1;
$selection->TypeText(@{$_}[0]);
$selection->Font->{Superscript} = 0;
}
else {
die "Unknown formatting: " . @{$_}[1];
}
}
$selection -> TypeParagraph;
}