スキップしてメイン コンテンツに移動

投稿

11月, 2010の投稿を表示しています

iTextSharpでウォーターマーク出力する時の注意

いやー、超ハマりました。 iTextSharpを使って既存のpdfにテキストと画像をウォーターマークとして付与し、出力するという処理を作っていたのですが、一部のpdfで指定した座標に出力できないといった事象が多発していました。 しばらくの間原因がつかめず半ば放置していたのですが、原因判明。 pdfを作成した環境なのか作り方なのかはわからないのですが、用紙サイズが狂っていました。 PdfReaderのインスタンスからGetPageSize(ページ番号)をするとiTextSharp.text.Rectangle型の情報を取得することができます。 取得した情報の中にLeftだのBottomだのといったプロパティがあるのですが、狂っていない(?)pdfだと0になっています。 ここが0以外の数値になっていると、PdfStamperのSetTextMatrixで指定した座標からその分だけずれて出力されてしまいます。 例えばGetPageSizeで取得した情報のLeftが-30、Bottomが50として SetTextMatrix( x:=10, y:=120 ) をいうメソッドを走らせると、x=40、Bottom=70の位置に出力しようとします。 つまり(LeftもしくはBottom * -1)分だけ左あるいは下に動いてしまうわけです。 というわけで対策としては、SetTextMatrixメソッドでの座標指定時に、このずれた部分で補正してやることです。 VB.NETコードで表現すると・・・(何処かにシンタクスエラーがあるかもしれません)

知らないうちにGoogleストリートビューがドイツに対応していた

確かそろそろサービス開始になるんだっけなーと思ってたのですが、調べてみたらもうサービス開始してたんですね。 今のところはベルリン・フランクフルト・ミュンヘン・シュトゥットガルト・ニュルンベルクなどの主要都市と、ドレスデン・ケルン・ライプツィヒなどの観光都市(?)くらいしか見ることができませんが、今後増えていくことでしょう。  ちなみに下の写真はベルリンのRosa-Luxemburg Straßにあるエロい店をストリートビューで眺めたところ。 中に入ったことはないんだけどね!