使用OpenOffice :: OODoc插入新行

时间:2014-05-21 18:24:03

标签: perl

我在使用此模块创建新行时遇到了相当大的问题,感觉我只是错过了一些东西。

我的perl代码如下所示:

use OpenOffice::OODoc;

my $name = "foo <br> bar";
   $name=~s/<br>/\n/g;

my    $outdir = "template.odt";

    my $doc = ooDocument(file => $outdir);

    my @pars = $doc->getParagraphList();
    for my $p (@pars)
    {
        $doc->substituteText($p,'{TODAY}',$date);
        $doc->substituteText($p,'{NAME}',$name);
        ...

问题是,当我在单词或开放办公室打开它时,我没有换行符。虽然如果它在文本编辑中打开它我有我的新行..任何想法如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

好的,我想通了,希望这可以节省一些时间来搜索相同的东西。我补充说:

use Encode qw(encode);
ooLocalEncoding('utf8');
my $linebreak = encode('utf-8', "\x{2028}");
$doc->substituteText($p,'<br>', $linebreak);

所以我的最终代码如下:

use OpenOffice::OODoc;
use Encode qw(encode);
ooLocalEncoding('utf8');
my $linebreak = encode('utf-8', "\x{2028}");
my    $outdir = "template.odt";

my $name = "foo <br> bar";

my    $outdir = "template.odt";

    my $doc = ooDocument(file => $outdir);

    my @pars = $doc->getParagraphList();
    for my $p (@pars)
    {
        $doc->substituteText($p,'{TODAY}',$date);
        $doc->substituteText($p,'{NAME}',$name);
        $doc->substituteText($p,'<br>', $linebreak);
        ...

也许不是最好的做事方式,但它有效!

答案 1 :(得分:0)

你可以尝试在当前的一个之后插入并清空para:

  

如果'text'选项为空,则调用此方法是等效的   添加换行符。

此序列(在文本文档中)在第4段后立即插入换行符。将4替换为当前位置。

        $doc->insertElement
            (
            '//text:p', 4, 'text:p',
            position        => 'after',
            text            => '',
            );