web-dev-qa-db-fra.com

PDFBox - trouver les dimensions de la page

Comment puis-je trouver (en mm) la largeur et la hauteur d'une page pdf à l'aide de PDFBox? Actuellement, j'utilise ceci:

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

mais le résultat est (pas en mm):

842.0
595.22
23
John Smith

Les unités de mesure à l'intérieur d'un PDF sont en points , une unité de mesure de l'industrie graphique traditionnelle. Adobe utilise la définition suivante:

1 pt = 1/72 inch

et comme un pouce est défini comme étant exactement 25,4 mm (vraiment!), vous pouvez convertir des points en mm en utilisant la formule

mm = pt*25.4 / 72

Soit dit en passant, vos valeurs se traduisent (vaguement) au format de papier A4 210 x 297 mm. ("Librement", pour 2 raisons. Premièrement: Ax les dimensions sont dérivées de 1 mètre carré, dans le système métrique. Les points sont basés (selon l'usage d'Adobe) sur le système impérial; par conséquent, toutes les conversions entre points et millimètres sont des approximations. Deuxièmement: la valeur donnée en mm pour A4 est également arrondie. UNEx les tailles relatives et absolues sont basées sur n nombre irrationnel .)

Note de bas de page

À l'intérieur d'un flux d'objets, les unités de mesure peuvent être mises à l'échelle pour autre chose. Ce qui précède n'est vrai que pour les objets de base de niveau supérieur.

31
usr2564301

Les coordonnées des points DTP sont définies comme suit: 1 pt = 1/72 pouce = 25,4/72 mm

Vous pouvez écrire une méthode comme celle-ci:

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

Si le document est créé à l'aide d'un DPI différent de 72, utilisez la formule plus générale:

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;
}

Vous pouvez trouver plus d'informations sur https://forums.indigorose.com/forum/Indigo-rose-software/developer-s-den/13282-what-is-the-size-of-a4-in-px

A4 est un format de document, comme une image d'écran qui dépendra de la résolution de l'image, par exemple un document A4 redimensionné à:

  • 72 dpi (Web) = 595 X 842 pixels
  • 300 dpi (impression) = 2480 X 3508 pixels (c'est "A4" tel que je le connais, c'est-à-dire "210 mm X 297 mm @ 300 dpi")
  • 600 dpi (impression) = 4960 X 7016 pixels

Et ainsi de suite. Les formats de document FWIW comme A4 sont décrits par leurs dimensions d'impression (millimètres), ce qui est complètement différent des images d'écran (pixels), c'est pourquoi vous ne voyez personne utiliser des pixels pour décrire A4. :Oui

1
raisercostin