There is an internal Android application for field inspections (Kotlin, Android 10-14, minimum API 26). Inspectors work in non-communication zones, fill out a checklist, take photos, and at the end create an act in PDF. Now the PDF is generated on the server causing the process to break offline. It is necessary to make a local formation and signature of the PDF on the device with subsequent synchronization when the network appears. Technical environment and limitations - Project: Kotlin, Gradle Kotlin DSL, MVVM, Coroutines/Flow, Hilt, Room, WorkManager, minSdk 26 - Document format: PDF/A is not required, but the PDF should open in Adobe Acrobat without errors - Signature: handwritten signature with a stylus/finger + timestamp, as well as optional superimposition of a seal image on the document (PNG with transparency) - Offline: PDF generation and synchronization task without network access - Security: the original photo and signature cannot be written to shared directories, only app-private storage; temporary files should be deleted What is already there - Checklist filling screen, Room local database with review data and photos, synchronization queue on WorkManager - The server endpoint accepts the finished PDF as a multipart and returns the serverDocumentId What needs to be done - Add a module/package for local PDF generation from review data (text fields, point table, embedded photos with zoom, page numbering) - Add signature collection screen: canvas with pressure tracking, line smoothing (bezier/kalman or similar), clear/repeat buttons, page preview with signature location - Implement signature and seal overlay in the defined area of the last PDF page with the correct scale regardless of device DPI - Add an offline queue: if there is no network, save the generated PDF to the internal storage, create a record in Room, and the WorkManager should send the document when the network appears and set the serverDocumentId - Add basic instrumented tests or checks to catch generation regressions (e.g. that the PDF is not empty, contains the expected number of pages for a large set of photos) - Provide short documentation for developers in the form of a README with a description of the architecture and integration points Measurable acceptance criteria 1) In flight mode, you can create an inspection report with a minimum of 20 points and 10 photos (3-5 MB each), add a signature, receive a PDF on the device without crashes and ANR. 2) The PDF is opened on a PC in Adobe Acrobat and contains: title, object data, table of points, attached photos, page number in the format "X/Y", signature in the specified area of the last page. 3) After the network is restored, WorkManager sends the PDF to the server, the serverDocumentId appears in the local DB, and the local temporary file is deleted (or marked for cleaning, but it is actually cleaned within 24 hours). 4) Memory: during the generation of a PDF from 10 photos, the application does not crash on devices with 4 GB of RAM; large images are resized before embedding in PDF. 5) The code is compiled in the existing CI (Gradle), without adding heavy dependencies that significantly increase the size of the APK (agreed limit +8 MB). Result - PR or set of commits to repository with PDF generation implementation, signature screen, offline sync and minimal tests, ready for review. The budget is limited, so a pragmatic implementation without unnecessary design, but with reliable offline operation and correct PDF, is important.