Преобразование изображения в PCL и печать через Bluetooth

Проблема:

Используя устройство Android, без подключения к Интернету / сети, я должен распечатать изображения на принтере с поддержкой Bluetooth.

Имейте в виду, что это бизнес-кейс - я не могу использовать Google Cloud Print и не могу использовать PrinterShare или что-то подобное. Данные, генерируемые приложением, носят медицинский характер и должны храниться в тайне и в приложении.

Что я достиг:

Создание данных PCL (только текст, без изображений) для отправки на соединение Bluetooth, которое принтер может обрабатывать и выводить.

Что я пробовал:

Генерация данных PCL (изображения) с использованием порта Android ImageMagick (находится здесь: https://github.com/paulasiimwe/Android-ImageMagick) и отправка сгенерированных данных PCL в соединение Bluetooth.

Результат:

Тарабарщина, но тарабарщина, которая, кажется, является правильными размерами изображения, которое я пытаюсь напечатать.

==============

Моя гипотеза состоит в том, что в моей реализации преобразования что-то есть, но я не уверен, что это такое.

Образец кода:

ПРИМЕЧАНИЕ: это является доказательством концептуальной работы и захватывает изображение из каталога Assets, делает его доступным, а затем преобразует его.

// Attempt to get image file from Assets folder
AssetManager assetManager = context.getAssets();
InputStream istr = assetManager.open("test.jpg");
Bitmap bitmap = BitmapFactory.decodeStream(istr);

// Access External Storage Directory and save file
String root = Environment.getExternalStorageDirectory().toString();
File tempDirectory = new File(root + "/temp");
tempDirectory.mkdirs();

String fileName = "test.jpg";
File file = new File (tempDirectory, fileName);

try {
    FileOutputStream out = new FileOutputStream(file);
    bitmap.compress(Bitmap.CompressFormat.JPEG, 90, out);
    out.flush();
    out.close();
} catch (Exception exception) {
    // Exception found
}

// Capture file of recently saved image, convert to PCL
try{
    ImageInfo originalInfo = new ImageInfo(Environment.getExternalStorageDirectory().getAbsolutePath() + "/temp/test.jpg");
    MagickImage mImage = new MagickImage(originalInfo);

    String newInfoPath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/temp/test.pcl";
    mImage.setFileName(newInfoPath);
    mImage.setImageFormat("pcl");

    ImageInfo newInfo = new ImageInfo(newInfoPath);
    mImage.writeImage(newInfo);
} catch (MagickException exception) {
    // Exception found
}

Затем я извлекаю файл PCL и отправляю его в соединение Bluetooth (используя другой метод, который работает с использованием стандартных файлов PCL), но, как уже упоминалось, вывод является бессмысленным.

Я чувствую, что упускаю что-то простое, но просто не вижу этого.

Кроме того, я вижу следующее в LogCat, которое может / не может быть связано, но я не смог найти никакой информации о том, как решить эту проблему, и не могу определить, является ли это чем-то большим, чем предупреждение.

V/Magick: ThrowException
V/Magick: severity: 395
V/Magick: reason: UnableToOpenConfigureFile `policy.xml' @ warning/configure.c/GetConfigureOptions/589
V/Magick: Attempting to read from file /storage/emulated/0/temp/test.jpg
V/Magick: ThrowException
V/Magick: severity: 395
V/Magick: reason: UnableToOpenConfigureFile `magic.xml' @ warning/configure.c/GetConfigureOptions/589
V/Magick: OpenPixelCache()
V/Magick: - cache_info->columns: 144
V/Magick: - cache_info->rows: 144
V/Magick: - cache_info->offset: 0
V/Magick: - cache_info->length: 165888
V/Magick: - length: 207360
V/Magick: - create memory pixel cache
V/Magick: ReadImage completed

Кто-нибудь имеет опыт с этим или кто-нибудь может указать мне правильное направление?

0 ответов

Другие вопросы по тегам