我无法从我的webservice向我的数据库发送或显示带有特殊字符的文本.在我的日食中,我将字符编码设置为UTF-8,但它仍然不允许我显示字符.例如,简单的打印,如下面的代码
String test ="??????";
System.out.println(test);
Run Code Online (Sandbox Code Playgroud)
要么
String test ="??????";
String query = "insert into communication (`test`) VALUES ('"+ test +"');
PreparedStatement preparedStmt1 = con.prepareStatement(query);
preparedStmt1.executeUpdate();
Run Code Online (Sandbox Code Playgroud)
控制台上的结果以及如果我将其发送到我的数据库是??????.如何在控制台上正确显示它并希望在数据库中显示
我有一个应用程序,我需要打印一张票.每张票必须是唯一的.该应用程序是Windows窗体,完全用c#编写.对于我们的应用,我们使用的是三星ML-2525激光单色打印机.
流程基本上如下,操作员选择产品/票据(这是唯一的),然后按下一个按钮,执行以下两项操作:
出于某种原因,每隔一段时间,需要打印的图像不会被发送到打印机.这是一种罕见的情况,但它确实发生了.
我尝试使用Win32_Printer(http://msdn.microsoft.com/en-us/library/Aa394363)连接到打印机,但我无法获得当前打印机的状态(在线,离线,低碳粉,卡纸等).我只能检查打印机是否存在以及纸张尺寸是否正确安装.我尝试了类似以下的代码,但它没有用
private string MonitorPrintJobWmi()
{
var jobMessage = String.Empty;
var scope = new ManagementScope(ManagementPath.DefaultPath);
scope.Connect();
var selectQuery = new SelectQuery { QueryString = @"select * from Win32_PrintJob" };
var objSearcher = new ManagementObjectSearcher(scope, selectQuery);
var objCollection = objSearcher.Get();
foreach (var job in objCollection)
{
if (job != null)
{
jobMessage += String.Format("{0} \r\n", job["Name"].ToString());
jobMessage += String.Format("{0} \r\n", job["JobId"].ToString());
_jobId = Convert.ToInt32(job["JobId"]);
jobMessage += String.Format("{0} \r\n", job["JobStatus"].ToString());
jobMessage += String.Format("{0} \r\n", job["Status"].ToString()); …Run Code Online (Sandbox Code Playgroud) 我需要将文档发送到网络打印机(\ myserver\myprinter).我正在使用System.Printing类进行打印,当它来自Windows服务时它可以正常工作,但是从ASP.NET应用程序中,它只能打印到本地打印机,而不能打印到网络打印机.我得到的错误是"打印机名称无效"这是我用来获取打印机名称:
public string PrinterName
{
using (LocalPrintServer server = new LocalPrintServer())
return server.GetPrintQueue(@"\\myserver\myprinter");
}
Run Code Online (Sandbox Code Playgroud)
我有什么选择?这是权限问题吗?
我有一种感觉,PrintServer.GetPrintQueues方法 不会返回网络打印机.
如果这个是真的,我还有其他选择吗?
我手动将PaperKind转换为PageMediaSizeName,如下所示:
static PageMediaSizeName ConvertPaperKindToPageMediaSize(PaperKind paperKind)
{
switch (paperKind)
{
case PaperKind.Custom:
return PageMediaSizeName.Unknown;
case PaperKind.Letter:
return PageMediaSizeName.NorthAmericaLetter;
case PaperKind.Legal:
return PageMediaSizeName.NorthAmericaLegal;
case PaperKind.A4:
return PageMediaSizeName.ISOA4;
case PaperKind.CSheet:
return PageMediaSizeName.NorthAmericaCSheet;
case PaperKind.DSheet:
return PageMediaSizeName.NorthAmericaDSheet;
case PaperKind.ESheet:
return PageMediaSizeName.NorthAmericaESheet;
case PaperKind.LetterSmall:
throw new NotImplementedException();
case PaperKind.Tabloid:
return PageMediaSizeName.NorthAmericaTabloid;
case PaperKind.Ledger:
throw new NotImplementedException();
case PaperKind.Statement:
return PageMediaSizeName.NorthAmericaStatement;
case PaperKind.Executive:
return PageMediaSizeName.NorthAmericaExecutive;
case PaperKind.A3:
return PageMediaSizeName.ISOA3;
case PaperKind.A4Small:
throw new NotImplementedException();
case PaperKind.A5:
return PageMediaSizeName.ISOA5;
case PaperKind.B4:
return PageMediaSizeName.ISOB4;
case PaperKind.B5:
throw new …Run Code Online (Sandbox Code Playgroud) 我在使用PageSettings.PrintableArea的宽度和高度值时出现问题."宽度","高度"和"大小"属性声称"获取或设置"值.此外,inflate()函数声称根据传入的值更改大小.
但是,所有这些改变价值的尝试都没有奏效.Inflate()被忽略(没有错误,只是传递就像它工作,但值保持不变.
尝试设置高度,宽度或大小会产生编译器错误:"无法修改'System.Drawing.Printing.PageSettings.PrintableArea'的返回值,因为它不是变量".
我觉得这意味着描述的"或设定"部分是谎言.
为什么我想知道这个:(有人总是问...)我有一个打印应用程序(C#,WinForm),对于大多数事情来说工作得相当好.我可以设置打印机设置和页面设置对象来控制打印对话框的打印机属性中显示的内容.但是,使用Microsoft Office Document Image Writer时,这些设置有时会被忽略,即使显示其他内容,纸张大小也会返回0,0.所有我真的希望它是所见即所得到的显示值,所以我将纸张尺寸改回原来应该是,但可打印区域,如果它是错误的,使得结果图像不稳定.生成的图像是可打印区域的大小,而不是paperize中的值.只是想知道是否有理由这样或者不让它做到这一点.
提前致谢.:)
更新:
//ignored
PrintDocument.DefaultPageSettings.PrintableArea.Inflate(XOffset, YOffset);
//causes compiler error
PrintDocument.DefaultPageSettings.PrintableArea.Size = new SizeF((float)DimensionsPaperSize.Width, (float)DimensionsPaperSize.Height);
PrintDocument.DefaultPageSettings.PrintableArea.Height = DimensionsPaperSize.Height;
PrintDocument.DefaultPageSettings.PrintableArea.Width = DimensionsPaperSize.Width;
Run Code Online (Sandbox Code Playgroud)
更新2:
对于正确打印的我(自定义尺寸)打印机,当我更改PaperSize时,PrintableArea和PageBounds会自动更改以匹配它.当我在MDIW上更改PaperSize时,只有PageBounds会发生变化.我不明白是什么造成的.
结论:
Nobugz做了很好的工作,解释了为什么无法设置PrintableArea(并且通常永远不需要)以及为什么忽略inflate()函数,所以我将其标记为答案.
至于促使我提出这个问题的持续性问题,我仍然不知所措.为了响应'ScaleTranform'建议,PaperSize和Graphics对象已经具有正确的值,因此弄乱这些值可能没有帮助.我怀疑我沿着那条路线做的最多就是将我正确大小的图像调整为我为PrintableArea获取的垃圾值.当明确设置PaperSize无法相应地修改PrintableArea时,我将假设它是与bug相关的行为.
令我感到沮丧的是,我似乎是遇到这个问题的唯一人.至少,到目前为止,我只是观察了MODIW的这种行为.对于任何人的参考,所以尽可能多的信息; 我正在运行32位Win7,在VS2008中开发.要复制问题,请执行以下步骤:
PrintDialog PrintDlg = new PrintDialog();
PrintDocument PrintDoc = new PrintDocument();
PrintDoc.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(DocumentPrintPage);
PrintDlg.PrinterSettings.PrinterName = printerName; //MODIW
PrintDoc = AlterPaperSize(PrintDoc); //A function that just changes the papersize
PrintDlg.Document = PrintDoc;
PrintDlg.PrinterSettings = PrintDoc.PrinterSettings;
if (PrintDlg.ShowDialog() == DialogResult.OK)
{
if ((PrintDoc.DefaultPageSettings.PaperSize.Width == 0) &&
(PrintDoc.DefaultPageSettings.PaperSize.Height …Run Code Online (Sandbox Code Playgroud) 有没有办法更新包含在PrintQueue对象中的打印队列状态信息?
我试过在PrintQueue对象上调用Refresh,但这并没有真正做任何事情。例如,我已经关闭了打印机,并且控制面板正确地将打印机显示为“离线”,但是QueueStatus属性以及 IsOffline 属性并未反映这一点 - 无论我在两者上调用 Refresh 多少次有问题的PrintServer和PrintQueue。
我已经看到了如何使用 WMI 查询获取状态信息的示例,但我想知道 - 因为这些属性在PrintQueue对象上可用- 是否有任何方法可以使用这些属性。
我有一个问题,我需要帮助.对于我当前的项目,我需要制作Batch Plot应用程序.该应用程序将有大约约2000个AutoCAD图纸,需要打印.
该应用程序需要5台打印机,每种格式1台,从A4到A0.到目前为止还没有问题.
现在我们都明白,我们不能在没有任何麻烦的情况下同时排队2000张图纸.我在网上进行了研究,找到了查看当前打印机队列的方法.使用PrintServer和PrintQueue.
这是问题开始的地方.首先,我无法找到我需要的网络打印机.打印机位于此网络地址:192.168.0.14(\ vps01w2k8).
遵循MSDN的指南:
PrintServer m_PrintServer = new PrintServer(@"\\vps01w2k8");
PrintQueueCollection m_PrintQueueCollection = m_PrintServer.GetPrintQueues();
foreach (PrintQueue queue in m_PrintQueueCollection)
{
cbPrinters.Items.Add(queue.Name.ToString());
}
这不会给我任何打印机.尝试使用LocalPrintServer(或只是没有传递任何参数的PrintServer).给我本地打印机(显然),而不是我的网络打印机.
我的下一步是找到一种方法来查找我所安装的所有打印机using System.Drawing.Printing;而不是using System.Printing;.
foreach (String printer in System.Drawing.Printing.PrinterSettings.InstalledPrinters)
{
cbPrinters.Items.Add(printer.ToString());
}
这个简单的代码给了我所有的打印机,包括联网打印机.但是,现在我陷入了.NET 2.0和3.0之间(以及之后).PrinterSettings和PrintServer/PrintQueue类没有连接.
最后,我尝试使用WMI方法访问打印机队列.查询给我结果的Win32_PrintJob.不幸的是,这些都伴随着10秒锁定来检索这些结果.
我没有想法.我正在寻找一个修复PrintServer以正确返回我的网络打印机或任何建议使用PrinterSettings类进行批量绘图的类似技术.
提前致谢,
约迪
您好,当我尝试创建对象时遇到此异常printserver。这是我的代码:
PrintServer printServer = new PrintServer(@"\\" + printServerName);
PrintQueue printQueue = printServer.GetPrintQueue(printerName);
Run Code Online (Sandbox Code Playgroud)
我正在尝试从另一台在 Windows Server 2012 上运行的计算机获取打印机。如果我尝试访问某些基于操作系统的系统,相同的代码可以正常工作。任何帮助将不胜感激。提前致谢。
正在尝试在共享打印机上打印文档;我需要获取打印队列详细信息。以下代码始终从“Microsoft XPS 文档”获取队列,因为作业数 = 0。但我的默认打印机配置为“HP LaserJet P1505n”
LocalPrintServer server = new LocalPrintServer()
PrintQueueCollection queueCollection = server.GetPrintQueues();
PrintQueue printQueue = null;
foreach (PrintQueue pq in queueCollection)
{
Logger.LogInfo("PrintQueue1", "Printer1 Queue Name " + pq.FullName);
printQueue = pq;
numberOfJobs = printQueue.NumberOfJobs;
Logger.LogInfo("numberOfJobs1"+ numberOfJobs);
}
Run Code Online (Sandbox Code Playgroud)
如何从该特定共享打印机获取打印队列详细信息?我也试过
PrintServer server = new PrintServer(@"\\192.168.100.168\HP LaserJet P1505n");
Run Code Online (Sandbox Code Playgroud)
但得到错误为:
Win32 错误:文件名、目录名或卷标语法不正确
我在这里缺少什么?
有什么办法可以最大化打印预览对话框吗?
我在属性窗口的控件上看不到任何最大化属性。
我很擅长在C#中打印,并且在打印之前尝试查找特定打印机的当前状态(如果它处于脱机状态,如果它没有纸张等).
LocalPrintServer server = new LocalPrintServer();
PrintQueue printQueue = server.GetPrintQueue("EPSON WF-2540 Series");
MessageBox.Show(printQueue.IsOffline.ToString());
Run Code Online (Sandbox Code Playgroud)
代码确实可以成功找到指定的打印机,但始终将其视为在线.打印机是打开,关闭还是拔下电源并不重要(我使用直接USB连接).有没有人对这可能导致什么有任何想法?提前谢谢,我非常感谢!
我正在尝试使用 C#.NET Visual Studio 2008 暂停 Windows 7 打印队列。我拥有完全管理员权限,但是当我运行以下代码来暂停队列时,它显示访问被拒绝。请帮我。
LocalPrintServer lps = new LocalPrintServer(PrintSystemDesiredAccess.AdministrateServer);
//PrintServer lps = new PrintServer("\\\\NOTEBOOK-CI3", PrintSystemDesiredAccess.AdministratePrinter);
lps.Commit();
PrintQueue queue = lps.GetPrintQueue(listBox1.SelectedItem.ToString());
if (!queue.IsPaused)
queue.Pause();
queue.Commit();
lps.Commit();
Run Code Online (Sandbox Code Playgroud) system.printing ×13
c# ×9
printing ×9
printqueue ×3
.net ×2
vb.net ×2
winforms ×2
wpf ×2
asp.net ×1
c#-2.0 ×1
c#-3.0 ×1
database ×1
java ×1
string ×1
vb.net-2010 ×1