2014-05-21 3 views
1

나는이 모듈로 새로운 줄을 만들고 상당히 누락 된 것 같은 느낌이 든다.OpenOffice :: OODoc로 새 줄 삽입하기

내 펄 코드는 다음과 같습니다

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

새 라인에는 LF + CR이 필요할 것입니다. '$ name = ~ s/
/\ r \ n/g; ' – Cfreak

+0

@Cfreak는 방금 시도했으나 행운이 없습니다. – BluGeni

답변

1

좋아요. 알아 냈습니다. 잘하면 같은 시간 동안 누군가 검색하는 시간을 절약 할 수 있습니다. 어쩌면 일을하지 않는 가장 좋은 방법을

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); 
     ... 

을하지만 일 :

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

그래서 내 마지막 코드는 다음과 같습니다 : I 추가!

0

당신은 시도하고 삽입하고 현재 후 빈 파라 할 수 다음 '텍스트'옵션은,이 메소드를 호출하면 줄 바꿈을 추가하는 것과 비어있는 경우

.

이 시퀀스 (텍스트 문서의)는 4 단락 바로 뒤에 줄 바꿈을 삽입합니다. 4를 현재 위치로 바꾸십시오.

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

방금이 시도하고 위치 $ p 사용 및 아무것도 변경하려면 보였다. – BluGeni