見出し画像

brother P-TOUCH Editor のファイルを解析

brother の P-TOUCH CUBE というラベルプリンターがあります。ラベルプリンターと聞いてもパッとイメージしにくいかもしれませんがいわゆる(ライバル社製品ですが)テプラのことです。


画像1

家庭やオフィスでは KING GIM のテプラがよく使われていますが、brother が類似の製品として P-TOUCH (ピータッチ)というシリーズを展開しています。そうは言っても、KING GIM の初代テプラの中身は P-TOUCH でした(いわゆる OEM)から、テプラの本家(中身?)と思って頂ければよいかと思います。(いまのテプラはエプソンが作ってるらしいです)


画像2

テプラが本体ですべての編集を行って印刷までスタンドアロンで操作できるのに比べて、P-TOUCH はスマホやパソコンとつないでアプリケーションで内容を作成し、そのデータを P-TOUCH に送り込んで印刷します。

2021年現在、スマホのアプリケーションは「Design & Print 2」、パソコンのアプリケーションは「P-TOUCH Editor 5.4」が使われています。どちらでも同じフォーマットのファイルを取り扱うことができます。

Design & Print 2 はアプリストアからダウンロードできますが、P-TOUCH Editor は P-TOUCH本体ユーザ専用のアプリケーションのためダウンロードの際には製造番号の入力が必要です。この手のアプリケーションは、製品購入前に操作性を確かめたい人も居ると思うので試用も含めて使えるようにしてもらったほうが良いと思います。いかがですか、ブラザーさん。

さて、ここからが本題です。P-TOUCH Editor 5.4(以下、Design & Print 2 での操作も含む)でデザインを作ると、その内容をファイルに保存しておいてあとから呼び出すことができます。また、ファイルを共有することで同じデザインを他のユーザに使ってもらうことができます。

この P-TOUCH Editor 5.4 で保存されるファイルのフォーマットが、拡張子 .lbx形式という独自フォーマットのため、P-TOUCH Editor 5.4、もしくは Design & Print 2 が無いと作成することはもちろん、閲覧することもできません。一応、brother が開発者向けに公開している b-PAC という SDK を使うと Microsoft Office のマクロや、Visual BASIC などの開発環境から取り扱うことはできますが、あくまでファイルのフォーマットは非公開なので使用にあたっては b-PAC に依存することになります。

このままだと独自開発のアプリケーションで取り扱うには不便なので、P-TOUCH .lbx形式(以下、レイアウトファイルlbx形式と呼びます)の内容を解析し、編集、作成できるようにすることが本記事の目的です。

なお本記事の内容は独自に解析を試みるものであり、brother、ブラザー工業株式会社は一切関係ありませんので、本記事の内容に関する問い合わせなどは行わないようにお願いします。また、本記事の内容を元に作ったファイルを使用して、P-TOUCH 本体になんらかのトラブルが発生しても、その責は負いかねますので重ねてご注意ください。(定型文ですが、念のために書いておきます)

蛇足ですが、純正ソフトウェアである P-TOUCH Editor のライセンスによりソフトウェアの一部をリバースエンジニア、逆アセンブル、逆コンパイルすることは禁止されおり、このような行為は行っておりません。あくまで、生成されるレイアウトファイルlbx形式のフォーマットを解析しています。


画像3

これが brother P-TOUCH Editor 5.4 を立ち上げた状態です。機能を制限したExpressモードと、すべての機能にアクセスできる Professionalモードがありますが、Professionalモードを使用します。

P-TOUCH Editor は接続した P-TOUCH の設定情報を読み込んで、ラベル幅などを自動で反映します。いま、接続中の P-TOUCH CUBE(PT-P910BT)に 18mm のラベルカートリッジを取り付けているので、アプリケーションの作成画面も 18mm になっています。これは任意に変えることができます。


画像4

24mm のカートリッジを取り付け、2つのテキストを配置します。それぞれ、BIZ UDゴシック、14pt で「test」と「12345」という内容です。

これを、レイアウトファイルlbx形式で保存します。


画像5

「text.lbx」というファイル名で保存しました。このファイルの内容をバイナリエディタで確認します。


画像6

Windows の PowerShell を立ち上げ、format-hex でファイルの中身を 16進数として表示します。

ファイルの先頭 2bytes が、「PK」(0x50 4B)になっています。これは、zipファイルの先頭と同じです。試しに、ファイルの拡張子を zip に変えてアーカイバ(7-Zip)で展開してみます。


画像7

「text.lbx」をコピーして「text_lbx.zip」というファイル名に変更します。


画像8


7-Zip で「ここに展開」します。


画像9

「label.xml」と「prop.xml」という 2つの XML ファイルが展開されました。

まず、「prop.xml」の中身を確認してみましょう。


画像10

Google Chrome で開いたところです。名前の通り、プロパティ情報が入っているファイルのようです。作成者の名前(dc:creator)、作成時間(dcterms:created)、最終編集時間(dcterns:modified)といった情報が記載れているのがわかります。

次に、「label.xml」も開いてみます。


画像11

今度はさきほどより多くのデータが入っていますが、書かれている内容は読んでいけばわかります。

まず、ヘッダ部分です。


<pt:document xmlns:pt="http://schemas.brother.info/ptouch/2007/lbx/main" xmlns:style="http://schemas.brother.info/ptouch/2007/lbx/style" xmlns:text="http://schemas.brother.info/ptouch/2007/lbx/text" xmlns:draw="http://schemas.brother.info/ptouch/2007/lbx/draw" xmlns:image="http://schemas.brother.info/ptouch/2007/lbx/image" xmlns:barcode="http://schemas.brother.info/ptouch/2007/lbx/barcode" xmlns:database="http://schemas.brother.info/ptouch/2007/lbx/database" xmlns:table="http://schemas.brother.info/ptouch/2007/lbx/table" xmlns:cable="http://schemas.brother.info/ptouch/2007/lbx/cable" version="1.7" generator="P-touch Editor 5.4.001 Windows">
    <pt:body currentSheet="シート1" direction="LTR">
        <style:sheet name="シート1">
        <style:paper media="0" width="68pt" height="2834.6pt" marginLeft="2pt" marginTop="2.8pt" marginRight="2pt" marginBottom="2.8pt" orientation="landscape" autoLength="true" monochromeDisplay="true" printColorDisplay="false" printColorsID="0" paperColor="#FFFFFF" paperInk="#000000" split="1" format="261" backgroundTheme="0" printerID="30768" printerName="Brother PT-P910BT (Bluetooth)"/>
        <style:cutLine regularCut="0pt" freeCut=""/>
        <style:backGround x="2.8pt" y="2pt" width="65.8pt" height="64pt" brushStyle="NULL" brushId="0" userPattern="NONE" userPatternId="0" color="#000000" printColorNumber="1" backColor="#FFFFFF" backPrintColorNumber="0"/>

ここはスキーマやスタイルシートです。詳細は割愛します。styke:paper の width="68pt" のところは、24mm のテープ幅を示しています。24mm = 0.945inch = 68pt(72dpi)です。

objectタグで始まるところがコンテンツの内容です。今回、「test」と「12345」という 2つのオブジェクトを配置したので、2箇所に別れて記載されています。


<text:text>

    <pt:objectStyle x="10.8pt" y="18pt" width="28.8pt" height="14pt" backColor="#FFFFFF" backPrintColorNumber="0" ropMode="COPYPEN" angle="0" anchor="TOPLEFT" flip="NONE">
        <pt:pen style="NULL" widthX="0.5pt" widthY="0.5pt" color="#000000" printColorNumber="1"/>
        <pt:brush style="NULL" color="#000000" printColorNumber="1" id="0"/>
        <pt:expanded objectName="テキスト1" ID="0" lock="0" templateMergeTarget="LABELLIST" templateMergeType="NONE" templateMergeID="0" linkStatus="NONE" linkID="0"/>
    </pt:objectStyle>

    <text:ptFontInfo>
        <text:logFont name="BIZ UDゴシック" width="0" italic="false" weight="700" charSet="128" pitchAndFamily="49"/>
        <text:fontExt effect="NOEFFECT" underline="0" strikeout="0" size="14pt" orgSize="28.8pt" textColor="#000000" textPrintColorNumber="1"/>
    </text:ptFontInfo>

    <text:textControl control="FREE" clipFrame="false" aspectNormal="false" shrink="false" autoLF="false" avoidImage="false"/>
    <text:textAlign horizontalAlignment="JUSTIFY" verticalAlignment="TOP" inLineAlignment="BASELINE"/>
    <text:textStyle vertical="false" nullBlock="false" charSpace="0" lineSpace="40" orgPoint="14pt" combinedChars="false"/>

    <pt:data>test</pt:data>

    <text:stringItem charLen="4">

        <text:ptFontInfo>
            <text:logFont name="BIZ UDゴシック" width="0" italic="false" weight="700" charSet="128" pitchAndFamily="49"/>
            <text:fontExt effect="NOEFFECT" underline="0" strikeout="0" size="14pt" orgSize="28.8pt" textColor="#000000" textPrintColorNumber="1"/>
        </text:ptFontInfo>

    </text:stringItem>
</text:text>


適宜、改行を入れています。細かい説明は割愛しますが、フォントの設定が行われて、内容として pt:data タグ内に書かれている、「test」の文字が配置されていることがわかります。

同じく、2つ目のオブジェクトを見てみると、


<text:text>
   
    <pt:objectStyle x="24.8pt" y="43pt" width="35.8pt" height="14pt" backColor="#FFFFFF" backPrintColorNumber="0" ropMode="COPYPEN" angle="0" anchor="TOPLEFT" flip="NONE">
        <pt:pen style="NULL" widthX="0.5pt" widthY="0.5pt" color="#000000" printColorNumber="1"/>
        <pt:brush style="NULL" color="#000000" printColorNumber="1" id="0"/>
        <pt:expanded objectName="テキスト2" ID="0" lock="0" templateMergeTarget="LABELLIST" templateMergeType="NONE" templateMergeID="0" linkStatus="NONE" linkID="0"/>
    </pt:objectStyle>
    
    <text:ptFontInfo>
        <text:logFont name="BIZ UDゴシック" width="0" italic="false" weight="700" charSet="128" pitchAndFamily="49"/>
        <text:fontExt effect="NOEFFECT" underline="0" strikeout="0" size="14pt" orgSize="28.8pt" textColor="#000000" textPrintColorNumber="1"/>
    </text:ptFontInfo>
    
    <text:textControl control="FREE" clipFrame="false" aspectNormal="false" shrink="false" autoLF="false" avoidImage="false"/>
    <text:textAlign horizontalAlignment="JUSTIFY" verticalAlignment="TOP" inLineAlignment="BASELINE"/>
    <text:textStyle vertical="false" nullBlock="false" charSpace="0" lineSpace="40" orgPoint="14pt" combinedChars="false"/>
    
    <pt:data>12345</pt:data>
    
    <text:stringItem charLen="5">
   
        <text:ptFontInfo>
            <text:logFont name="BIZ UDゴシック" width="0" italic="false" weight="700" charSet="128" pitchAndFamily="49"/>
            <text:fontExt effect="NOEFFECT" underline="0" strikeout="0" size="14pt" orgSize="28.8pt" textColor="#000000" textPrintColorNumber="1"/>
        </text:ptFontInfo>
   
    </text:stringItem>
</text:text>

内容はほぼ同じですね。位置の情報などが違っていることがわかります。


あとは、この内容を好きな文字列、好きなレイアウトに書き換えて保存し、「label.xml」と「prop.xml」を zipアーカイバで固めて、拡張子を .lbx に変更してやれば、P-TOUCH Editor で開くことができそうです。

試しに、「test」の中身を書き換えてみましょう。


画像12

「test」と書かれたデータ部を「p-touch editor .lbx format解析」に変更し、text:stringItem charLen(文字列の長さのプロパティ)を、「4」から「28」に変更します。

作ったファイルを P-TOUCH Editor 5.4 で開いたところ、問題なく開けています。印刷もやってみましょう。


画像13


画像14

ちゃんと印刷もできました。


続きます

以上、無料公開の内容で全てです。投げ銭用として有料設定していますが、課金しても内容はまったく同じです。

ここから先は

11字

¥ 100

この記事が気に入ったらサポートをしてみませんか?