【Calc】 *.ods の分析:印刷範囲を設定する

前回の記事で、Calc のファイル形式 *.ods を分解するとXMLになると書いた。今日はこのXMLの形式について、構造を少し分析してみた。(ググってもなかなかいい文献が見つからなくて・・・)

今日は印刷範囲の設定方法について調べてみた。印刷範囲は、表を印刷したときのページ割りの設定。(ページ設定、というのかな?)

ページ範囲の指定

設定は、表(=シート)を表現する <table:table>タグ に、table:print-ranges 属性を付加して、セル範囲で指示するようだ。

まず、下記は印刷設定がない場合。table:print="false" が付いている。

<table:table table:name="シート1" table:style-name="ta1"
 table:print="false"
>
~~~
</table:table>

下記は印刷設定を施した場合。table:print="false" が消えて、table:print-ranges が付加された。

<table:table table:name="シート1" table:style-name="ta1"
 table:print-ranges="シート1.A1:シート1.G43"
>
~~~
</table:table>

"シート1.A1:シート1.G43" という部分が、ページ設定の範囲を指示している。

おそらく、${シート名}.${開始セル}:${シート名}.${終了セル} という書式になっている。

この設定を、スペース区切りで複数指定することで、複数ページを表現できるようだ。

table:print-ranges="シート1.A1:シート1.G25 シート1.A27:シート1.G83"

table:print-rangesで指定した範囲は、連続しないで飛び飛びだったり、上下左右の辺が不ぞろいだったり、重なっていたり、自由なレイアウトで範囲を指示できる。

ページ範囲内での自動改行設定

table:print-ranges の範囲が、用紙の形やサイズに合わなかったりしたときに、範囲を分割して別ページになることがあるようだ。この途中改ページの設定を追加した *.ods ファイルをみても、table:print-ranges の範囲指定に変化はなかった。

で、他に変化した箇所はないかと探してみたら、あった。

テーブルの行を表す <table:table-row>タグに、table:style-name 属性がついている。こいつが、"ro3" と指定されているセルの手前で自動改ページされているようだ。

<table:table-row table:style-name="ro3">
    <table:table-cell table:number-columns-repeated="2" />
    <table:table-cell office:value-type="string">
        <text:p>いいいい</text:p>
    </table:table-cell>
    <table:table-cell table:number-columns-repeated="4" />
</table:table-row>

では、"ro3" とはいったい何なんだろう?

と、探してみたら、同じく content.xml の上の方に答えらしき記述を発見した。

<office:automatic-styles>
    <!-- ~中略~ -->
    <style:style style:name="ro3" style:family="table-row">
        <style:table-row-properties
          style:row-height="0.453cm"
          fo:break-before="page"
          style:use-optimal-row-height="true"
        />
    </style:style>
    <!-- ~中略~ -->
</office:automatic-styles>

"ro3"について設定しているっぽいセクション。fo:break-before="page" が指定されていると、手前で改ページするのだろう。他の <style:style>タグでは、この値は "auto" と指定されている。


とりいそぎ、こんなところで、ページ設定については結構いろいろできそうだ。
styles.xml に、印刷時のヘッダーやフッターの設定っぽい記述も見られるが、これについてはまた今度分析してみることにしようと思う。


プロフィール

コヤナギ トモヤ

ウェブ系エンジニアしてます。ウェブデザイナー、ウェブディレクターとしてウェブ制作の仕事に携わり、今はエンジニア職に流れ着きました。誰かのお仕事をちょっとだけ効率化するような支援ツールの開発が好き。オープンソースとMITライセンス大好き。人生後半は自由と民主主義のコントリビューターとして過ごす予定。

ウェブ制作支援ツール Pickles 2 をオープンソースで開発しています。

PHP/JavaScript/NodeJS/nwjs/Laravel/Pickles2/オープンソース/心理学/倫理/自由と民主主義

RSSフィード

ページの先頭へ戻る