找回密码
 立即注册

QQ登录

只需一步,快速开始

waha
金牌服务用户   /  发表于:2023-8-8 15:23  /   查看:2828  /  回复:8
1金币
设置在5cm*3cm的打印纸上打印,打印出来会自动在两页上显示。


附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

最佳答案

查看完整内容

如果代码设置这些都无效,就还是怀疑是不是打印机有什么设置,您可以参考如下截图: 您预览的时候两边是没有边距的,但是实际打印出来,两边多了很多边距。而且看您打印的方向。应该也是对的,其实就是横向打印的。 横向的字体处于宽的那边。但是问题就是出在了两边莫名其妙多出来的边距。我猜测是不是咱们有什么打印机设置。打印机设置带了边距 也就是两侧纸张边距是多少多少,导致最终打印的时候执行了这个边距,导致预览 ...

8 个回复

正序浏览
Bella.YuanWyn认证
超级版主   /  发表于:2023-8-11 11:29:23
9#

您好,如果上面的2种方法均设置无效,建议您修改一下报表的宽高,按对应的标签大小进行打印。查看了您的报表,报表的纸张是宽3高5,页面1的纸张是宽4.8高2.8,您可以依据报表的纸张大小去调整对应的页面大小,同时也需要跳转组件的位置,让组件可以全部放置在页面上。按您提供的图片您应该是要纵向打印报表到标签上,,您修改一下尺寸和组件,在打印看看效果。
回复 使用道具 举报
waha
金牌服务用户   /  发表于:2023-8-11 10:46:49
8#
Bella.Yuan 发表于 2023-8-11 09:58
您好,您有尝试使用上面版主回复您的2种方法吗?方法1:控制纸张横向和纵向;方法2:开启纸张自动旋转。

试了,不行。
回复 使用道具 举报
Bella.YuanWyn认证
超级版主   /  发表于:2023-8-11 09:58:01
7#
waha 发表于 2023-8-11 09:24
预览看着正常。代码中也没设置什么边距。

您好,您有尝试使用上面版主回复您的2种方法吗?方法1:控制纸张横向和纵向;方法2:开启纸张自动旋转。
回复 使用道具 举报
waha
金牌服务用户   /  发表于:2023-8-11 09:24:25
6#
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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
Eden.SunWyn认证
超级版主   /  发表于:2023-8-11 09:14:34
4#
本帖最后由 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)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
waha
金牌服务用户   /  发表于:2023-8-11 08:59:19
3#
Bella.Yuan 发表于 2023-8-8 16:48
您好,下载了您的报表文件,使用桌面设计器未复现出来,看您给报表设置的边距是0但是根据您上传的图片看左 ...

代码中没有设置边距。
只要是宽大于高就自动转成横向了,有强制纵向打印的设置没。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
Bella.YuanWyn认证
超级版主   /  发表于:2023-8-8 16:48:21
2#
您好,下载了您的报表文件,使用桌面设计器未复现出来,看您给报表设置的边距是0但是根据您上传的图片看左边距好像不是0,您检查一下是不是代码中设置了左边距。
回复 使用道具 举报
最佳答案
最佳答案
Felix.LiWyn认证
超级版主   /  发表于:2023-8-8 15:23:59
来自 10#
本帖最后由 Felix.Li 于 2023-8-11 11:34 编辑

如果代码设置这些都无效,就还是怀疑是不是打印机有什么设置,您可以参考如下截图:


您预览的时候两边是没有边距的,但是实际打印出来,两边多了很多边距。而且看您打印的方向。应该也是对的,其实就是横向打印的。
横向的字体处于宽的那边。但是问题就是出在了两边莫名其妙多出来的边距。我猜测是不是咱们有什么打印机设置。打印机设置带了边距
也就是两侧纸张边距是多少多少,导致最终打印的时候执行了这个边距,导致预览和打印的不一样

类似这种打印机首选项导致的:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部