File size: 9,013 Bytes
cbdf795
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
#!/usr/bin/env python

from PyPDF2 import PdfReader
from PyPDF2.generic import ContentStream

OFFSET = 4

TITLE_IDX = 0
START_IDX = 1
END_IDX = 2

# FOOTER_TEXT = "2023 F-150 (TFD) Canada/United States of America, enUSA, Edition date: 202206, DOM"
FOOTER_TEXT = "2023 F-150 (TFD ) Cana da/Unit ed States of Americ a, enU SA, Edition da te: 202206 , DOM"
TOC = [
  ("About Us - Raptor", 21 + OFFSET - 1 , 21 + OFFSET),
  ("Contacting Us", 22 + OFFSET - 1 , 22 + OFFSET),
  ("Introduction", 24 + OFFSET - 1 , 25 + OFFSET),
  ("Data Privacy", 29 + OFFSET - 1 , 32 + OFFSET),
  ("At a Glance - Raptor", 33 + OFFSET - 1 , 33 + OFFSET),
  ("Visual Search", 35 + OFFSET - 1 , 49 + OFFSET),
  ("Child Safety", 50 + OFFSET - 1 , 63 + OFFSET),
  ("Seatbelts", 64 + OFFSET - 1 , 71 + OFFSET),
  ("Personal Safety System", 72 + OFFSET - 1 , 72 + OFFSET),
  ("Airbags", 73 + OFFSET - 1 , 86 + OFFSET),
  ("Pedestrian Alert System - Hybrid Electric Vehicle (HEV)", 87 + OFFSET - 1 , 87 + OFFSET),
  ("911 Assist", 88 + OFFSET - 1 , 89 + OFFSET),
  ("Keys and Remote Controls", 90 + OFFSET - 1 , 98 + OFFSET),
  ("MyKey - Vehicles With: MyKey", 99 + OFFSET - 1 , 102 + OFFSET),
  ("Doors and Locks", 104 + OFFSET - 1 , 106 + OFFSET),
  ("Keyless Entry", 108 + OFFSET - 1 , 109 + OFFSET),
  ("Keyless Entry Keypad", 110 + OFFSET - 1 , 111 + OFFSET),
  ("Easy Entry and Exit", 112 + OFFSET - 1 , 112 + OFFSET),
  ("Tailgate - Vehicles With: Manual Tailgate", 113 + OFFSET - 1 , 117 + OFFSET),
  ("Tailgate - Vehicles With: Power Tailgate", 119 + OFFSET - 1 , 125 + OFFSET),
  ("Tailgate - Vehicles With: Remote Release Tailgate", 127 + OFFSET - 1 , 132 + OFFSET),
  ("Security", 134 + OFFSET - 1 , 136 + OFFSET),
  ("Power Running Boards", 138 + OFFSET - 1 , 139 + OFFSET),
  ("Steering Wheel", 140 + OFFSET - 1 , 141 + OFFSET),
  ("Adjustable Pedals", 142 + OFFSET - 1 , 142 + OFFSET),
  ("Wipers and Washers", 143 + OFFSET - 1 , 145 + OFFSET),
  ("Exterior Lighting", 147 + OFFSET - 1 , 157 + OFFSET),
  ("Interior Lighting", 159 + OFFSET - 1 , 160 + OFFSET),
  ("Windows", 161 + OFFSET - 1 , 162 + OFFSET),
  ("Interior Mirror", 163 + OFFSET - 1 , 163 + OFFSET),
  ("Exterior Mirrors", 164 + OFFSET - 1 , 165 + OFFSET),
  ("Moonroof", 166 + OFFSET - 1 , 167 + OFFSET),
  ("Instrument Cluster", 168 + OFFSET - 1 , 173 + OFFSET),
  ("Instrument Cluster Display", 175 + OFFSET - 1 , 178 + OFFSET),
  ("Personalized Settings", 179 + OFFSET - 1 , 179 + OFFSET),
  ("Trip Computer", 180 + OFFSET - 1 , 180 + OFFSET),
  ("Remote Start", 181 + OFFSET - 1 , 182 + OFFSET),
  ("Climate Control - Vehicles With: Automatic Temperature Control", 184 + OFFSET - 1 , 187 + OFFSET),
  ("Climate Control - Vehicles With: Manual Climate Control", 189 + OFFSET - 1 , 191 + OFFSET),
  ("Interior Air Quality", 192 + OFFSET - 1 , 192 + OFFSET),
  ("Front Seats", 193 + OFFSET - 1 , 200 + OFFSET),
  ("Rear Seats - Crew Cab", 202 + OFFSET - 1 , 203 + OFFSET),
  ("Rear Occupant Alert System", 205 + OFFSET - 1 , 206 + OFFSET),
  ("Memory Function", 207 + OFFSET - 1 , 207 + OFFSET),
  ("Garage Door Openeer", 208 + OFFSET - 1 , 211 + OFFSET),
  ("USB Ports", 212 + OFFSET - 1 , 213 + OFFSET),
  ("Power Outlet - Vehicles With: 120v Power Outlet", 214 + OFFSET - 1 , 215 + OFFSET),
  ("Power Outlet - Vehicles With: 12v Power Outlet", 216 + OFFSET - 1 , 216 + OFFSET),
  ("Onboard Generator", 217 + OFFSET - 1 , 223 + OFFSET),
  ("Center Console Work Surface", 225 + OFFSET - 1 , 227 + OFFSET),
  ("Wireless Accessory Charging", 228 + OFFSET - 1 , 228 + OFFSET),
  ("Storage", 229 + OFFSET - 1 , 232 + OFFSET),
  ("Starting and Stopping the Engine", 233 + OFFSET - 1 , 240 + OFFSET),
  ("Hybrid Electric Vehicle Information - Hybrid Electric Vehicle (HEV)", 244 + OFFSET - 1 , 247 + OFFSET),
  ("Auto - Start - Stop", 248 + OFFSET - 1 , 249 + OFFSET),
  ("Fuel and Refueling", 251 + OFFSET - 1 , 260 + OFFSET),
  ("Cataytic Converter", 262 + OFFSET - 1 , 262 + OFFSET),
  ("High Voltage Battery - Hybrid Electric Vehicle (HEV)", 263 + OFFSET - 1 , 263 + OFFSET),
  ("Automatic Transmission", 264 + OFFSET - 1 , 273 + OFFSET),
  ("Four-Wheel Drive", 274 + OFFSET - 1 , 280 + OFFSET),
  ("Electronic Locking Differential", 284 + OFFSET - 1 , 290 + OFFSET),
  ("Brakes", 291 + OFFSET - 1 , 292 + OFFSET),
  ("Electric Parking Brake", 294 + OFFSET - 1 , 295 + OFFSET),
  ("Reverse Braking Assist", 297 + OFFSET - 1 , 299 + OFFSET),
  ("Cross Traffic Braking", 301 + OFFSET - 1 , 302 + OFFSET),
  ("Hill Start Assist", 304 + OFFSET - 1 , 304 + OFFSET),
  ("Auto Hold", 305 + OFFSET - 1 , 305 + OFFSET),
  ("Traction Control", 307 + OFFSET - 1 , 308 + OFFSET),
  ("Stability Control", 309 + OFFSET - 1 , 311 + OFFSET),
  ("Trail Control - Raptor-Tremor", 312 + OFFSET - 1 , 315 + OFFSET),
  ("Trail Turn Assist", 316 + OFFSET - 1 , 317 + OFFSET),
  ("Hill Descent Control", 318 + OFFSET - 1 , 319 + OFFSET),
  ("Steering", 320 + OFFSET - 1 , 321 + OFFSET),
  ("Parking Aids", 323 + OFFSET - 1 , 327 + OFFSET),
  ("Rear View Camera", 329 + OFFSET - 1 , 330 + OFFSET),
  ("360 Degree Camera", 332 + OFFSET - 1 , 334 + OFFSET),
  ("Active Park Assist", 336 + OFFSET - 1 , 338 + OFFSET),
  ("Cruise Control", 340 + OFFSET - 1 , 341 + OFFSET),
  ("Adaptive Cruise Control", 342 + OFFSET - 1 , 354 + OFFSET),
  ("BlueCruise", 356 + OFFSET - 1 , 360 + OFFSET),
  ("Drive Mode Control", 362 + OFFSET - 1 , 373 + OFFSET),
  ("Lane Keeping System", 375 + OFFSET - 1 , 379 + OFFSET),
  ("Blind Spot Information System", 382 + OFFSET - 1 , 386 + OFFSET),
  ("Cross Traffic Alert", 387 + OFFSET - 1 , 389 + OFFSET),
  ("Pre-Collision Assist", 390 + OFFSET - 1 , 397 + OFFSET),
  ("Driver Alert", 399 + OFFSET - 1 , 400 + OFFSET),
  ("Speed Sign Recognition", 401 + OFFSET - 1 , 402 + OFFSET),
  ("Load Carrying", 404 + OFFSET - 1 , 407 + OFFSET),
  ("Pickup Bed", 409 + OFFSET - 1 , 411 + OFFSET),
  ("Connecting a Trailer", 414 + OFFSET - 1 , 417 + OFFSET),
  ("Towing a Trailer", 418 + OFFSET - 1 , 423 + OFFSET),
  ("Integrated Trailer Brake Controller", 425 + OFFSET - 1 , 428 + OFFSET),
  ("Trailer Sway Control", 430 + OFFSET - 1 , 430 + OFFSET),
  ("Trailer Hitching Assistance", 431 + OFFSET - 1 , 433 + OFFSET),
  ("Smart Hitch", 435 + OFFSET - 1 , 437 + OFFSET),
  ("Onboard Scales", 437 + OFFSET - 1 , 437 + OFFSET),
  ("Trailer Backup Assistance", 439 + OFFSET - 1 , 447 + OFFSET),
  ("Trailer Reverse Guidance", 454 + OFFSET - 1 , 460 + OFFSET),
  ("Driving Hints", 466 + OFFSET - 1 , 473 + OFFSET),
  ("Snow Plowing - Vehicles Without: Snow Plow Mode", 475 + OFFSET - 1 , 475 + OFFSET),
  ("Snow Plowing - Vehicles With: Snow Plow Mode", 476 + OFFSET - 1 , 477 + OFFSET),
  ("Crash and Breakdown Information", 478 + OFFSET - 1 , 484 + OFFSET),
  ("Towing Your Vehicle", 485 + OFFSET - 1 , 487 + OFFSET),
  ("Fuses", 488 + OFFSET - 1 , 497 + OFFSET),
  ("Maintenance", 498 + OFFSET - 1 , 528 + OFFSET),
  ("Vehicle Care", 529 + OFFSET - 1 , 534 + OFFSET),
  ("Storing Your Vehicle", 535 + OFFSET - 1 , 536 + OFFSET),
  ("Wheel and Tire Information", 537 + OFFSET - 1 , 547 + OFFSET),
  ("Tire Care", 550 + OFFSET - 1 , 552 + OFFSET),
  ("Tire Pressue Monitoring System", 554 + OFFSET - 1 , 559 + OFFSET),
  ("Changing a Road Wheel", 561 + OFFSET - 1 , 576 + OFFSET),
  ("Capacities and Specifications", 578 + OFFSET - 1 , 619 + OFFSET),
  ("Vehicle Identification", 620 + OFFSET - 1 , 620 + OFFSET),
  ("Connected Vehicle", 621 + OFFSET - 1 , 622 + OFFSET),
  ("Vehicle Wi-Fi Hotspot", 624 + OFFSET - 1 , 625 + OFFSET),
  ("Audio System", 626 + OFFSET - 1 , 633 + OFFSET),
  ("Center Display Overview", 637 + OFFSET - 1 , 639 + OFFSET),
  ("Voice Interaction", 640 + OFFSET - 1 , 640 + OFFSET),
  ("Alexa Built-In", 642 + OFFSET - 1 , 642 + OFFSET),
  ("Phone", 644 + OFFSET - 1 , 648 + OFFSET),
  ("Bluetooth", 649 + OFFSET - 1 , 649 + OFFSET),
  ("Apps", 650 + OFFSET - 1 , 651 + OFFSET),
  ("Personal Profiles", 652 + OFFSET - 1 , 653 + OFFSET),
  ("Navigation", 654 + OFFSET - 1 , 656 + OFFSET),
  ("Vehicle Software Updates", 657 + OFFSET - 1 , 658 + OFFSET),
  ("Vehicle System Reset", 659 + OFFSET - 1 , 659 + OFFSET),
  ("Accessories", 660 + OFFSET - 1 , 660 + OFFSET),
  ("Auxiliary Switches", 661 + OFFSET - 1 , 662 + OFFSET),
  ("Warranty Terms and Conditions - Raptor", 664 + OFFSET - 1 , 664 + OFFSET),
  ("Ford Protect", 665 + OFFSET - 1 , 665 + OFFSET),
  ("Scheduled Maintenance", 667 + OFFSET - 1 , 676 + OFFSET),
  ("Decommissioning the Vehicle - Police Responder", 680 + OFFSET - 1 , 680 + OFFSET),
  ("Customer Information", 681 + OFFSET - 1 , 749 + OFFSET),
  ("Electromagnetic Compatibility", 751 + OFFSET - 1 , 751 + OFFSET),
]

reader = PdfReader("docs/2023_Ford_F-150_OM_PL3J_19A321_AA_EN_V1.pdf")
for chapter in TOC:
  pages = reader.pages[chapter[START_IDX]:chapter[END_IDX]]
  title = chapter[TITLE_IDX]
  print(title)
  content = "\n\n".join([p.extract_text() for p in pages])
  content = f"{title}\n\n{content}"
  content = content.replace(FOOTER_TEXT, "")
  open(f"docs/chapters/{chapter[TITLE_IDX]}.txt", "w").write(content)