Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.11/site-packages/pypdf/papersizes.py: 100%

Shortcuts on this page

r m x   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

17 statements  

1"""Helper to get paper sizes.""" 

2 

3from typing import NamedTuple 

4 

5 

6class Dimensions(NamedTuple): 

7 width: int 

8 height: int 

9 

10 

11class PaperSize: 

12 """(width, height) of the paper in portrait mode in pixels at 72 ppi.""" 

13 

14 # Notes of how to calculate it: 

15 # 1. Get the size of the paper in millimeters 

16 # 2. Convert it to inches (25.4 millimeters is equal to 1 inch) 

17 # 3. Convert it to pixels at 72dpi (1 inch is equal to 72 pixels) 

18 

19 # All Din-A paper sizes follow this pattern: 

20 # 2 x A(n - 1) = A(n) 

21 # So the height of the next bigger one is the width of the smaller one 

22 # The ratio is always approximately 1:2**0.5 

23 # Additionally, A0 is defined to have an area of 1 m**2 

24 # https://en.wikipedia.org/wiki/ISO_216 

25 # Be aware of rounding issues! 

26 A0 = Dimensions(2384, 3370) # 841mm x 1189mm 

27 A1 = Dimensions(1684, 2384) 

28 A2 = Dimensions(1191, 1684) 

29 A3 = Dimensions(842, 1191) 

30 A4 = Dimensions( 

31 595, 842 

32 ) # Printer paper, documents - this is by far the most common 

33 A5 = Dimensions(420, 595) # Paperback books 

34 A6 = Dimensions(298, 420) # Postcards 

35 A7 = Dimensions(210, 298) 

36 A8 = Dimensions(147, 210) 

37 

38 # Envelopes 

39 C4 = Dimensions(649, 918) 

40 

41 

42_din_a = ( 

43 PaperSize.A0, 

44 PaperSize.A1, 

45 PaperSize.A2, 

46 PaperSize.A3, 

47 PaperSize.A4, 

48 PaperSize.A5, 

49 PaperSize.A6, 

50 PaperSize.A7, 

51 PaperSize.A8, 

52)