LoginSignup
1
0

More than 3 years have passed since last update.

印刷日を打刻するプリントプラグイン

Posted at

印刷するときに,ヘッダーに日付を付けたい時があります。
プリンタのドライバにそういう機能があれば良いのですが,無い場合にめんどくさい。
そこで,Automatorを使って「プリントプラグイン」を作ってみましょう。プリントプラグインなら,OSX標準の印刷機能から呼び出すことができます。

考え方

UNIXのdateコマンドで生成した日付文字列を,「テキストからバナーイメージを作成」で画像ファイルにして,「PDF書類にウォーターマークを描画」する。
完成イメージはこんな感じ↓
スクリーンショット 2019-06-13 20.07.00.png

大まかな流れ(Automatorアクション)

  1. "プリントプラグイン"は、プリントシステムからPDFファイルを受け取ります
  2. 変数の値を設定
  3. テキストの入力を求める ※日付形式の指定
  4. シェルスクリプトを実行 ※3.で指定された日付形式でdateコマンド
  5. テキストからバナーイメージを作成
  6. 変数の値を取得 ※2.で設定した変数を呼び出す。
  7. PDF書類にウォーターマークを描画
  8. Finder項目を開く

以下,解説

1.プリントプラグインの作成

Automatorで「新規」→書類の種類を「プリントプラグイン」。

2.変数の値を設定

プリントプラグインが受け取ったPDFを,適当な変数に格納しておきます。
私の場合,デフォルト値である「ストレージ」を変数名に使いました。

3,4. 日付形式の入力を求め,dateコマンドで文字列を吐き出す。

3.テキストの入力を求める。

スクリーンショット 2019-06-13 20.49.36.png
プリントプラグイン使用時に日付形式を指定できるようにします。
Automatorアクション「テキストの入力を求める」を設置し,オプション:☑️このアクションの入力を無視にチェックを入れておきます。(そうしないと,2.の変数に格納したPDFを受け取ってしまう。)
デフォルトの回答には自分が一番よく使いそうなフォーマットを,UNIX dateコマンドのフォーマット書式で入れておきましょう。
私の場合,yyyy-mm-dd形式が好きなので,%Y-%m-%d印刷版としています。

4.シェルスクリプトを実行

「入力の引渡し方法:引数として」と設定して,こんな感じ。

Automatorアクション「シェルスクリプトを実行」
date "+$@"

余談:JavaScriptで日付形式決め打ちしてたころの実装

当初は日付形式決め打ちにして,Automatorアクション「JavaScriptを実行」で実装していました。が,日付形式を指定できると良さそうで,だけどJavaScriptは標準ライブラリではDateFormatter的なものが提供されていないので,UNIXコマンドを使うことにしたのです。
旧コードではこんな感じ。

Automatorアクション「JavaScriptを実行」
function run(input, parameters) {
    // Your script goes here
    return ((new Date()).toLocaleDateString("ja-JP",{year:"numeric",month:"2-digit",day:"2-digit"}).split("/").join("-")) + "印刷版";
}

5.テキストからバナーイメージを作成

ダミーファイルを用意しておいて,「名前」と「場所」をダミーファイルと同一に設定し,☑️既存のファイルを置き換えるにチェックしておきます。
書体やカラーやサイズはお好みで。私はHiraMaruPro-W4, Black, 10.5ptです。
(本当は,生成した画像を変数に入れてウォーターマークに使えればダミーファイルは不要なんでしょうけども,「PDFにウォーターマークを描画」アクションがファイル指定を要求するので…。)

6.変数の値を取得

2.で記憶しておいたPDFを召喚して,次のアクションに渡します。

7.PDF書類にウォーターマークを描画

5.で使ったダミーファイルをウォーターマークに指定し,適宜のオフセット,サイズ調整を指定します。
私の場合,オフセット={x:460, y:810, サイズ調整:0.5} でちょうど良かった感じ。

8.Finder項目を開く

7.で日付画像を描画したPDFをプレビュー.appで開きます。
プリントプラグインで出力したPDFはどこにあるか分からないし,印刷プレビューもしたいので,プレビュー.appで開くことにしておけばいろいろ捗るのです。

で,これを「印刷日打刻.workflow」(プリントプラグイン)とでもして保存すれば,標準の印刷画面の左下(「PDF」ドロップダウン)から使えます。便利!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0