使用C#使用PrinterSettings“打开”打印

时间:2014-08-04 13:14:17

标签: c# printing telerik-reporting

我正在尝试使用动态内容打印标签。打印工作正常,但问题是打印本身(字体)扭曲90度。它看起来像这样:

twisted

但它应该是这样的:

correct

我无法更改打印机的设置,因为其他标签打印正确。所以我认为它必须是代码中的东西。您可以在此处观看C#代码:

System.Drawing.Printing.PrinterSettings printerSettings = new System.Drawing.Printing.PrinterSettings();

printerSettings.PrinterName = @"\\server\printer";
printerSettings.Copies = Convert.ToInt16((Convert.ToInt16(row.Cells["Counter"].Value.ToString()) - 1));

System.Drawing.Printing.PrintController standardPrintController = new System.Drawing.Printing.StandardPrintController();

Telerik.Reporting.Processing.ReportProcessor reportProcessor = new Telerik.Reporting.Processing.ReportProcessor();
reportProcessor.PrintController = standardPrintController;
Telerik.Reporting.InstanceReportSource instanceReportSource = new Telerik.Reporting.InstanceReportSource();
instanceReportSource.ReportDocument = myReport;
reportProcessor.PrintReport(instanceReportSource, printerSettings);

有谁知道这样的问题或可能的解决方案?

建议非常感谢:)

1 个答案:

答案 0 :(得分:0)

我曾经遇到过同样的问题,但从未使用过Telerik。我试图用PrintServer对象打印一个XPS文件,并提出了这个解决方案来旋转打印。

基本上我在为用户打印之前更改了队列的页面方向,然后再将其更改回来。

它也可能对您有用。

PrintServer ps = new PrintServer("\\\\somePrintServer");
var queue = ps.GetPrintQueue("printerShareName");
var oldOrientation = queue.UserPrintTicket.PageOrientation;
queue.UserPrintTicket.PageOrientation = PageOrientation.Landscape;
//print job here
queue.UserPrintTicket.PageOrientation = oldOrientation;