#!/usr/bin/perl #----------------------------------------------------------------------------- # OpenOffice::OODoc test 2010-01-05 #----------------------------------------------------------------------------- =head1 NAME oodoc_test - OpenOffice::OODoc test document generation =head1 DESCRIPTION This utility checks the current OpenOffice::OODoc installation and generates a test document from scratch. The generated document can then be found in the current directory, and its name is "odftest.odt". =cut use strict; use OpenOffice::OODoc; #----------------------------------------------------------------------------- sub display_date { return localtime(odfTimelocal(shift)); } #----------------------------------------------------------------------------- my $version = $OpenOffice::OODoc::VERSION; my $pkgdate = display_date $OpenOffice::OODoc::BUILD_DATE; my $instpath = $OpenOffice::OODoc::INSTALLATION_PATH; print "OpenOffice::OODoc installation test\n Version\t\t$version\n" . " Build date\t\t$pkgdate\n" . " Installation path\t$instpath\n"; my $generator = "OpenOffice::OODoc " . $OpenOffice::OODoc::VERSION . " installation test"; my $testfile = $OpenOffice::OODoc::File::DEFAULT_OFFICE_FORMAT == 2 ? "odftest.odt" : "ootest.sxw"; my $class = "text"; my $image_file = "$instpath/data/image.png"; my $image_size = "60mm, 82mm"; my $test_date = odfLocaltime(); print "Generating $testfile file\n"; # Creating an empty new ODF file with the default template # unlink $testfile; my $archive = odfContainer($testfile, create => 'text'); unless ($archive) { die "# Unable to create the test file\n"; } #----------------------------------------------------------------------------- my $notice = "This document has been generated by the OpenOffice::OODoc " . "installation test. If you can read this paragraph in blue letters with " . "a yellow background, if you can see a centered image at the top of the " . "page, and if the informations below make sense, " . "your installation is probably OK."; my $title = "OpenOffice::OODoc test document"; my $description = "Generated by $generator"; # Opening the content using OpenOffice::OODoc::Document my $doc = odfConnector ( container => $archive, part => 'content', readable_XML => 'true' ) or die "# Unable to find a regular document content\n"; my $styles = odfConnector ( container => $archive, part => 'styles', readable_XML => 'true' ) or die "# Unable to get the styles\n"; # Creating a graphic style $styles->createImageStyle ( 'Centered Image', properties => { 'horizontal-pos' => 'center', 'vertical-pos' => 'from-top', 'wrap' => 'none', 'fo:margin-bottom' => '1cm' } ); # Inserting an image in the document $doc->createImageElement ( 'Logo', style => 'Centered Image', page => 1, size => $image_size, import => $image_file ); # Appending a page footer $styles->createStyle ( 'Centered Paragraph', family => 'paragraph', parent => 'Standard', properties => { 'fo:text-align' => 'center' } ); $styles->styleProperties ( 'Centered Paragraph', area => 'text', 'fo:font-size' => '60%' ); $styles->masterPageFooter ( 'Standard', $styles->createParagraph ( "Created by OpenOffice::OODoc\n" . localtime(), 'Centered Paragraph' ) ); # Appending a level 1 heading $doc->appendHeading ( text => "Congratulations !", level => "1", style => "Heading_20_1" ); # Creating a coloured paragraph style (blue foreground, yellow background) $styles->createStyle ( "Colour", family => 'paragraph', parent => 'Standard', properties => { -area => 'paragraph', 'fo:color' => odfColor(0,0,128), 'fo:background-color' => odfColor("yellow"), 'fo:text-align' => 'justify' } ); if ($doc->isOpenDocument) { $styles->styleProperties ("Colour", -area => 'text', 'fo:color' => '#000080'); } # Appending another paragraph using the new style my $pg = $doc->appendParagraph(text => $notice, style => "Colour" ); # Appending another level 1 heading $doc->appendHeading ( text => "Your environment", level => 1, style => "Heading_20_1" ); # Appending a table showing some environment details my $table = $doc->appendTable("Environment", 6, 2); $doc->cellValue($table, "A1", "Platform"); $doc->cellValue($table, "B1", $^O); $doc->cellValue($table, "A2", "Perl version"); $doc->cellValue($table, "B2", $]); $doc->cellValue($table, "A3", "Archive::Zip version"); $doc->cellValue($table, "B3", $Archive::Zip::VERSION); $doc->cellValue($table, "A4", "XML::Twig version"); $doc->cellValue($table, "B4", $XML::Twig::VERSION); $doc->cellValue($table, "A5", "OpenOffice::OODoc version"); $doc->cellValue($table, "B5", $OpenOffice::OODoc::VERSION); $doc->cellValue($table, "A6", "OpenOffice::OODoc build"); $doc->cellValueType($table, "B6", 'date'); $doc->cellValue($table, "B6", $OpenOffice::OODoc::BUILD_DATE); # Appending another level 1 heading $doc->appendHeading ( text => "Your installation choices", level => 1, style => "Heading_20_1" ); # Appending a table with the installation parameters my $office_format = $OpenOffice::OODoc::File::DEFAULT_OFFICE_FORMAT == 2 ? "OASIS Open Document" : "OpenOffice.org 1.0"; my $color_map = $OpenOffice::OODoc::Styles::COLORMAP || ""; $table = $doc->appendTable("Choices", 4, 2); $doc->cellValue($table, "A1", "Local character set"); $doc->cellValue($table, "B1", $OpenOffice::OODoc::XPath::LOCAL_CHARSET); $doc->cellValue($table, "A2", "Working directory"); $doc->cellValue($table, "B2", $OpenOffice::OODoc::File::WORKING_DIRECTORY); $doc->cellValue($table, "A3", "RGB color map"); $doc->cellValue($table, "B3", $color_map); $doc->cellValue($table, "A4", "Default office document format"); $doc->cellValue($table, "B4", $office_format); # Opening the metadata of the document my $meta = odfMeta(container => $archive, readable_XML => 'on') or die "# Unable to find regular metadata\n"; # Writing some metadata elements $meta->title($title); $meta->creator($ENV{'USER'}); $meta->initial_creator($ENV{'USER'}); $meta->description($description); $meta->generator($generator); $meta->creation_date($test_date); $meta->date($test_date); $meta->removeUserProperties(); $meta->setUserProperty("Application", type => 'string', value => "oodoc_test"); $meta->setUserProperty("Test date", type => 'date', value => $test_date); # Saving the $testfile file print "Saving $testfile file\n"; $archive->save; $doc->dispose; $styles->dispose; $meta->dispose; exit 0;