PDF BOXで任意の場所にOverlayする

最近、PDFをプログラムからいじいじしてます。
使用言語はKotlinで、ApachのPdfBoxを使ってます。

その中で、PDFとPDF同士を合成したいという要件あったんです。 どう実装しようかと、わーとドキュメント見るとOverlay ってクラスあるじゃん、これで合成できる! と思ってたんですが、よくよく見るとsetOverlayPosition(Overlay.Position overlayPosition) となっていて、 Overlay.Position も定数だぞ??
どうやって位置指定するんだ?となったので、その方法を残しときます。

Overlay Classを継承して、calculateAffineTransformをOverrideしたクラスを作るです。

calculateAffineTransformの実装を見てみると

    protected AffineTransform calculateAffineTransform(PDPage page, PDRectangle overlayMediaBox) {
        AffineTransform at = new AffineTransform();
        PDRectangle pageMediaBox = page.getMediaBox();
        float hShift = (pageMediaBox.getWidth() - overlayMediaBox.getWidth()) / 2.0F;
        float vShift = (pageMediaBox.getHeight() - overlayMediaBox.getHeight()) / 2.0F;
        at.translate((double)hShift, (double)vShift);
        return at;
    }

AffineTransform を生成して、ページの中央に配置するという処理が入っているのがわかるかと思います。 このAffine変換を独自で実装するとPDFを任意の場所に配置できるってことですね。

千葉 金谷に開発合宿に行ってきました!

みながする開発合宿を私もしてみん

というモチベーションで開発合宿をしてきましたー

一泊二日の場所は、千葉の浜金谷、まるも様にお世話になりました。
一泊だけど二日目慌てたくない!でも、しっかり開発もしたいというわがままを叶えられるところを探していたところ、一泊二日で、コワーキングスペースは夕方まで使えるまるも様に行き着きご連絡差し上げました。
当初のプランは埋まっていたのですが、代わりに新しいプランがスタートしたとのことで、そちらのプランを採用させていただきました。

一日目

アクアライン渋滞とのことで電車のみで移動、2時間の道のりの果てに、浜金谷まで到着。

現地のまるも様にご挨拶と、今回の合宿場に案内していただきました! それがこちら、

まるも様の新しい合宿場のvoidoです! 今年の三月にオープンしたばかり、まだ木の香りもする、ピカピカの建物。 もちろん宿泊もでき最大で8名が泊まれます。

内装も綺麗で、一階に水場、二階が寝室となってます。
こちらが一階

備え付けで、プロジェクター、電源タップいっぱい、ホワイトボート、早いWiFiがあり、開発合宿には十分すぎる施設です。

何より嬉しかったのが、 紅茶とコーヒの備え付けがあることです。 開発合宿でカフェイン切れてきついって人でも大丈夫。まさに、至れり尽くせり。 もし切れてしまっても、コンビニが徒歩5分もないところにあるので買い出しも楽です。

一通りvoidoを探索して、ひとまずお昼に。 周りには、お寿司屋さん、海鮮丼や焼き物が食べられる定食屋さん、浜焼き食べ放題のお店など、海産物が有名な金谷ならではの新鮮な魚が贅沢に食べられます。
私は、サワラの塩焼きをチョイス。ふわふわな身のサワラでした。

そして、午後からもくもく開始。今回は、SIでも開発合宿をしたいの会という名目で開発合宿を行いました。 あまり、高いレベルを求めないで、もくもく会風にゆるゆるとやってます。
普段開発しない人が多い会だったため、企画もゆるく、WebAPIを叩いてみように。その代わり、開発とはなど、どういうコードがいいコードなのかとかWebの仕組みとかの話を厚くしてます。

最初は、近くの温泉にいこうとしていたのですが、閉まるのが17時と完全に時間を逃してしまい断念。夕食のお店も18時には閉まるところが多く、お越しの際には入浴や夕食の目処をしっかり立てて行くのが良いかと思います。

この日は、お寿司をいただき、ポプテピの最終回をみて、お酒を飲みながらFlatMapの解説や、良いコードとは!などと議論して、就寝。

二日目

voidoは17時まで滞在可能なので、朝はゆっくり。
浜焼き食べ放題に行こうとしたら、やはり人だかり、11時くらいにとって14時以降だったのでの整理券だけもらって、もくもく再開。

ひとしきり目標を達成したことを確認して、お片付け。 そのまま帰ろうということで、まるも様にご挨拶して、浜焼きへ。

こんな感じで、ホタテ、牡蠣、えびなんかが食べ放題。 海鮮丼用の刺身なんかもあったりして、まさに海づくし。 カレーや、ラーメンもありましたが、些細なことです。

こんなに食べることがあるかと思うほどに食べてきました。

そして、さよなら浜金谷。

開発もできたし、山ほど海鮮も食べたし一泊二日とは思えないほどの充実した期間でした。

どこでもKotlin #2

1回目もいたんですが、非常に良かったので2回目も行ってきました。

m3-engineer.connpass.com

泥アプリはKotlinなのですが、サーバサイドはサクッとNodeで書くことが多くて、SpringもDoma2も触ったことなかったり。   仕事だとJavaサーバはオレオレフレームワークがあって、やっぱり使わない。 でも、サーバサイドでKotlinはいいなぁって思うので、その情報収集に。
いつか、サーバサイドKotlinやろうって説得したい。

  • KotlinとSpring BootとDoma2でAPIサーバー
  • swagger_codegenでKotlinAPIサーバのgem自動生成

やっぱり触ってないので、ほえーってなるのが多いですね。
勉強しないと。。。

黒べこ本の話 + Ktor試してみた

  • 黒べこ本

助走本が非常に良くてKotlinにはすぐ入ってこれた(Swiftっぽいと思ったので、そっちの経験もあるかも)
でも、Kotlinから入るような人は、まだいないにしても今後ありうると思うので、いろんな本が出てくれるといい。
黒べこ本は特にWEBアプリケーションなので、どちらかというと初心者向け。 JavaやってたけどWebはまだっていう人には良い気がする。

  • Ktor(クター)

github.com

KotlinのWebフレームワーク。
非同期ノンブロッキングで機能は少ないっていう話なので、NodeでいうKoaみたいな感じ?
コルーチンをバリバリ使っているらしく、async/await大好きマンな私は歓喜
まだベータということで、これからですね。

あと、Kotlinかわいい。ぺろぺろ。

ABC 2017 参加レポート

今回は、ABCに行ってきました。
最近Android触ってないですが、Google I/Oもあったし情報収集に。

abc.android-group.jp

今回のタイムテーブルみるとAR/VR/MR系の話非常に多いですね。 逆にKotolinとか押し込んでくるかなと思いましたが、そんなことはなかったです。

という訳でみたセッションの中で気になってものの感想をつらつらと

特別招待講演:sakura.ioで実現する世界 ~量産前提のモノゴト作り~

さくらインターネット知ってる人!」
ノノノノノノノノノノノノノノノノノノノノノノ
「よかった!この前のIoTの公演だとポツポツだったんですよ。」
衝撃、分野が違うからなのか?マネージャ層しかいなかったのか?

話の内容は、sakura.ioの仕組みや利用について。
最近のIoTイノシシ罠でも使われているIoTプラットフォームですね。
お値段も8k円/個 20円/月と、とりあえず遊べるような値段設定。
データを貯める、連携するというsakuraさんだからできるんだなぁという印象。
sakuraさんで溜まったデータから、どう価値を出すかが流行りそう。

「アンドロイド・ジャパン」著者が語るコンピューティングの未来

裏話的で、Javaの黎明期のお話は面白かった。
確かに、テーマが携帯の過去・現在・未来なので、テーマにはあってなくはないが、タイトル通りコンピューティングの未来の話が聞きたかった。

SketchがAndroidアプリのUIデザインに向いているワケ/動きを言葉で伝えるなっ! Framerを使ったプロトタイプコミュニケーション

エンジニアもデザインには無頓着ではいられないので情報収集。
参加者もほぼエンジニアで、エンジニア・デザイナー間のコミュニケーション周りに興味がある模様。
内容も、デザイナーさんにこんなツール使ってもらおうって感じ。

モバイルVRでモーションコントローラーを扱う

ハイエンドモデルじゃない限りはモーションコントローラーはあったほうがいいんでしょうね。
後ろを向くとどんどん位置がずれるので、真後ろはゲームとしては向かせないようにしているらしく、

自分でVRが作れるメリット 〜VR作るの簡単だよ!〜

ライブVRコーティングライブVRコーティング!!
Unityのアセットとか使ってでサクッと動くもの作ってた。
確かに、簡単だ。
環境さえあれば。。。
作りたいけど、今Gear VRに行くのか、Daydreamまで待つか。
Viveはさすがに手が出しにくい。。。
PS VRがなんだかんだ安価だし。。。
うーん。

携帯端末の現在・過去・未来- スマホの次にくるモノとは? -

ガジェットを作り続けてきた入鹿山さんのセッション。
携帯の歴史を、追いつつ未来に向けて、VR/MRの問題点を論じた盛りだくさんな話だった。

ABC★春の大LT祭り(もうボチボチ夏だけど…)★
  • 浜松支部活動紹介/香川支部活動紹介 ABCさんは地方の活動も元気ですね。
    色々やってるし、活発なのはいいこと。

  • GPS・QZSSロボットカーコンテスト2017 Androidアプリコンテスト は、GPSだけでどこまで制御できるんですかね?
    結構きついんじゃない?って思ってします。
    秒1のGPSで、外から命令するとなると?

その他

美味しい島原そうめん食べた

懇親会で、マイクロソフトさんからde:code 2017の余り物タンブラーを頂いた。
最大多数の幸福を求めるいい運営。

ちょまどさんのXamarinセクション盛り上がってたみたいだけど、評判だけ聞いて満足した。