2

グラフィックの作成とEPL2プリンターへのアップロードに問題があります。

利用可能なソフトウェアのすべての部分を文字通り疲れさせてインターネットをトロールしたので、私は途方に暮れています。

次のスクリプトでアップロードしようとしている1ビットのファイルがあります。

setppi.txt

GK"NAMEPCX"
GK"NAMEPCX" 
GM"NAMEPCX"3042

次にアップロードします

copy setppi.txt+ppirmt.pcx lpt1/b

髪の毛の残りを引き裂く前に、経験のある人は何かヒントを得ましたか?この問題はpcxの作成に関係しているとほぼ確信していますが、すべてのオプションを試したので、次のステップについては確信が持てません。

4

4 に答える 4

3

PCXを正しく作成するために私が見つけた方法は次のとおりです。

gimpでは、ファイルを1ビット(白黒)BMPとして保存します。保存された形式はプリンタで必要な1ビットPCXではないため、PCXを選択しないでください。

imagemagickの変換プログラムを使用して、BMPをPCXに変換します。

それを理解した後に遭遇したもう1つの問題は、グラフィックがまだ破損していることでした。これはコードページの問題でした。そのため、注意してください。

于 2011-02-21T17:38:44.280 に答える
2

使用しているプログラミング言語については言及していません。

C#(または一般的には.NET)の場合、EPLを使用した画像の印刷に関するブログ投稿
は次のとおりです。EPL2GWコマンドを使用してZebraサーマルプリンターに画像を送信する

また、同じ人からの別のブログ投稿で、C#を使用してEPLをZebraプリンターに印刷することから始めました

于 2013-05-17T17:55:47.653 に答える
1

EPL2言語を使用してPCXグラフィックを出力する方法は2つあります。最初のものはあなたが提案したものです:

GK"namepcx"
GK"namepcx"
GM"namepcx",3042
..... and here follows monochrome PCX data ...
..... with 128-bit header and following pixel data 1 bit-per pixel..

後で、この保存された「namepcx」をGM経由でプリンターのイメージバッファーに書き込むことができるはずですが、PCXの保存を2日間試しましたが、正しく保存されることはありませんでした。そのため、コマンドを使用GWしてピクセルデータをプリンターのイメージバッファーに直接書き込むことになりました。「フラッシュメモリへの保存」を回避します。また、もともとGMを介したこの「フラッシュ」ストレージは、すべてのラベルで繰り返される画像(ロゴなど)を保存することを目的としていました。したがって、一度保存してから、同じロゴのラベルを10000枚印刷することができます。ただし、Javaからプライトする場合は、通常、さまざまなラベルにさまざまな画像を印刷します。したがって、すべてのラベルの新しい画像をフラッシュするために保存すると、フラッシュメモリがすぐに「消耗」します。(例えば。

したがって、GW3ステップを使用する代わりにimagをイメージバッファに直接書き込むことを使用GK GM GGする方が良い解決策のように思われるかもしれません。

于 2013-09-01T14:13:28.460 に答える
0

免責事項:私は現在、SVGからEPLへのトランスパイラーを書いています。これはここにあります。

GW私は最近同じ問題に直面していて、プリンターに-コマンドを送信することでそれを解決しました。

GK--- --とGKの主な違いGMGG、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)

于 2016-05-15T16:51:24.587 に答える