---
title: Zorin OS 18 Core × Cat Printer - Pythonで動かす自分専用印刷環境 -
tags: 
author: [basictomonokai](https://www.docswell.com/user/basictomonokai)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/KE4MY28R71.jpg?width=480
description: Zorin OS 18 Core × Cat Printer - Pythonで動かす自分専用印刷環境 - by basictomonokai
published: January 19, 26
canonical: https://www.docswell.com/s/basictomonokai/5448NW-2026-01-19-133253
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/KE4MY28R71.jpg)

Zorin OS 18 Core × Cat Printer
で動かす自分専用印刷環境
〜以前の失敗を乗り越え、実用的なGUIアプリを
作るまで〜
Python
1 / 20


# Page. 2

![Page Image](https://bcdn.docswell.com/page/L7186M2VJG.jpg)

今回の主役：猫型プリンター
等で人気の「Mini Pocket Printer」。 手のひらサイズでインク不要のガジェット
印刷方式: 感熱式（サーマル）
通信方式: Bluetooth Low Energy (BLE)
有効幅: 384ドット（約48mm）
価格: だいたい１３００円くらい
AliExpress
2 / 20


# Page. 3

![Page Image](https://bcdn.docswell.com/page/G7WZW3R372.jpg)

今回の主役：猫型プリンター
等で人気の「Mini Pocket Printer」。 手のひらサイズでインク不要のガジェット
印刷方式: 感熱式（サーマル）
通信方式: Bluetooth Low Energy (BLE)
有効幅: 384ドット（約48mm）
価格: だいたい１３００円くらい
AliExpress
今回の目標: スマホアプリ（FunPrint等）を使わず、 Zorin OSから直接「画像」と「日本語テ
3 / 20
キスト」を印刷する！


# Page. 4

![Page Image](https://bcdn.docswell.com/page/4JZ15VRGE3.jpg)

使用環境（My Machine）
少し古めのノートPCを最新OSで蘇らせた環境です。
PC: Lenovo ThinkPad A285
CPU: AMD Ryzen 5 2500U
RAM: 8GB
OS: Zorin OS 18 Core (Ubuntu 24.04
ベース)
4 / 20


# Page. 5

![Page Image](https://bcdn.docswell.com/page/YE6L95RQ7V.jpg)

使用環境（My Machine）
少し古めのノートPCを最新OSで蘇らせた環境です。
PC: Lenovo ThinkPad A285
CPU: AMD Ryzen 5 2500U
RAM: 8GB
OS: Zorin OS 18 Core (Ubuntu 24.04
ベース)
ポイント: 以前の別のライブラリ利用で失敗。 今回は、より柔軟な rbaron/catprinter を選択
しました。
5 / 20


# Page. 6

![Page Image](https://bcdn.docswell.com/page/GE51NY82J4.jpg)

なぜ以前は失敗したのか？
原因は「通信の窓口（UUID）」にありました。
以前のソフト: 特定の窓口（0000ae02）しか見ない固定設計。
今回のソフト: 複数の窓口候補（ae30, af30等）を自動で探す設計。
6 / 20


# Page. 7

![Page Image](https://bcdn.docswell.com/page/97215GK1ER.jpg)

なぜ以前は失敗したのか？
原因は「通信の窓口（UUID）」にありました。
以前のソフト: 特定の窓口（0000ae02）しか見ない固定設計。
今回のソフト: 複数の窓口候補（ae30, af30等）を自動で探す設計。
教訓: 海外製の格安ガジェットは、中身（UUID）が微妙に違う「亜種」が多い。 「決め打ち」
ではなく「柔軟な探索」をするライブラリ選びが重要！
7 / 20


# Page. 8

![Page Image](https://bcdn.docswell.com/page/DJYZKVN4EM.jpg)

【重要】img.py の修正内容
そのままだと Linux 環境ではプレビュー表示でフリーズしたり、 画像が正しく表示されない
ことがあります。
修正のポイント: 元のコードは cv2.imshow（OpenCV）を使っていましたが、 これを Pillow
(PIL) を使った表示に書き換えました。
の修正イメージ
ではなく で表示させる
# img.py
def show_preview(img_data):
# OpenCV
Pillow
from PIL import Image
preview_img = Image.fromarray(img_data)
preview_img.show() # OS
標準のビューアーが開く
これにより、Zorin OS 標準の画像ビューアーで安全に確認できるようになります。
8 / 20


# Page. 9

![Page Image](https://bcdn.docswell.com/page/V7N3RMX678.jpg)

ライブラリのPythonコード解説：画像の二値化
プリンターは「白か黒か」しか判断できません。 グレーの画像を「ドットの密度」で表現する
コードの一部です。
より抜粋
# catprinter/img.py
from PIL import Image
import numpy as np
def read_img(path, width, algo):
img = Image.open(path).convert(&#039;L&#039;) #
#
384px
img = img.resize((width, int(width * img.height / img.width)))
指定の幅（
）にリサイズ
グレースケール化
法で網点（ドット）にする
これにより写真も新聞紙のような質感で印刷可能に！
# Floyd-Steinberg
#
return binarize(np.array(img), algo)
9 / 20


# Page. 10

![Page Image](https://bcdn.docswell.com/page/YJ99MN8RJ3.jpg)

ライブラリPythonコード解説：BLE通信の仕組み
でデータを送る「心臓部」です。 asyncio という仕組みを使って、非同期でデータ
を送ります。
Bluetooth
より抜粋
プリンターを探して接続
データを バイト程度の塊（チャンク）に分ける
プリンターの「書き込み窓口」にデータを送信
送りすぎ防止の休憩
# catprinter/ble.py
async def run_ble(data, device_name):
#
async with BleakClient(address) as client:
#
200
for chunk in chunkify(data, client.mtu_size - 3):
#
await client.write_gatt_char(TX_UUID, chunk)
await asyncio.sleep(0.02) #
10 / 20


# Page. 11

![Page Image](https://bcdn.docswell.com/page/GJ89LK8GED.jpg)

GUI
アプリとしての統合
ターミナルを使わずに済むよう、 Tkinter を使ってボタン一つで操作できるGUIを作成。
11 / 20


# Page. 12

![Page Image](https://bcdn.docswell.com/page/LJLWLZRX7R.jpg)

テスト時の動画
https://youtu.be/nr53_kSStwk
12 / 20


# Page. 13

![Page Image](https://bcdn.docswell.com/page/47M9MVR3JW.jpg)

GUI
アプリの特徴
画像選択ボタン: filedialog で画像かテキストファイルを選択
確認ダイアログ: messagebox.askyesno で「プリンタの電源いれてください」を表示
ステータス表示: 画面下部に「送信中...」などの状態を表示
13 / 20


# Page. 14

![Page Image](https://bcdn.docswell.com/page/P7RGV2RRJ9.jpg)

アプリPythonコード解説：日本語テキストの画
像化
GUI
プリンター自体は日本語フォントを持っていません。 そこで、「PC側で日本語を画像にしてか
ら送る」という処理を追加しました。
に実装した機能
# gui_print.py
from PIL import ImageDraw, ImageFont
def text_to_image(text):
# Zorin OS
font = ImageFont.truetype(&quot;NotoSansCJK-Regular.ttc&quot;, 24)
img = Image.new(&#039;RGB&#039;, (384, 500), &quot;white&quot;)
draw = ImageDraw.Draw(img)
draw.text((10, 10), text, fill=&quot;black&quot;, font=font)
return img
の日本語フォントを指定
14 / 20


# Page. 15

![Page Image](https://bcdn.docswell.com/page/PJXXZDRYJX.jpg)

デスクトップからGUI一発起動設定
毎回コマンドを打つのは大変です。 .desktop ファイルを作って「アプリ化」しました。
# ~/Desktop/catprinter.desktop
[Desktop Entry]
Type=Application
Name=Cat Printer
#
1
Exec=bash -c &quot;source ~/catprinter/venv/bin/activate &amp;&amp; python3 gui_print.py&quot;
Icon=printer
Terminal=false
仮想環境を起動してからプログラムを走らせる魔法の 行
15 / 20


# Page. 16

![Page Image](https://bcdn.docswell.com/page/3JKW8XR4JD.jpg)

デスクトップからGUI一発起動設定
毎回コマンドを打つのは大変です。 .desktop ファイルを作って「アプリ化」しました。
# ~/Desktop/catprinter.desktop
[Desktop Entry]
Type=Application
Name=Cat Printer
#
1
Exec=bash -c &quot;source ~/catprinter/venv/bin/activate &amp;&amp; python3 gui_print.py&quot;
Icon=printer
Terminal=false
仮想環境を起動してからプログラムを走らせる魔法の 行
これで、デスクトップのアイコンをダブルクリックするだけで、 いつでも印刷準備が整いま
す。
16 / 20


# Page. 17

![Page Image](https://bcdn.docswell.com/page/LE31258D75.jpg)

トラブルシューティング：2台ある場合
もし猫型プリンターを2台持っていたら？
現在の挙動: スキャンして最初に見つかった方に接続します。
解決策: device 引数に MAC アドレスを指定します。
例：特定の個体に固定する
#
run_ble(data, device=&quot;01:23:45:67:89:AB&quot;)
17 / 20


# Page. 18

![Page Image](https://bcdn.docswell.com/page/8EDXZDM2JG.jpg)

トラブルシューティング：2台ある場合
もし猫型プリンターを2台持っていたら？
現在の挙動: スキャンして最初に見つかった方に接続します。
解決策: device 引数に MAC アドレスを指定します。
例：特定の個体に固定する
#
run_ble(data, device=&quot;01:23:45:67:89:AB&quot;)
初心者の方は、まずは「1台だけ電源を入れる」のが一番確実です！
18 / 20


# Page. 19

![Page Image](https://bcdn.docswell.com/page/V7PPDXRL78.jpg)

まとめ：Pythonで広がる世界
の壁を越える: Zorin OS 18 Core という最新環境でも、Pythonなら自由自在。
ライブラリの再利用: 優秀な rbaron/catprinter を土台に、自分の「欲しい」を肉付け。
日本語対応の実現: 自分でコードを書くことで、海外製品に日本語機能を付与できた。
OS
見た目かわいい超小型PCプリンターができました
19 / 20


# Page. 20

![Page Image](https://bcdn.docswell.com/page/2JV21LR6JQ.jpg)

ありがとうございました！
Zorin OS
で 楽しい Cat Printer ライフを！
20 / 20


