I am currently trying to extract text from PDF files using PDFBox, but the problem is that these PDFs are rotated, so I need to find the rotation angle and rotate them accordingly.
This is the code:
public void wawa(String pdfRoute) {
try (PDDocument document = PDDocument.load(new File(pdfRoute))) {
for (int i = 0; i < document.getNumberOfPages(); i++) {
PDPage page = document.getPage(i);
PDFTextStripper stripper = new PDFTextStripper();
stripper.setSortByPosition(true);
stripper.setAddMoreFormatting(true);
String text = stripper.getText(document);
Matrix matrix = stripper.getTextMatrix();
if (matrix != null) {
double rotationAngle = detectRotationAngle(matrix);
System.out.println("Page rotation angle: " + (i + 1) + ": " + rotationAngle + " grados");
} else {
System.out.println("Couldn't get text matrix for page " + (i + 1));
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
public int detectRotationAngle(Matrix matrix) {
int direction = -1;
if (direction < 0) {
float a = matrix.getScaleY();
float b = matrix.getShearY();
float c = matrix.getShearX();
float d = matrix.getScaleX();
// 12 0 left to right
// 0 12
if (a > 0 && Math.abs(b) < d && Math.abs(c) < a && d > 0) {
direction = 0;
}
// -12 0 right to left (upside down)
// 0 -12
else if (a < 0 && Math.abs(b) < Math.abs(d) && Math.abs(c) < Math.abs(a) && d < 0) {
direction = 180;
}
// 0 12 up
// -12 0
else if (Math.abs(a) < Math.abs(c) && b > 0 && c < 0 && Math.abs(d) < b) {
direction = 90;
}
// 0 -12 down
// 12 0
else if (Math.abs(a) < c && b < 0 && c > 0 && Math.abs(d) < Math.abs(b)) {
direction = 270;
} else {
direction = 0;
}
}
return direction;
}
i'm getting warnings saying
2024-03-12T10:32:39.497-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont : No Unicode mapping for 81 (81) in font null
These warnings go from 0 to 90.
This is the output:
2024-03-12T10:32:39.491-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont : No Unicode mapping for 0 (0) in font null 2024-03-12T10:32:39.492-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont : No Unicode mapping for 1 (1) in font null 2024-03-12T10:32:39.492-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont
: No Unicode mapping for 2 (2) in font null 2024-03-12T10:32:39.492-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont : No Unicode mapping for 3 (3) in font null 2024-03-12T10:32:39.492-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont : No Unicode mapping for 4 (4) in font null 2024-03-12T10:32:39.492-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont
: No Unicode mapping for 5 (5) in font null 2024-03-12T10:32:39.492-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont : No Unicode mapping for 6 (6) in font null 2024-03-12T10:32:39.492-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont : No Unicode mapping for 7 (7) in font null 2024-03-12T10:32:39.492-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont
: No Unicode mapping for .notdef (8) in font null 2024-03-12T10:32:39.492-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont : No Unicode mapping for 9 (9) in font null 2024-03-12T10:32:39.492-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont : No Unicode mapping for 10 (10) in font null 2024-03-12T10:32:39.492-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont
: No Unicode mapping for 11 (11) in font null 2024-03-12T10:32:39.492-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont : No Unicode mapping for 12 (12) in font null 2024-03-12T10:32:39.492-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont : No Unicode mapping for 13 (13) in font null 2024-03-12T10:32:39.492-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont
: No Unicode mapping for 14 (14) in font null 2024-03-12T10:32:39.492-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont : No Unicode mapping for 15 (15) in font null 2024-03-12T10:32:39.492-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont : No Unicode mapping for 16 (16) in font null 2024-03-12T10:32:39.492-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont
: No Unicode mapping for 17 (17) in font null 2024-03-12T10:32:39.492-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont : No Unicode mapping for 18 (18) in font null 2024-03-12T10:32:39.492-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont : No Unicode mapping for 19 (19) in font null 2024-03-12T10:32:39.492-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont
: No Unicode mapping for 20 (20) in font null 2024-03-12T10:32:39.492-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont : No Unicode mapping for 21 (21) in font null 2024-03-12T10:32:39.492-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont : No Unicode mapping for 22 (22) in font null 2024-03-12T10:32:39.492-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont
: No Unicode mapping for 23 (23) in font null 2024-03-12T10:32:39.492-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont : No Unicode mapping for 24 (24) in font null 2024-03-12T10:32:39.493-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont : No Unicode mapping for 25 (25) in font null 2024-03-12T10:32:39.493-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont
: No Unicode mapping for 26 (26) in font null 2024-03-12T10:32:39.493-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont : No Unicode mapping for 27 (27) in font null 2024-03-12T10:32:39.493-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont : No Unicode mapping for 28 (28) in font null 2024-03-12T10:32:39.493-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont
: No Unicode mapping for 29 (29) in font null 2024-03-12T10:32:39.493-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont : No Unicode mapping for 30 (30) in font null 2024-03-12T10:32:39.493-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont : No Unicode mapping for 31 (31) in font null 2024-03-12T10:32:39.493-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont
: No Unicode mapping for 32 (32) in font null 2024-03-12T10:32:39.493-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont : No Unicode mapping for 33 (33) in font null 2024-03-12T10:32:39.493-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont : No Unicode mapping for 34 (34) in font null 2024-03-12T10:32:39.493-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont
: No Unicode mapping for 35 (35) in font null 2024-03-12T10:32:39.493-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont : No Unicode mapping for 36 (36) in font null 2024-03-12T10:32:39.493-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont : No Unicode mapping for 37 (37) in font null 2024-03-12T10:32:39.493-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont
: No Unicode mapping for 38 (38) in font null 2024-03-12T10:32:39.493-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont : No Unicode mapping for 39 (39) in font null 2024-03-12T10:32:39.493-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont : No Unicode mapping for 40 (40) in font null 2024-03-12T10:32:39.493-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont
: No Unicode mapping for 41 (41) in font null 2024-03-12T10:32:39.493-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont : No Unicode mapping for 42 (42) in font null 2024-03-12T10:32:39.493-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont : No Unicode mapping for 43 (43) in font null 2024-03-12T10:32:39.493-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont
: No Unicode mapping for 44 (44) in font null 2024-03-12T10:32:39.493-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont : No Unicode mapping for 45 (45) in font null 2024-03-12T10:32:39.493-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont : No Unicode mapping for 46 (46) in font null 2024-03-12T10:32:39.493-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont
: No Unicode mapping for 47 (47) in font null 2024-03-12T10:32:39.494-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont : No Unicode mapping for 48 (48) in font null 2024-03-12T10:32:39.494-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont : No Unicode mapping for 49 (49) in font null 2024-03-12T10:32:39.494-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont
: No Unicode mapping for 50 (50) in font null 2024-03-12T10:32:39.494-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont : No Unicode mapping for 51 (51) in font null 2024-03-12T10:32:39.494-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont : No Unicode mapping for 52 (52) in font null 2024-03-12T10:32:39.494-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont
: No Unicode mapping for 53 (53) in font null 2024-03-12T10:32:39.494-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont : No Unicode mapping for 54 (54) in font null 2024-03-12T10:32:39.494-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont : No Unicode mapping for 55 (55) in font null 2024-03-12T10:32:39.494-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont
: No Unicode mapping for 56 (56) in font null 2024-03-12T10:32:39.494-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont : No Unicode mapping for 57 (57) in font null 2024-03-12T10:32:39.494-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont : No Unicode mapping for 58 (58) in font null 2024-03-12T10:32:39.494-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont
: No Unicode mapping for 59 (59) in font null 2024-03-12T10:32:39.494-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont : No Unicode mapping for 60 (60) in font null 2024-03-12T10:32:39.494-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont : No Unicode mapping for 61 (61) in font null 2024-03-12T10:32:39.494-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont
: No Unicode mapping for 62 (62) in font null 2024-03-12T10:32:39.494-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont : No Unicode mapping for 63 (63) in font null 2024-03-12T10:32:39.494-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont : No Unicode mapping for .notdef (64) in font null 2024-03-12T10:32:39.495-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont : No Unicode mapping for 65 (65) in font null 2024-03-12T10:32:39.495-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont : No Unicode mapping for 66 (66) in font null 2024-03-12T10:32:39.495-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont
: No Unicode mapping for 67 (67) in font null 2024-03-12T10:32:39.495-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont : No Unicode mapping for 68 (68) in font null 2024-03-12T10:32:39.495-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont : No Unicode mapping for 69 (69) in font null 2024-03-12T10:32:39.495-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont
: No Unicode mapping for 70 (70) in font null 2024-03-12T10:32:39.495-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont : No Unicode mapping for 71 (71) in font null 2024-03-12T10:32:39.495-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont : No Unicode mapping for 72 (72) in font null 2024-03-12T10:32:39.495-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont
: No Unicode mapping for 73 (73) in font null 2024-03-12T10:32:39.495-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont : No Unicode mapping for 74 (74) in font null 2024-03-12T10:32:39.496-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont : No Unicode mapping for 75 (75) in font null 2024-03-12T10:32:39.496-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont
: No Unicode mapping for 76 (76) in font null 2024-03-12T10:32:39.496-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont : No Unicode mapping for 77 (77) in font null 2024-03-12T10:32:39.496-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont : No Unicode mapping for 78 (78) in font null 2024-03-12T10:32:39.497-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont
: No Unicode mapping for 79 (79) in font null 2024-03-12T10:32:39.497-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont : No Unicode mapping for 80 (80) in font null 2024-03-12T10:32:39.497-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont : No Unicode mapping for 81 (81) in font null 2024-03-12T10:32:39.501-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont
: No Unicode mapping for 82 (82) in font null 2024-03-12T10:32:39.503-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont : No Unicode mapping for 83 (83) in font null 2024-03-12T10:32:39.504-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont : No Unicode mapping for 84 (84) in font null 2024-03-12T10:32:39.504-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont
: No Unicode mapping for 85 (85) in font null 2024-03-12T10:32:39.505-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont : No Unicode mapping for 86 (86) in font null 2024-03-12T10:32:39.505-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont : No Unicode mapping for 87 (87) in font null 2024-03-12T10:32:39.505-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont
: No Unicode mapping for 88 (88) in font null 2024-03-12T10:32:39.505-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont : No Unicode mapping for 89 (89) in font null 2024-03-12T10:32:39.505-03:00 WARN 8234 --- [nio-8080-exec-1] o.a.pdfbox.pdmodel.font.PDSimpleFont : No Unicode mapping for 90 (90) in font null Couldn't get text matrix for page 1 Couldn't get text matrix for page 2 Couldn't get text matrix for page 3
Is there anything I can do?