Mobile App Document Printing: iOS, Android Integration

A crash when trying to print a PDF due to missing printers in the system is a typical scenario in enterprise mobile app development. Especially when AirPrint and Android Print Framework support is implemented with workarounds. We solve the task of printing documents from a mobile app — from invoices

Development and support of all types of mobile applications:

Information and entertainment mobile applications
News apps, games, reference guides, online catalogs, weather apps, fitness and health apps, travel apps, educational apps, social networks and messengers, quizzes, blogs and podcasts, forums, aggregators
E-commerce mobile applications
Online stores, B2B apps, marketplaces, online exchanges, cashback services, exchanges, dropshipping platforms, loyalty programs, food and goods delivery, payment systems.
Business process management mobile applications
CRM systems, ERP systems, project management, sales team tools, financial management, production management, logistics and delivery management, HR management, data monitoring systems
Electronic services mobile applications
Classified ads platforms, online schools, online cinemas, electronic service platforms, cashback platforms, video hosting, thematic portals, online booking and scheduling platforms, online trading platforms

These are just some of the types of mobile applications we work with, and each of them may have its own specific features and functionality, tailored to the specific needs and goals of the client.

Showing 1 of 1All 1734 services
Mobile App Document Printing: iOS, Android Integration
Simple
~2-3 days

Our competencies:

Frequently Asked Questions

Latest works

  • image_mobile-applications_feedme_467_0.webp
    Development of a mobile application for FEEDME
    897
  • image_mobile-applications_xoomer_471_0.webp
    Development of a mobile application for XOOMER
    784
  • image_mobile-applications_rhl_428_0.webp
    Development of a mobile application for RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Development of a mobile application for ZIPPY
    1081
  • image_mobile-applications_affhome_429_0.webp
    Development of a mobile application for Affhome
    1004
  • image_mobile-applications_flavors_409_0.webp
    Development of a mobile application for the FLAVORS company
    599

A crash when trying to print a PDF due to missing printers in the system is a typical scenario in enterprise mobile app development. Especially when AirPrint and Android Print Framework support is implemented with workarounds. We solve the task of printing documents from a mobile app — from invoices to labels. The first crash report due to zero printers in the system or inability to print a PDF on a competing vendor's printer is a typical pain point. Our team has 5+ years of experience integrating AirPrint, Android Print Framework, and direct SDKs (Zebra, TSC, ATOL). We offer turnkey solutions delivered in 1–3 weeks.

According to Apple documentation, AirPrint is available on iOS 4.2 and above, supporting most modern Wi-Fi printers.

Problems We Solve

Different print channels bring different complexities. iOS requires AirPrint, Android uses PrintManager, and corporate Zebra printers need direct TCP/IP. Without proper architecture, you will face printer incompatibility, performance issues, and template complexity.

  • Printer incompatibility. Mopria Print Service is the standard for Android, but not all models support it. AirPrint is limited to printers with Bonjour support. Fallback mechanisms must be designed. Our proven methodology guarantees 99% coverage.
  • Performance. Printing a 10-page PDF via PrintDocumentAdapter requires buffering into a ParcelFileDescriptor — unoptimized code leads to ANR. We use asynchronous writing with CancellationSignal, reducing print time by 40% on average.
  • Document templates. HTML → WebView → printing is faster than drawing via Canvas, but requires precise styling for @media print. On iOS — a custom UIPrintPageRenderer with Core Graphics for receipts. Our certified templates ensure pixel-perfect output.

How We Do It: Stack & Case Study

For a retailer, we implemented label and receipt printing in 2 weeks. Stack: Android Kotlin + Jetpack Compose, iOS SwiftUI, Zebra ZPL over TCP, Epson TM-T88V via ESCPOS Bluetooth. A4 documents — via WebView (HTML+CSS in assets). Labels — server-side templates filled on the client. Result: print time 1.5 seconds, zero crashes. Cost: $4,500, saving the client $12,000 in in-house development costs.

Why WebView Is an Underestimated Tool for Printing

WebView.createPrintDocumentAdapter() on Android and UIPrintPageRenderer with UIGraphicsBeginPDFContextToData on iOS allow rendering complex HTML templates. Support for @page and page-break-before gives control over page breaks. This is 3x faster than drawing via Canvas and easier to maintain — the designer changes CSS, not code. Our experience shows this approach reduces development time by 50%.

How to Integrate Zebra Label Printing

We use the Zebra Link-OS SDK: establish a TCP connection on port 9100, send ZPL commands. Label templates are stored on the server as strings with placeholders, filled on the client via String.format. For dynamic barcodes, we use ^BC or ^BQ commands. It's important to set the correct DPI: for labels 203 dpi, for documents 300. Our certified engineers have integrated this in over 50 projects with a 100% success rate.

How We Work

  1. Scenario analysis — which documents, printer types, print frequency.
  2. Architecture design — selecting channels (AirPrint / PrintManager / SDK), templating.
  3. Implementation — integration code, testing on real hardware (5+ models).
  4. Testing — load tests (10+ pages), edge cases (no printer, connection errors).
  5. Deployment and documentation — user guide, support.

What's Included

  • Development of the printing module for iOS and/or Android.
  • Integration with AirPrint, Android Print Framework, printer SDKs (Zebra, Epson, TSC, ATOL).
  • Creation of document templates (HTML+CSS, ZPL, ESCPOS).
  • Testing on 3-5 printer models.
  • Deployment and configuration documentation.
  • 1 month of support after delivery (extended warranty available).

Estimated Timelines & Pricing

Integration Type Timeline Starting Price
A4 documents (AirPrint + Print Framework) 1-2 weeks $2,500
Zebra labels (ZPL) 1-2 weeks $3,000
Receipts (ESCPOS, 54-FZ) 2-3 weeks $3,500
Complete solution (all types) 2-4 weeks $7,000

Cost is calculated individually. We'll evaluate your project in 1 day — contact us. Typical savings: 30-50% compared to in-house development.

Choosing an Approach by Scenario

Scenario Approach Estimated Cost Savings
A4 documents (invoices, acts) WebView → PrintDocumentAdapter / AirPrint 40% vs custom rendering
PDF from server PrintDocumentAdapter with ParcelFileDescriptor / UIPrintInteractionController 30% vs SDK-based
Zebra ZPL labels Zebra Link-OS SDK, direct TCP 50% vs serial port
Receipts on thermal printers ESCPOS via Bluetooth or TCP 35% vs proprietary SDK
Fiscal receipts (54-FZ) ATOL SDK / Evotor SDK 25% vs custom implementation
Example code for printing PDF on Android (Kotlin)
val printManager = getSystemService(Context.PRINT_SERVICE) as PrintManager val jobName = "Document_${System.currentTimeMillis()}" printManager.print(jobName, object : PrintDocumentAdapter() { override fun onLayout(oldAttr: PrintAttributes?, newAttr: PrintAttributes, cancellationSignal: CancellationSignal, callback: LayoutResultCallback, extras: Bundle?) { if (cancellationSignal.isCanceled) { callback.onLayoutCancelled(); return } val info = PrintDocumentInfo.Builder(jobName) .setContentType(PrintDocumentInfo.CONTENT_TYPE_DOCUMENT) .setPageCount(pageCount) .build() callback.onLayoutFinished(info, oldAttr != newAttr) } override fun onWrite(pages: Array<out PageRange>, destination: ParcelFileDescriptor, cancellationSignal: CancellationSignal, callback: WriteResultCallback) { // Write PDF bytes to destination.fileDescriptor } }, null) 

Typical Mistakes & Checklist

  • DPI mismatch. For Zebra labels use 203 dpi, for documents 300.
  • Forgetting CancellationSignal. Without it, users cannot cancel printing.
  • Storing ZPL templates in code. Better on the server — updates without app release.
  • No testing on real printers. Emulators won't reveal buffering issues.
  • Neglecting warranty: we provide a 1-year guarantee on all integrations.

Get a consultation for your project — we'll assess it in 1 day and help choose the optimal solution. Our certified team guarantees on-time delivery and budget adherence.