いくつかのラベル プリンター A4 + を使用して、倉庫用に大量のラベルを印刷しています。それぞれが異なるラベルを印刷したいので、印刷ジョブごとに DBF ファイルを作成することにしました。 DBFファイルには多数の異なるレコードが含まれており、WebサービスがA4 +プリンターにftpリクエストを送信し、DBFファイルをプリンターにftpすると、印刷コマンドがプリンターに送信され、DBFファイルが印刷されます。ほとんどの場合、すべての手順が正常に実行されますが、プリンターの DBF ファイルが Web サービスで作成された dbf ファイルとほとんど異なる場合があり、違いはファイルのヘッダーにあり、この違いが問題の原因となります。プリンターはラベルを印刷しますが、DBF ファイルの最後までは印刷しません。たとえば、DBF ファイルに 500 レコードが含まれている場合、
Web サービスをホストするサーバー上の DBF ファイル (これは dbf ファイルを作成する場所です) とプリンター上の ftp ファイルの両方を比較します。それらは同じですが、ファイルのヘッダーのほんの少しが異なり、それによって作成されます。この問題。
DBFファイルを作成するコードと、このファイルをプリンターにftpするために使用するコードを含め、サンプル用に両方のDBFファイルを添付します。
私たちのチームはプロジェクトに取り組んでおり、あなたの Web サイトのヘルプを調査していますが、この時点ですべてが問題なく、このケースをデバッグできなかったことがわかります。おそらく、これを解決するのを手伝ってくれるでしょう.
------------------------DBFファイルの作成 ----------------------- -------------------------------
private bool EportDBF(string filePath, List<BarcodeData> list)
{
string tableName = string.Empty;
string folderPath = string.Empty;
GetFileNameAndPath(filePath, ref tableName, ref folderPath);
string connString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + folderPath + "; Extended Properties=DBASE IV;";
string createStatement = "Create Table " + tableName + " ( ";
string insertStatement = "Insert Into " + tableName + " Values ( ";
string insertTemp = string.Empty;
OleDbConnection conn = new OleDbConnection(connString);
try
{
createStatement += "[RW] varchar(4), ";
createStatement += "[CODE] varchar(16), ";
createStatement += "[DESC] varchar(16), ";
createStatement += "[WEIGHT] varchar(16), ";
createStatement += "[DATE] varchar(32), ";
createStatement += "[RCODE] varchar(16), ";
createStatement += "[BCODE] varchar(16) )";
conn.Open();
DataSet dsFill = new DataSet();
OleDbDataAdapter daInsertTable = new OleDbDataAdapter(createStatement, conn);
daInsertTable.Fill(dsFill);
int row = 1001;
foreach (var item in list)
{
insertTemp = insertStatement;
insertTemp += "'" + row++ + "' , ";
insertTemp += "'" + item.ItemCode + "' , ";
insertTemp += "'0' , ";
insertTemp += "'" + item.Weight + "' , ";
insertTemp += "'" + item.DateTime + "' , ";
insertTemp += "'" + item.ReferenceCode + "' , ";
insertTemp += "'" + item.Barcode.ToString() + "' ) ;";
daInsertTable = new OleDbDataAdapter(insertTemp, conn);
daInsertTable.Fill(dsFill);
}
conn.Close();
conn.Dispose();
}
catch (Exception ex)
{
conn.Close();
conn.Dispose();
return false;
}
return true;
}
------------------------DBFファイルをプリンターにFTPで転送--------------------- ----------------------
private bool UpLoadDBF(List<BarcodeData> barcodeDatas, string path)
{
try
{
EportDBF(path, barcodeDatas);
FtpWebRequest request;
FtpWebResponse response;
Stream sourceStream = new MemoryStream();
Stream requestStream = sourceStream;
StreamReader reader = new StreamReader(path);
try
{
request = (FtpWebRequest)WebRequest.Create("ftp://" + printerIP + "/card/barcodes.dbf");
request.Method = WebRequestMethods.Ftp.UploadFile;
request.KeepAlive = false;
request.Credentials = new NetworkCredential(user, password);
byte[] byteArray = Encoding.Default.GetBytes(reader.ReadToEnd());
sourceStream = new MemoryStream(byteArray);
try
{
requestStream = request.GetRequestStream();
}
finally
{
request.ContentLength = sourceStream.Length;
byte[] buffer = new byte[sourceStream.Length];
int count = 2048;
if (sourceStream.Length < count)
count = (int) sourceStream.Length;
int bytesRead = sourceStream.Read(buffer, 0, count);
do
{
requestStream.Write(buffer, 0, bytesRead);
bytesRead = sourceStream.Read(buffer, 0, count);
} while (bytesRead > 0);
sourceStream.Close();
requestStream.Close();
}
}
catch (Exception ex)
{
}
finally
{
request = null;
sourceStream.Close();
sourceStream.Dispose();
reader.Close();
reader.Dispose();
requestStream.Close();
requestStream.Dispose();
}
}
catch (Exception ex)
{
return false;
}
return true;
}
よろしくお願いします