#!/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)