2016-08-04 21 views
3

クライアントは、すべてのオフィス機器のバーコードラベルを印刷してさまざまな方法でそれらを追跡するインベントリソリューションを構築するよう依頼しました。不規則な線でのバーコード印刷

彼らは、私がテストに与えた非標準ラベルにすべてを印刷して合わせるようにドライバを設定した後、テストに、そして悪夢の後にCitizen CL-S621プリンタ(203x203 dpi解像度)私がまだ実行している問題は、プリンタが直線でいくつかのバーを印刷するのに問題があり、代わりにそれらを破線/点線の形で印刷するということです。

以下のC#コードは、私はバーコードusing this libraryを構築する方法の基本を示しています

public void CreateTheBarcode(string StringToEncode) 
{ 
    Barcode b = new Barcode(); 
    b.LabelFont = new Font("Sample Bar Code Font", 24, FontStyle.Bold); 
    b.IncludeLabel = true; 
    b.Encode(BarcodeLib.TYPE.CODE128, StringToEncode, Color.Black, Color.White, 730, 140); 
    b.SaveImage(@"C:\temp\Barcodes\"+StringToEncode+".png",SaveTypes.PNG); 
    Print(@"C:\temp\Barcodes\"+StringToEncode+".png"); 
} 

public static void Print(string FilePath) 
{ 
    Process printJob = new Process(); 
    printJob.StartInfo.FileName = FilePath; 
    printJob.StartInfo.UseShellExecute = true; 
    printJob.StartInfo.Verb = "printto"; 
    printJob.StartInfo.CreateNoWindow = false; 
    printJob.StartInfo.WindowStyle = ProcessWindowStyle.Normal; 
    printJob.StartInfo.Arguments = "\"" + "Citizen CL-S621" + "\""; 
    printJob.StartInfo.WorkingDirectory = Path.GetDirectoryName(FilePath); 
    printJob.Start(); 
} 

ハードコードされた幅と高さは、私は、プリンタが受け入れると正確に印刷し、良好な画像サイズで発見された最良近似していますラベルは、ルーラーでサイズを測定しなければならなかったので、プリンタのオフセットと目の測定の精度の問題から、サイズが問題になっていました。

は、いずれにせよ、私はいくつかのバーコードと画像を生成し、くっきりはっきりしているし、かなり良いようだ:行はストレートと明確に定義されている

All images are to scale. I joined them into a single file for ease. I'm not sure why some barcodes are narrower than others

、テキストはシャープで、すべてが正常に思えます。 しかし、私はそれらを印刷するために行くとき、私は得る:いくつかは、不規則なエッジを持っているし、いくつかは、単に不規則なドット/スラッシュ/湾曲パターンでありながら

They print out of order for some reason, I suspect the printer has some sort of optimizer that arranges them so

はバーの中には、ストレートとクリア印刷。すべてのテキストに同じ問題があります。私はさまざまなフォントサイズとおそらくバーコードフレンドリーなフォントを試していますが、問題は解決しません。テキストラベルを削除すると問題は解決しません。

私は画像ラスタライズの問題として私を襲ってきますが、私は完全にはわかりませんし、それを修正する方法もわかりません。

スキャナがこれらを読み取ることができるかどうかはまだ分かりませんが、明日は受信しますが、間違っている可能性のあるヒントがあれば幸いです。

+0

既存のソフトウェアを使用してバーコードを印刷しようとしましたか? –

+0

私はSeagull Scientificの "BarTender"を使って1つのテストを成功させました。また、テキストも鮮明に印刷されています。 BTは、商用ライセンスと、それだけでは基本的なものを印刷するための高価なものを許可しています。 – ConnorU

答えて

2

プリンタが画像をアンチエイリアスしています。これはバーコードフォントの特有の問題です。プリンターをアンチエイリアスにしないように設定するか(設定/プリンター/印刷設定/カラーモード/モノクロを試してください)、イメージDPIをプリンターDPI(通常は300 DPI)と同じに設定する必要があります。

プリンタがDPIではなく長方形にレンダリングする場合は、イメージピクセルが同じ矩形のプリンタピクセルの整数倍になるようにイメージのサイズを設定する必要があります。

可動部品が多すぎるため問題の解決方法を提案することは困難です。あなたはプリンタに行くことについて私たちに話していないアプリケーションに行くシェルコマンドに行くファイルに行くイメージに行くフォントから始めます。これらのステップのいずれかがイメージのアンチエイリアスになります。

私の提案は、これらの中間部品を削除することです。 CreateTheBarcodeとは何ですか?あなたが書いたアプリケーションですか?そのアプリケーションを.NET System.Drawing.Printing.PrintDocumentを使用してプリンタに直接印刷してみてください。あなたはそれを行うことはできませんと謎のアプリケーションUseShellExecuteを使用する必要がありますか?そのアプリケーションを調べてみてください。多分、あなたは、そのフォントをすべて画像化してファイルrigamaroleに送るのではなく、プリンタコマンドを送ることができる方法があります。多くのラベルプリンタには、 "test 123"のようなテキストをバーコードとして直接出力する方法があります。

編集:あなたがしようとしているのは、たぶんフラットアウトが不可能なことでしょう。印刷しているラベルの寸法は?あなたの「More numbers」の例は500 px以上で、プリンタはたった200 DPIです。ラベルが500/200≅2.5インチより狭い場合は、203 DPIで印刷してもバーが収まる方法はありません。

+0

モノクロの設定を試してみましたが、それは役に立たなかった。私もテキストラベル(バーコードだけ)を使わずに印刷を試みました。問題は残っていたので、アンチエイリアスは起こりそうにありません。 プリンタのDPIは203x203です。私はオンラインのdpi-ppi計算機を使って、その印刷解像度でのラベルの測定に必要な適切なピクセル幅x長さの値を近似し、結果を改善するためにそれらを調整したが問題は改善しなかった。 – ConnorU

+1

@Connor、バーコードフォントは、バーコード、これらの垂直線を文字として表示するので、テキストラベルを削除しても効果はありません。ほとんどのプリンタは、フォントをアンチエイリアスでレンダリングします。これは、縦棒に起こっていることです。ほとんどのプリンタは、アンチエイリアス機能を備えたさまざまなDPIでイメージをレンダリングします。プリンタにアクセスしないと、バーコードに何がアンチエイリアスされているのかわかりません。これを「近似」することはできません。プリンタDPIの正確な倍数で印刷する必要があります。 –

+0

@Doug Oh!私は理解していなかった。私は自分のプリンタのDPIが203であることを知っています。イメージの解像度に使用する正確な倍数を知るためにこれをどのように使用すればよいですか? – ConnorU

関連する問題