リコー社のPDF directプリント対応の複合機で、PageSize.B4だと 不定形 エラーが出たので調べていたら、
生成したPDFの用紙サイズが日本のB4(JIS B4)の定義と数ミリ違っていました。
原因は ISO B4 と JIS B4 とではサイズが異なる というのが原因でした。
日本で利用するにはJISのBサイズを定義して利用します。
iTextSharpは独自の単位で float型で持っているので、誤差の割合分だけ修正したところ、用紙の自動選択が
正常に機能しました。
ということで、以下が修正後の値です。
float B4_width = 1031.74f;
float B4_height = 728.4f;
float B5_width = 728.4f;
float B5_height = 517.92f;
以下は用紙の縦・横を考慮して、PageSize.B4.Rotate()相当にしたものを用意してみたものです。
case "B4":
case "B4縦":
return new iTextSharp.text.Rectangle(B4_height, B4_width, 90);
case "B4横":
return new iTextSharp.text.Rectangle(B4_width, B4_height, 0);
PDF表示のソフトウェアからの印刷ではエラーは出ないし、微妙に引き延ばされた程度なので気づきにくく、
等倍ならなおさら判明しません。
B4は
「日本で江戸時代に使われていた「美濃判」の寸法がもととなってできた日本独自の規格。こちらは面積が1.5㎡の長方形をB0」リンク
のようにJISが本家だと勝手に思っていました。
なのでISO と JIS では同一だと勝手に思っていました。ちなみに__何故か A4はISOとJISは同一でした・・・__
iTextSharpは外国製なので、B4にしてもISOを標準としてISO B4 の実装は当然です。
整理すると、
iTextSharpは、ISO 216 で画定されている国際標準(ISO-Bシリーズ) ISO B4の大きさは 250mm×353mm
日本は JIS P0138 縦横比は 1:√2 JIS B4の大きさは 257mm×364mm
印刷はリコー MPC4503 で試しました。