ジャンル不定の日記です。

郵便書簡(ミニレター)WEB印刷?

先日郵便局で郵便書簡(ミニレター)を買ってきたが、JavaScriptで印刷ソフト作った。
もうちょっと機能追加して近いうちに公開すると思う。
まだ本番やってないので使って送ったことはない。


↑こんな感じ。

一昨日の記事でCSSでレイアウトして印刷する方法に失敗したと書いたが、
Firefox(Linux)の印刷機能だと、用紙設定が反映しないのと、ヘッダとフッタのスペースが除去不能(余白はabout:configで設定できそうかも)。
Chromium(Linux)の印刷機能だと標準印刷だと、カスタムサイズ用紙が設定できず、システム印刷を使うと用紙設定はできるが余白は消せなかった。
Windows 10だとプリンタドライバによりそうだがカスタムサイズ用紙が設定できず。
以前にもCSSでの印刷レイアウトを試みたことがあったのだが、その時はWinXPのIE,Opera、LinuxのMidoriでレイアウトできそうな気配だったが、今はXP用意してないしMidori試すのもめんどいので試してない。

というわけで、どうにもならなそうだったのでPDF出力する方法に変更した。
JavaScriptでのPDF出力はjsPDFを使った。
canvasに描画してからPDF変換だが、jsPDFの注意事項でaddImageする場合pngだと糞遅い。jpegにするとすぐ生成できる。
pngと違ってjpegは背景を透明にできないようで白で塗りつぶす必要があった。

canvasで画像作っちゃえば実寸のPDFに変換するのは簡単なのだが、プリンタがカスタム用紙への実寸印刷に対応してないぽい?
手元の環境だと縦横ともに3mm弱ほど原点方向に印刷されちゃって、いろいろ試したがPDFの方で位置調整しないと無理だった。
PDF化して印刷する場合でもFirefoxだと用紙サイズ設定が反映していないようだったのでEvince経由で印刷した。