パスワードを忘れた? アカウント作成
10305721 journal
日記

Torisugariの日記: Unixでのハガキ宛名印刷について (2) 1

日記 by Torisugari

先日からやっていた、ハガキの宛名印刷ソフトのprinthaは、とりあえず、当初予定していた機能を全て作り終えました。最初の投稿からちょうど一か月です。

以下、次回のための反省点など。

1.
名前はprintfをを意識して、printとはがきのhaをくっつけただけなのですが、どうも、"Printha"は人名で存在しているようですね(おそらくインド人)。Googleで検索した時に画像検索に勝てそうにないので、この名前は失敗だったと思います。

2.
GUIもいろいろ試してみたのですが、GnomeとKDEに偏らない選択肢でしっくりくるものはなかなかないものですね。最初はwxで書いていたのですが、ボックスレイアウトを1行ずつコーディングする煩雑さに苛立って断念しました。生産性だけを考えると、やはりXULRunnerが一番楽なようです。私は以前Gladeも使ったことがあるので、ああいうのも嫌いではないですが、モロにGTK依存なので最初から選択肢にいれませんでした。まあ、Unix版のXULRunnerにしても内部的にはほぼGTKですけれど。

XULは確かに楽だったので後悔はないですが、今の流行を考えると、全画面でHTMLとか使う系統の方が汎用性があった気がします。

3.
実は、私はまだ年賀状を1枚も印刷していないんですよね。PDFの見た目に異常がないのだから、印刷も問題ないだろう、と頭では分かっているのですが、もし、私より先ににプリンタに突っ込んだ人が印刷に失敗したら、いくらライセンスに"AS IS"を謳っているとはいえ、なんというか、こう、倫理的にマズいんじゃないか、という気がひしひしとします。

4.
このアプリケーションで面倒だった部分の1つが年賀状画像のスキャンです。

実のところ、宛先の郵便番号は半分くらいがJIS規格で、残りも郵便局が細かくしていしている数字があるので、曖昧さがほとんどないのですが、一方で、差出人の郵便番号には言及がないので、画像から、「このくらいだろう」というのを私が適当に選んでいます。

ただ、この画像がそもそも信用してもいいものか、イマイチ自信がありません。スキャンで最も重要なのは紙が斜めにならないことなので、スキャナのフチにぴったりとつけてからスキャンしなければなりません。しかし、そうすると、私の家のスキャナでは端が少しだけ見切れます。用紙に書かれていることに意味があるのなら、少々切れても問題ないでしょうが、今、重要なのは紙の端からの相対位置なので、0.1mmでも切れてしまったら困るのです。

苦肉の策として、私は4枚のはがきを並べて「隣の3枚は見切れてるけど、最後のはがきは大丈夫」作戦をとったのですが、スキャナの蓋を閉める段階でどうしても動いて斜めになってしまいます。フチにしっかり当たっている他の3枚はともかく、スキャナの中央に位置するハガキが動かないはずはないのです。仕方がないので、4枚のはがきをセロハンテープでとめてからスキャンしました。

しかし、スキャン後の画像を拡大してい見ると、テープでとめただけのはがきは、やはり、微妙に斜めになっています。最終的に、私は4枚目を使うのを諦めて、残りの三枚のうち、フチになっっていない部分を、GIMPでフランケンシュタインのように繋ぎ合わせて作りました。今、この文章を書きながら「アイコラ」という言葉がふと頭をよぎりましたが、まさにそういう感じです。

ここまで苦労した力作ではありますが自信作とは呼べない、そんな感じです。今考えてみると、どうせ貼りあわせるなら、同じはがきをぐるぐる回して4隅を1回ずつスキャンすれば、もっと簡単に正確な画像を作ることができたのに、と思います。

私はもう二度とはがきのスキャンをすることはないでしょうが、みなさんはそうともかぎりませんから、必要に迫られたときは、ぜひ、なにかの参考にしてください。

--
https://build.opensuse.org/package/show/home:belphegor_belbel/printha
でOpenSUSE用のパッケージを作ってくださっています。自分でビルドしない方も是非どうぞ。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • 試して見ました。Ubuntu 12.04LTS。

    gcc のバージョンが古く(4.6.3)、-std=c++11 オプションがサポートされていない様です。

    試しに、-std=gcc++0x でやってみたら、次のwarning が出ただけで、ビルドは完了しました。

    printha/src/main.cpp:214:44: 警告: warn_unused_result 属性付きで宣言されている ‘char* realpath(const char*, char*)’ の戻り値を無視しています [-Wunused-result]

    簡単ですが、報告します。

typodupeerror

皆さんもソースを読むときに、行と行の間を読むような気持ちで見てほしい -- あるハッカー

読み込み中...