2009-07-26 8 views
3

У меня есть простая задача добавить абзац, который содержит в нем некоторый отформатированный текст. Я не могу понять, как стилизовать текст.OpenOffice :: OODoc стилизовать текст в абзаце

Пример вывода: John Smith 200 Main Streetодного

my $doc = odfDocument(file=> 'outputfile.odt',create=> 'text'); 
$doc->appendParagraph(text => "John Smith 200 Main Street single", style => "optionalParagraphStyle"); 
$doc->save; 

Я читал документацию на CPAN http://search.cpan.org/~jmgdoc/OpenOffice-OODoc/ Я вижу, что я могу использовать TextStyle (элемент [стиль]) изменить стиль существующего элемента. Должен ли я сначала добавить текст, чтобы его стиль?

ответ

3

См. extendText() и setSpan() в документации.

Вот пример, который делает то, что вы хотите:

use OpenOffice::OODoc; 
my $doc = odfDocument(file=> 'outputfile.odt',create=> 'text'); 
$doc->createStyle(
    "strong", 
    family  => "text", 
    properties => { "fo:font-weight" => "bold" } 
    ); 
$doc->createStyle(
    "em", 
    family  => "text", 
    properties => { "fo:font-style" => "italic" } 
    ); 

my $p = $doc->appendParagraph(text => "", style => "optionalParagraphStyle"); 
$doc->extendText($p, "John Smith"); 
$doc->extendText($p, " 200 Main Street", "strong"); 
$doc->extendText($p, " single", "em"); 

my $p = $doc->appendParagraph(text => "John Smith 200 Main Street single", style => "optionalParagraphStyle"); 
$doc->setSpan($p, "200 Main Street", "strong"); 
$doc->setSpan($p, "single", "em"); 

$doc->save; 
+0

Это имеет смысл, когда я вижу, что так написано. Большое спасибо. – ojreadmore

+0

Знаете ли вы ресурс, в котором перечислены все доступные свойства, такие как fo: font-weight и fo: font-style? – ojreadmore

+1

Ознакомьтесь со спецификацией: http://docs.oasis-open.org/office/v1.1/OS/OpenDocument-v1.1-html/OpenDocument-v1.1.html – Inshallah