カスタマイズ/テンプレートファイルの作成
出典: OOoJa
注) StarSuite 8 や starsuite8 などを適宜 OpenOffice.org 2.x や openoffice.org2x と読み替えてください。
目次 |
[編集] 目的と背景
StarSuite 8 Calc のデフォルトの設定では、表が3枚用意されています。しかしながら、表2、表3については多くの場合使っておらず、開いたときに、それらの表の中に情報があるかどうかわざわざ確認する手間がかかります。そこで、Calc の新規作成時の表の枚数を三枚から一枚へ設定変更します。この方法は、さらに標準で追加されるヘッダ(表の名前)やフッタ(ページ番号)を付けないなど設定にも応用できます。
[編集] 手順
Calc を起動し、表2および表3を削除します。 ファイル/名前を付けて保存 ・ファイル名を Calc.ots ・ファイルの種類を OpenDocumentの表計算ドキュメントテンプレート(ots) ・ファイル名に拡張子を付けるにチェックが付いていることを確認 その保存したファイルからプリンター関連の情報を取り除きます。 perl remove-printer-related-entries-from-starsuite-file.pl Calc.ots 例 # perl remove-printer-related-entries-from-starsuite-file.pl Calc.ots Entry 'PrinterSetup: XgH+/ ...(中略)... 0AAA=' has been successfully removed. Entry 'PrinterName: Generic Printer' has been successfully removed. Entry 'AllowPrintJobCancel: true' has been successfully removed. テンプレートファイル Calc.ots を、全ユーザーからアクセスできるファイルサーバー上などへ置きます。
[編集] 備考
同様に、用紙の向きを縦向きから横向きへ変更した Draw.otg や、 余白、デフォルトのフォント名、フォントサイズなどを変更した Writer.ott などにも応用できます。
ネットワークで接続された環境において、プリンタ関連の情報がテンプレートファイル内に残っていると、その作業をされた人のデフォルトのプリンタのプリンタ名や情報が残ってしまいます。すると、他の部署の人がツールバー上の「直接印刷」ボタンで印刷すると、その部署のデフォルトのプリンタではなく、作業された人の部署のプリンタへ印刷物が出力されてしまいます。そのため、プリンタ関連の情報については、削除するように心がけてください。
[編集] remove-printer-related-entries-from-starsuite-file.pl
Perlスクリプトremove-printer-related-entries-from-starsuite-file.plは、Archive::Zipモジュールを使用しています。
#!/usr/local/bin/perl
#
# remove-printer-related-entries-from-starsuite-file.pl
#
# Usage: remove-...pl starsuite_file...
#
# http://search.cpan.org/dist/Archive-Zip/
use Archive::Zip;
@Items = qw (
PrintReversed
PrintEmptyPages
PrintSingleJobs
PrintPaperFromSetup
PrintLeftPages
PrintTables
PrintControls
PrinterSetup
PrintAnnotationMode
PrinterName
PrintFaxName
PrintRightPages
PrintProspect
PrintGraphics
AllowPrintJobCancel
PrinterIndependentLayout
PrintDrawings
PrintBlackFonts
);
sub work {
my $file = shift;
my $zip = Archive::Zip->new();
$zip->read($file) == AZ_OK or die "$!: $file, stopped";
my $contents = $zip->contents("settings.xml");
my $original = $contents;
map {
if ($contents =~ s{<config:config-item config:name="$_"([^>]*?)>([^<>]*?)</config:config-item>}{}) {
print "Entry '$_: $2' has been successfully removed.\n";
}
if ($contents =~ s{<config:config-item config:name="$_"([^>]*?)/>}{}) {
print "Entry '$_' has been successfully removed.\n";
}
} @Items;
if ($original ne $contents) {
$zip->contents("settings.xml", $contents);
$zip->overwrite() == AZ_OK or die "$!: $file, stopped";
}
else {
print "No printer related entry was found. The file is not changed.\n";
}
}
sub main {
foreach my $file (@ARGV) {
work($file);
}
}
main;
__END__
