我在使用此模块创建新行时遇到了相当大的问题,感觉我只是错过了一些东西。
我的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);
...
问题是,当我在单词或开放办公室打开它时,我没有换行符。虽然如果它在文本编辑中打开它我有我的新行..任何想法如何解决这个问题?
答案 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 => '',
);