|
From: Ameer H. <aso...@gm...> - 2025-12-02 10:33:48
|
Dear Gutenprint Developers, I hope you are doing well. I am currently developing a *cross-platform printing application for Android (Flutter + Kotlin + USB OTG)* that aims to support a wide range of printers, including HP, Epson, Brother, and especially *Canon PIXMA BubbleJet printers*. On HP printers my solution works well (PJL + PDF printing through USB Host API). However, Canon PIXMA printers (such as *Canon PIXMA iP4000R*) require *BJ/BJL raster protocols*, which are not publicly documented. During my research, I discovered that: - Gutenprint is the only open-source project that provides *full BJ Raster support* for older Canon PIXMA models. - Many Android printing apps (such as PrinterShare/NokoPrint) appear to rely on Gutenprint-based drivers. - The Gutenprint source tree contains the logic I need, but I am unsure how to correctly extract or port only the necessary Canon backend components. I am reaching out to kindly request your technical guidance. ------------------------------ *📌 What I am trying to accomplish* I want to use Gutenprint on *Android (ARM 64-bit)* to generate correct raster print data for Canon PIXMA printers, and then send that data directly to the printer using Android’s USB Host API (bulk endpoints). I do *not* need CUPS or spoolers — only: - bitmap → Gutenprint renderer → Canon BJ raster byte stream - which I will send to the printer over USB ------------------------------ *📌 My Questions* *1. What is the recommended way to compile Gutenprint for Android?* - Can the Canon BJ backend be compiled *standalone* (without full CUPS)? - Which directories / source files are required for models like *iP4000R*? - Are there build flags to disable unnecessary drivers? *2. Which internal Gutenprint APIs should be used to render a page?* For example: - The function(s) that take raster input (RGB/mono bitmap) and output encoded BJ Raster commands - Initialization / job-start / per-line / job-end functions - Any structure or API that maps directly to the “Canon Print Pipeline” A minimal example (pseudo-code or call sequence) would be extremely helpful. *3. Does Gutenprint expose a stable internal API for:* - setting DPI - page size - color/mono mode - selecting Canon model (e.g., iP4000R) - receiving the fully encoded output buffer? *4. Is there any documentation, diagrams, or implementation notes available for:* - Canon BJ Raster / BJL / BJPL protocol - Model-specific quirks (iP4000R in particular) Even partial internal notes or hints would be very valuable. *5. Licensing clarification* If I statically or dynamically link the Gutenprint encoder library inside an Android APK: - What is the correct way to comply with GPL/LGPL requirements? - Are there any restrictions on distributing Gutenprint inside a commercial Android application? ------------------------------ *📌 Summary of What I Need* I would appreciate your guidance on: - How to build *only* the Canon BJ backend for Android - How to call the Gutenprint API to generate raster bytes - Whether there is an example or minimal program showing “bitmap → Canon print data” - Any documentation or tips available for Canon BJ protocols I am happy to contribute back documentation, Android build instructions, and sample code after I get it working. Thank you very much for your time, the great work you have done, and any help you can provide. Gutenprint is an incredible project and it would be wonderful to make it usable on Android. Looking forward to your response. Best regards, *Muhammad Usman* (Android USB Printing Developer) |