gpt4 book ai didi

c# - 如何在不使用 C# 将其设置为默认打印机的情况下直接打印到 zebra 打印机?

转载 作者:太空宇宙 更新时间:2023-11-03 13:40:52 26 4
gpt4 key购买 nike

我是编程新手。

我想直接打印到 Zebra 打印机而不将打印机设置为默认打印机,因为我使用一台连接到多台打印机的计算机,同时请记住我是从网络浏览器获取记录/数据单击打印按钮时

我怎样才能做到这一点?提前致谢。

如果打印机设置为默认值,则以下代码可以正常工作

<%@ Page Language="C#" AutoEventWireup="true"%>
<%@ Import Namespace="System.Data.SqlClient" %>
<%@ Import Namespace="System.IO" %>

<%
System.Web.Script.Serialization.JavaScriptSerializer jsoner = new System.Web.Script.Serialization.JavaScriptSerializer();

string UtiWayBillNumber =Request.QueryString["UtiWayBillNumber"];
string labelSerials = Request.QueryString["labelSerials"] ?? null;
string[] serialNumbers = labelSerials.Split('$');


using (SqlConnection dbConnection = new System.Data.SqlClient.SqlConnection(ConfigurationManager.ConnectionStrings["HestoProductionControl"].ConnectionString))
{
dbConnection.Open();

SqlCommand cmd = dbConnection.CreateCommand();
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.CommandText = "GM_GetShipmentDetailInformation";
cmd.Parameters.AddWithValue("@utiWaybillNumber", UtiWayBillNumber);
SqlDataReader reader = cmd.ExecuteReader();
System.Collections.Generic.List<object> labelList = new List<object>();

string appPath = Request.PhysicalApplicationPath;
string IPAddress = HttpContext.Current.Request.UserHostAddress;

StringBuilder fileContents = new StringBuilder();

while (reader.Read())
{

if (labelSerials.StartsWith(" "))
{
DateTime date = DateTime.Now;
string quantity = reader["PackingQuantity"].ToString();
quantity = quantity.Remove(2,7);


fileContents.Append(reader["HestoBarcodeSerial"]);
fileContents.Append(",");
fileContents.Append(reader["CustomerStockCode"].ToString().Trim());
fileContents.Append(",");
fileContents.Append(quantity);
fileContents.Append(",");
fileContents.Append(reader["Description"].ToString().Trim());
fileContents.Append(",");
fileContents.Append(reader["StockCode"]);
fileContents.Append(",");
fileContents.Append(date.ToString("s"));
fileContents.Append(",");
fileContents.Append(reader["CustomerBarcodeSerial"]);
fileContents.Append("\r\n");
}

else{
DateTime date = DateTime.Now;
string quantity = reader["PackingQuantity"].ToString();
quantity = quantity.Remove(2,7);


if (serialNumbers.Contains<string>(reader["Serial"].ToString()) == false)
{
continue;
}

fileContents.Append(reader["HestoBarcodeSerial"]);
fileContents.Append(",");
fileContents.Append(reader["CustomerStockCode"].ToString().Trim());
fileContents.Append(",");
fileContents.Append(quantity);
fileContents.Append(",");
fileContents.Append(reader["Description"].ToString().Trim());
fileContents.Append(",");
fileContents.Append(reader["StockCode"]);
fileContents.Append(",");
fileContents.Append(date.ToString("s"));
fileContents.Append(",");
fileContents.Append(reader["CustomerBarcodeSerial"]);
fileContents.Append("\r\n");
}

};

Response.Write(fileContents.ToString());

Directory.CreateDirectory(appPath + "//PrintFile/" + IPAddress);
StreamWriter w;

w = File.CreateText(appPath + "//PrintFile/" + IPAddress + "/printLabels.txt");
w.WriteLine(fileContents.ToString());
w.Flush();
w.Close();
}
%>

最佳答案

打印机是否列在您系统的打印机列表中?如果是这样,你可以使用

PrintDocument pd = new PrintDocument();
pd.PrinterSettings.PrinterName = "Zebra Printer";

// Do stuff formatting your document, like drawing strings and images (possibly a zebra?)

if(pd.PrinterSettings.IsValid) pd.Print();
else MessageBox.Show("Printer is invalid.");

注意:我从 this thread 得到了这个在另一个论坛上,但是当我不知道它是否是默认打印机时,我正在使用类似的方法打印到特定打印机。

我刚刚注意到您可能正在使用一个网站。上述方法仅在您要在服务器端使用它以选择默认打印机时才可用。

我不知道这是否可以在客户端完成,但我对此表示怀疑。它会让您的网站访问您客户的计算机,这是一个巨大的安全漏洞。我认为您必须显示一个打印对话框,用户可以在其中选择要使用的打印机。

关于c# - 如何在不使用 C# 将其设置为默认打印机的情况下直接打印到 zebra 打印机?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17083276/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com