前回の続きです。キャンバスに描画した熱型表を印刷するところまで来ましたが、プロデルの印刷する手順では96dpi相当のイメージとして印刷されるようです。そこで、描画したものを一旦画像ファイルに保存し、Microsoft Wordに貼り付けて印刷することにしました。
ワード図形のサンプル
情報が少ないので、ワード図形のマニュアルにあるサンプルをもとにします。
ワードを起動する
ワードへ文章を作成してDとする
Dに「イラスト.jpg」を画像として追加してPとする
Pの大きさは、{300,300}
これを実行すると画像ファイルをワード文書に貼り付けられるのですが、注意すべき点として
- 3行目の画像ファイルはフルパスで指定する。Shapes.AddPicture メソッドの仕様らしく、実行しているプロデルファイルと同一フォルダにあってもエラーとなります。
- 4行目の大きさの指定を省略すると、貼り付けが実行されません。というか、大きさの初期値が{0,0}なのかもしれません。
サンプルに手を加える
熱型表は横向きで1枚ずつ印刷しますので、印刷の向きを横、余白を適宜設定した.docxファイルを作っておき、それに貼り付けていくことにします。作業フォルダは、D:\tempとし、D:\temp\outputフォルダには、output0001.png, output0002.png...という作成済みの画像があるものとします。連続してこれら画像を貼り付けるため、サンプルに手を加えます。
ワードを起動する
ワードで「D:\temp\output.docx」を開いてDとする
10回値にカウントしながら繰り返す
Dに「D:\temp\output\output[値を4桁に整えたもの].png」を画像として追加して対象とする
対象の大きさは、{300,300}
繰り返し終わり
ワードを「[デスクトップ]テスト.docx」に保存する
既存の.docxファイルを開く際もフルパス指定にするようです。これを実行すると、最後のoutput0010.pngだけ貼り付けられた結果となります。画像は「文字列の折り返し」が「前面」で貼り付けられるので選択状態となっています。ここに次の画像を貼り付けるとそれと入れ代わってしまうので、画像貼り付けの「上書き」を繰り返すことになります。
元実体を使う
貼り付けの度にワード選択範囲をうまく設定して、図形のアンカー位置を変えていけば「上書き」を回避できそうですが、そもそも「文字列の折り返し」を「行内」に設定できれば済む話です。プロデルの設定項目や手順にはないので、Shapeオブジェクトのメソッドを使うことにします(https://koukimra.com/archives/2020)。
ワード図形の元実体が貼り付けた画像のShapeオブジェクトとなり、VBAやPowershellのようにアクセスできますが、記法が異なります。Sを画像のShapeオブジェクトとして、ConvertToInlineShapeメソッドで行内に設定するには、
S.ConvertToInlineShape
Sは、出力画像の元実体
S:ConvertToInlineShape()
となります。以下はこれを追加したものです。
ワードを起動する
ワードで「D:\temp\output.docx」を開いてDとする
10回値にカウントしながら繰り返す
Dに「D:\temp\output\output[値を4桁に整えたもの].png」を画像として追加して対象とする
対象の大きさは、{300,300}
対象の元実体:ConvertToInlineShape()
繰り返し終わり
ワードを「[デスクトップ]テスト.docx」に保存する
画像の大きさを適宜調整することで1頁に熱型表1枚でレイアウトできます。