WPF ActiveReports打印不能在同一页上
设置在5cm*3cm的打印纸上打印,打印出来会自动在两页上显示。本帖最后由 Felix.Li 于 2023-8-11 11:34 编辑
如果代码设置这些都无效,就还是怀疑是不是打印机有什么设置,您可以参考如下截图:
您预览的时候两边是没有边距的,但是实际打印出来,两边多了很多边距。而且看您打印的方向。应该也是对的,其实就是横向打印的。
横向的字体处于宽的那边。但是问题就是出在了两边莫名其妙多出来的边距。我猜测是不是咱们有什么打印机设置。打印机设置带了边距
也就是两侧纸张边距是多少多少,导致最终打印的时候执行了这个边距,导致预览和打印的不一样
类似这种打印机首选项导致的:
您好,下载了您的报表文件,使用桌面设计器未复现出来,看您给报表设置的边距是0但是根据您上传的图片看左边距好像不是0,您检查一下是不是代码中设置了左边距。
Bella.Yuan 发表于 2023-8-8 16:48
您好,下载了您的报表文件,使用桌面设计器未复现出来,看您给报表设置的边距是0但是根据您上传的图片看左 ...
代码中没有设置边距。
只要是宽大于高就自动转成横向了,有强制纵向打印的设置没。
本帖最后由 Felix.Li 于 2023-8-11 09:20 编辑
waha 发表于 2023-8-11 08:59
代码中没有设置边距。
只要是宽大于高就自动转成横向了,有强制纵向打印的设置没。
看您的截图,感觉有是有边距,但是您的报表没有设置边距,而且看着字体大小也不太对,
您先预览一下或者导出一个pdf,看一下效果:
其次关于您提到的,我们其实没有办法直接控制强制横纵向,这种一般都是打印机控制的。不过倒是可以代码控制纸张横向纵向:
您可以试一下:
pageReport.Report.PaperOrientation = PaperOrientation.Landscape; 或者;
pageReport.Report.PaperOrientation = PaperOrientation.Protrait;
其次或者开启自动旋转试一下:
var settings = new PrinterSettings(pageReport.Report);
settings.PrintOptions.AutoRotate = true;
pageReport.Document.Print(settings)
Eden.Sun 发表于 2023-8-11 09:14
看您的截图,感觉有是有边距,但是您的报表没有设置边距,而且看着字体大小也不太对,
您先预览一下或 ...
预览看着正常。代码中也没设置什么边距。
打印代码:
/// <summary>
/// 多参数指定打印机名打印
/// </summary>
/// <param name="reportFilePath">报表文件路径</param>
/// <param name="reportJsons">Json数据</param>
/// <param name="printerName">打印机名</param>
static public void NowPrint(string reportFilePath, List<string> reportJsons, string printerName)
{
PageReport pageReport = new PageReport(new FileInfo(reportFilePath));
PageDocument pageDocument = new PageDocument(pageReport);
for (int i = 0; i < reportJsons.Count; i++)
{
pageReport.Report.DataSources.ConnectionProperties.ConnectString = "jsondata=" + reportJsons;
}
pageDocument.Printer.PrinterName = printerName;
Viewer viewer = new Viewer();
viewer.LoadCompleted += view_LoadCompleted;
viewer.LoadDocument(pageDocument);
}
#endregion
#region 加载完报表文件直接打印
static private void view_LoadCompleted(object sender, EventArgs e)
{
((Viewer)sender).Print(false, false, true);
}
#endregion
waha 发表于 2023-8-11 09:24
预览看着正常。代码中也没设置什么边距。
您好,您有尝试使用上面版主回复您的2种方法吗?方法1:控制纸张横向和纵向;方法2:开启纸张自动旋转。 Bella.Yuan 发表于 2023-8-11 09:58
您好,您有尝试使用上面版主回复您的2种方法吗?方法1:控制纸张横向和纵向;方法2:开启纸张自动旋转。
试了,不行。 waha 发表于 2023-8-11 10:46
试了,不行。
您好,如果上面的2种方法均设置无效,建议您修改一下报表的宽高,按对应的标签大小进行打印。查看了您的报表,报表的纸张是宽3高5,页面1的纸张是宽4.8高2.8,您可以依据报表的纸张大小去调整对应的页面大小,同时也需要跳转组件的位置,让组件可以全部放置在页面上。按您提供的图片您应该是要纵向打印报表到标签上,,您修改一下尺寸和组件,在打印看看效果。
页:
[1]