免責事項:私は現在、SVGからEPLへのトランスパイラーを書いています。これはここにあります。
GW
私は最近同じ問題に直面していて、プリンターに-コマンドを送信することでそれを解決しました。
GK
--- --とGK
の主な違いGM
はGG
、PCXヘッダーを送信せず、生のバイナリデータ(LRE圧縮なしのafaik)を送信することです。
私は次の(最適化されていない/ナイーブな)C#コードを使用しました。これは、ビットシフトを多用します。ただし、アルゴリズムは任意の言語で実装でき、簡単です。
[NotNull]
public IEnumerable<byte> GetRawBinaryData([NotNull] Bitmap bitmap,
int octetts)
{
var height = bitmap.Height;
var width = bitmap.Width;
for (var y = 0;
y < height;
y++)
{
for (var octett = 0;
octett < octetts;
octett++)
{
var value = (int) byte.MaxValue;
for (var i = 0;
i < 8;
i++)
{
var x = octett * 8 + i;
var bitIndex = 7 - i;
if (x < width)
{
var color = bitmap.GetPixel(x,
y);
if (color.A > 0x32
|| color.R > 0x96 && color.G > 0x96 && color.B > 0x96)
{
value &= ~(1 << bitIndex);
}
}
}
yield return (byte) value;
}
}
}
コンバージョンのために覚えておかなければならないこと:
- 1:白い点
- 0:黒い点
width
(バイトを送信しているため)8の倍数である必要があります-上記のコードはパディングによってこれを処理します
- ラベルの回転/向き!
- ここにいくつかのしきい値が実装されています...
私も実装しましたGM
- GG
、しかしこれはこの答えの範囲を超えます。関連するコードはにありますEplCommands.StoreGraphics(bitmap:Bitmap,name:string)
。