我正在尝试从 WPF 应用程序进行打印,但很难设置默认页面大小。
我要打印的内容应该是在 C5 大小的信封上,这里的大多数打印机默认使用 A4 纸。
我想向用户显示一个对话框,允许他们选择要使用的打印机 - 但如果他们只是按“确定”接受默认打印机,则默认为 A4 纸。
如何将作业的打印默认设置为 C5 信封?
我仍然可以提示用户输入打印机吗?
private void PrintVisual_Sized(UIElement toPrint)
{
PrintDialog dlg = new PrintDialog();
PrintQueue queue = dlg.PrintQueue;
// Get C5 page size if possible from printer
var availPageSizes = queue.GetPrintCapabilities().PageMediaSizeCapability;
PageMediaSize pageSize = Utilities.GetPageSize(availPageSizes, PageMediaSizeName.ISOC5Envelope);
if (pageSize != null)
{
PrintTicket ticket = new PrintTicket
{
PageMediaSize = pageSize,
InputBin = InputBin.AutoSelect,
CopyCount = 1
};
dlg.UserPageRangeEnabled = false;
var result = dlg.PrintQueue.MergeAndValidatePrintTicket(dlg.PrintTicket, ticket);
Debug.Print(result.ConflictStatus.ToString());
// Try to get the page size honoured by someone!!!
dlg.PrintQueue.DefaultPrintTicket = result.ValidatedPrintTicket;
dlg.PrintQueue.UserPrintTicket = result.ValidatedPrintTicket;
dlg.PrintTicket = result.ValidatedPrintTicket;
// Height still seems to be A4 sized!?
Debug.Print("Height: " + dlg.PrintableAreaHeight);
}
// Ask user which printer they want...
if (dlg.ShowDialog().GetValueOrDefault(false))
{
Size printSize = new Size(dlg.PrintableAreaWidth, dlg.PrintableAreaHeight);
toPrint.Measure(printSize);
toPrint.Arrange(new Rect(new Point(), printSize));
toPrint.UpdateLayout();
dlg.PrintVisual(toPrint, "My Print Job");
}
}
Run Code Online (Sandbox Code Playgroud)
最后一部分printSize
是 A4,除非用户手动选择其他纸张尺寸。
有没有办法显示带有非默认页面大小预设的对话框?
归档时间: |
|
查看次数: |
3619 次 |
最近记录: |