WPF赢得';大部分时间都不打印
本文关键字:时间 打印 大部分 赢得 WPF | 更新日期: 2023-09-27 18:24:26
我是WPF的初学者,在打印方面遇到了这个问题。我使用以下代码:
public static void PrintImageFile(string ImagePath, int ImageCopyCount, PageOrientation ImagePageOrientation = PageOrientation.Unknown, PrintQueue Printer = null, string PrintingName = "")
{
PrintDialog printDialog = SetPrintDialog(ImageCopyCount, ImagePageOrientation, Printer);
BitmapImage imageToPrint = BitmapImageFromPath(ImagePath);
PrintCapabilities capabilities = printDialog.PrintQueue.GetPrintCapabilities(printDialog.PrintTicket);
Size size = new Size(capabilities.PageImageableArea.ExtentWidth, capabilities.PageImageableArea.ExtentHeight);
DrawingVisual drawingVisualToPrint = BitmapImageToDrawingVisual(imageToPrint, size);
try
{
printDialog.PrintVisual(drawingVisualToPrint, PrintingName);
}
catch (Exception e)
{
Info("Error in PrintImageFile : " + e.Message);
}
}
问题是它大部分时间都不会打印。在这些情况下,打印作业会短暂显示在打印机的打印作业列表中,然后消失。没有任何类型的错误消息,程序的行为就像从未执行过PrintVisual一样。不过,在6-7次打印中,大约有1次打印与预期完全一样。。。
否则打印机工作正常。
我花了很多时间试图理解这一点,但我还没有看到任何人有同样的问题。谢谢
我已经找到了导致这种行为的原因。
它是由程序作为管理员自动执行所使用的清单引起的。记不清我是从哪里得到的,但它在这里:
<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
</requestedPrivileges>
</security>
</trustInfo>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
</application>
</compatibility>
</asmv1:assembly>
我确信这就是原因,我做了不同的测试项目。一旦我删除项目属性中的清单(在"应用程序"下),打印就会按预期进行。
不过仍然需要以管理员身份执行程序。
有人对这类问题有任何经验吗?
(我在windows 7下运行调试器)