iTextSharpのB4はISO B4。日本はJIS B4。プリンタが認識しない!

ということで、以下が修正後の値です。

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);
case "B5":
case "B5縦":
return new iTextSharp.text.Rectangle(B5_height, B5_width, 90);
case "B5横":
return new iTextSharp.text.Rectangle(B5_width, B5_height, 0);

リコー社のPDF directプリント対応の複合機で、PageSize.B4だと 不定形 エラーが出たので調べていたら、
生成したPDFの用紙サイズが日本のB4(JIS B4)の定義と数ミリ違っていました。
iTextSharpは独自の単位で float型で持っているので、誤差の割合分だけ修正したところ、用紙の自動選択が
正常に機能しました。

PDF表示のソフトウェアからの印刷ではエラーは出ないし、微妙に引き延ばされた程度なので気づきにくく、
等倍ならなおさら判明しません。

外国のものなので、ISOが標準なのでISO B4などで実装されているのは当然ですが、A4は同一だったので
この微妙な違いになかなか気づきませんでした。

iTextSharpは、ISO 216 で画定されている国際標準(ISO-Bシリーズ) ISO B4の大きさは 250mm×353mm
日本は JIS P0138 縦横比は 1:√2 JIS B4の大きさは 257mm×364mm
リコー MPC4503 で試しました。
です。