【发布时间】:2016-02-10 13:44:36
【问题描述】:
希望一些有经验的 WPF 开发人员以前遇到过这个问题。
背景:此信息可能不是帮助解决问题所必需的,但如果它是相关的。 我的解决方案包括三个项目。前端 GUI、业务逻辑服务和打印机服务。这三个项目通过命名管道进行 IPC。业务逻辑将标签类型和托盘 ID 交给打印逻辑。
问题: 然后打印逻辑创建标签并打印它(通过将其添加到打印机的打印队列中)正如标题所示,当我在 Visual Studio 中调试时,这一切正常.但是,当我在我的开发人员电脑上部署/安装服务 时,它无法正常工作。
更新:它没有抛出异常,但我只记录“关于将文档发送到打印机”而不是“将文档发送到打印机”行,所以它挂在 dw1.Write(fixedDoc);线
更多信息:我在打印项目/visual studio 2013 中使用 .Net 4.0
public void printLabel(string labelType, string _palletID = null)
{
try
{
ILabelTemplate Label = createLabel(labelType, _palletID);
PrintDialog pd = new PrintDialog();
FixedDocument fixedDoc = new FixedDocument();
PageContent pageContent = new PageContent();
FixedPage fixedPage = getFixedPage();
fixedDoc.DocumentPaginator.PageSize = new System.Windows.Size(fixedPage.Width, fixedPage.Height);
IXamlTemplate vm = CreateViewModel(Label);
ILabelPrintDocument template = CreateTemplate(Label);
template.dockPanel.DataContext = vm;
template.dockPanel.Height = fixedPage.Height;
template.dockPanel.Width = fixedPage.Width;
template.dockPanel.UpdateLayout();
fixedPage.Children.Add(template.dockPanel);
((System.Windows.Markup.IAddChild)pageContent).AddChild(fixedPage);
fixedDoc.Pages.Add(pageContent);
XpsDocumentWriter dw1 = PrintQueue.CreateXpsDocumentWriter(new System.Printing.PrintQueue(new System.Printing.PrintServer(), Label.PrinterName));
Library.WriteErrorLog("About to send doc to printer");
dw1.Write(fixedDoc);
Library.WriteErrorLog("Sent doc to printer");
}
catch (Exception ex)
{
Library.WriteErrorLog(ex);
}
【问题讨论】: