web-dev-qa-db-ja.com

PDFBox-ページの寸法を見つける

PDFBoxを使用してPDFページの幅と高さを(mm単位で)見つけるにはどうすればよいですか?現在、私はこれを使用しています:

System.out.println(page.getMediaBox().getHeight());
System.out.println(page.getMediaBox().getWidth());

しかし、結果は次のとおりです(mmではありません):

842.0
595.22
23
John Smith

PDF=内の測定単位は、従来のグラフィック業界の測定単位である ポイント にあります。アドビは次の定義を使用しています。

1 pt = 1/72 inch

また、1インチは正確に25.4 mmと定義されているため(実際に!)、式を使用してポイントからmmに変換できます。

mm = pt*25.4 / 72

ところで、あなたの値は、A4用紙の寸法210 x 297 mmに(大まかに)変換されます。 (「ゆるい」、2つの理由。最初:Aバツ 寸法は、メートル法で1平方メートルから導出されます。ポイントは(アドビの使用状況に応じて)帝国システムに基づいています。したがって、ポイントとミリメートル間の変換はすべて近似値です。 2番目:A4に指定されたmmの値も丸められます。 Aバツ 相対サイズと絶対サイズは 無理数 に基づきます。)

脚注

オブジェクトストリーム内では、測定単位を別の値にスケーリングできます。上記はトップレベルのベースオブジェクトにのみ当てはまります。

31
usr2564301

DTPポイントの座標は次のように定義されます:1 pt = 1/72インチ= 25.4/72 mm

次のようなメソッドを書くことができます。

public float pt2mm(float pt) {
   return pt * 25.4f / 72;
}
5
nillas

ドキュメントが72とは異なるDPIを使用して作成されている場合、より一般的な式を使用します。

public float pt2mmForWeb72dpi(float pt) {
   return pt2mm(pt,72);
}
public float pt2mmForPrint300dpi(float pt) {
   return pt2mm(pt,300);
}
public float pt2mmForPrint600dpi(float pt) {
   return pt2mm(pt,600);
}
public float pt2mm(float pt, float dpi) {
   return pt * 25.4f / dpi;
}

詳細は https://forums.indigorose.com/forum/Indigo-rose-software/developer-s-den/13282-what-is-the-size-of-a4-in-pxで確認できます

A4は、画像の解像度に依存する画面イメージとしてのドキュメント形式です。たとえば、A4ドキュメントは次のサイズに変更されます。

  • 72 dpi(ウェブ)= 595 X 842ピクセル
  • 300 dpi(印刷)= 2480 X 3508ピクセル(これは私が知っているように「A4」、つまり「210mm X 297mm @ 300 dpi」)
  • 600 dpi(印刷)= 4960 X 7016ピクセル

などなど。 A4のようなFWIWドキュメント形式は、印刷サイズ(ミリメートル)で記述されます。これは、画面イメージ(ピクセル)とはまったく異なるため、ピクセルを使用してA4を説明する人は誰もいません。 :はい

1
raisercostin