概要
- これは手抜き記事です.
ggplot2
などを使って名刺を作ってみた.結論から言って TeX で作ったほうが楽なんじゃないかな……
先月末から無職になったため, 再就職までの間の名刺が必要になったので作った. プログラムはほとんど以下の記事で紹介されていた方法の流用だが, 多少は変更を加えている. ただし, 以下の記事は Mac 環境のようだが, ここでは Linux で作成しており, Windows や Mac での動作確認はしていない.
主な変更点は, ggimage
パッケージは画像のアスペクト比の調整ができないため, 廃止したということである. 一方で, 貼り付けられる画像は png のみとなり, また1種類だけとなったが, R が分かる人ならば簡単に変更できると思うのでシンプルなままにしておく.
プログラムの解説
基本的には概要で挙げたエントリのパクリじゃなかった流用である. ソースコードの全文は gist にある.
gist3c10f73d5967c6dbd0b3054f2dbb4ad0ggimage
は使わずに, ggplot2::annotation_raster()
関数を使って画像を貼り付けている. そのため画像のアスペクト比が保持され, また imagemagick のインストールが不要になった*1. 名刺画像作成機能をもつ関数を plot_card()
関数として定義した.
引数は以下のようになる. メールアドレス, ウエブサイト, 注意書きはそれぞれいずれかを省略すると自動で位置調整を行う.
given_name
必須. 名family_name
任意. 姓given_name_en
任意. ローマ字名family_name_en
任意. ローマ字姓job_title
職名, あるいは所属企業名もpersonal_title
任意. 称号 (学位とか爵位とか)mail
任意.メールアドレスwebsite
任意. ウェブサイトnote
任意. 注意書き, その他特記事項portrait_path
任意. 顔写真あるいは何らかのロゴマーク画像のパス. pngのみ対応qr_string
任意. QRコード化する文字列. デフォルトではwebsite
の文字列を QR コードにする (website
がNULL
でない場合のみ).sans
任意. ゴシック体フォントserif
任意. セリフフォント
plot_card <- function(given_name, family_name="", given_name_en="", family_name_en="", job_title="無職", personal_title=NULL, mail=NULL, website=NULL, note=NULL, portrait_path=NULL, qr_string=NULL, sans="TakaoExGothic", serif="TakaoExMincho")
sans と serif は Ubuntu 日本語版の標準フォントである Takao になっており, 他の OS で Takao を使用したい場合は変更するか, フォントをインストールする必要がある.
以下のサンプルプログラムを実行すると, 以下のような名刺ができる. Rlogo.png は https://www.r-project.org/logo/ から予めダウンロードしておく. Rstudio のグラフプレビューだと字の大きさが不自然だが, 画像として保存すればおおむね自然な大きさになる.
p <- plot_card(given_name = "おじさん", family_name = "R", given_name_en = "Ojisan", family_name_en = "R", personal_title = "市民", mail = "foo@bar.jp", website = "https://www.google.co.jp", note = "ここに注意書き", portrait_path="Rlogo.png", qr_string = T, sans="TakaoExGothic", serif="TakaoExMincho") # 画像保存. png or pdf ggsave(filename = "sample.png", device = "png", width = 91, height = 55, units = "mm", dpi = 350, plot = p) ggsave("sample.pdf", device = cairo_pdf, width = 91, height = 55, units = "mm", dpi = 350, plot = p)
上記で作成したサンプル名刺画像がこちら
印刷
これを保存して名刺の画像データ入稿を受け付けてくれる業者をさがして印刷してもらえばできると思われる.
なお, 自分は費用をケチりたかったので, A4 用紙に複数枚の名刺を印刷できるように, gridExtra
パッケージで 3x3 枚の名刺画像を貼りあわせた pdf を作成した.
ggsave("samples.pdf", device=cairo_pdf, width = 91 * 3, height = 55 * 3, unit = "mm", dpi = 350, plot = grid.arrange(grobs = lapply(replicate(9, p, F), "+", theme(plot.margin = grid::unit(rep(0, 4), "mm"), axis.ticks.length = grid::unit(rep(0, 4), "mm")) ), ncol=3) )
R だけで画像ファイルを操作するのは大変なので, 上記で作成した pdf を imagemagick で整形した*2.
convert -rotate 90 -density 350 samples.pdf samples2.pdf convert -density 350 -background "#FFFFFF" -extent 2894x4093 -gravity center samples2.pdf samples_a4.pdf
近場で名刺用の厚紙に印刷してくる事業者にキンコーズがあったため, ここに持ち込んで印刷・断裁を行って名刺を作成した. しかし, はっきり言ってこのやり方はおすすめしない. 店舗によるのかもしれないが, キンコーズで貸し出ししてくれた断裁機は定形サイズの紙の断裁しかできなかったため, 印刷された名刺をカッターナイフで切り分ける羽目になった. キンコーズは名刺の印刷もやってくれるため, 工作の苦手な人はおとなしくそちらを利用しよう.