首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C# - 如何打印宽高比/整页

在C#中,打印宽高比/整页可以通过以下方法实现:

  1. 使用Graphics类:
代码语言:csharp
复制
using System.Drawing;
using System.Drawing.Printing;

private void PrintDocument(string text)
{
    PrintDocument printDoc = new PrintDocument();
    printDoc.PrintPage += (sender, args) =>
    {
        Graphics graphics = args.Graphics;
        Font font = new Font("Arial", 12);
        float fontHeight = font.GetHeight();
        int startX = 10;
        int startY = 10;
        int maxWidth = args.MarginBounds.Width;
        int maxHeight = args.MarginBounds.Height;
        StringFormat format = new StringFormat();
        format.Alignment = StringAlignment.Near;
        format.LineAlignment = StringAlignment.Near;
        int lines;
        using (StringFormat sf = new StringFormat())
        {
            sf.Alignment = StringAlignment.Near;
            sf.LineAlignment = StringAlignment.Near;
            sf.Trimming = StringTrimming.Word;
            lines = graphics.MeasureString(text, font, maxWidth, format, out _, out _).Height / fontHeight;
        }
        int pages = (int)Math.Ceiling((double)lines / (maxHeight / fontHeight));
        for (int page = 1; page <= pages; page++)
        {
            graphics.DrawString(text, font, Brushes.Black, new RectangleF(startX, startY, maxWidth, maxHeight), format);
            args.HasMorePages = page< pages;
            startY += maxHeight;
        }
    };
    printDoc.Print();
}
  1. 使用PrintDialog类:
代码语言:csharp
复制
using System.Drawing;
using System.Drawing.Printing;

private void PrintDocument(string text)
{
    PrintDialog printDialog = new PrintDialog();
    PrintDocument printDoc = new PrintDocument();
    printDoc.PrintPage += (sender, args) =>
    {
        Graphics graphics = args.Graphics;
        Font font = new Font("Arial", 12);
        float fontHeight = font.GetHeight();
        int startX = 10;
        int startY = 10;
        int maxWidth = args.MarginBounds.Width;
        int maxHeight = args.MarginBounds.Height;
        StringFormat format = new StringFormat();
        format.Alignment = StringAlignment.Near;
        format.LineAlignment = StringAlignment.Near;
        int lines;
        using (StringFormat sf = new StringFormat())
        {
            sf.Alignment = StringAlignment.Near;
            sf.LineAlignment = StringAlignment.Near;
            sf.Trimming = StringTrimming.Word;
            lines = graphics.MeasureString(text, font, maxWidth, format, out _, out _).Height / fontHeight;
        }
        int pages = (int)Math.Ceiling((double)lines / (maxHeight / fontHeight));
        for (int page = 1; page <= pages; page++)
        {
            graphics.DrawString(text, font, Brushes.Black, new RectangleF(startX, startY, maxWidth, maxHeight), format);
            args.HasMorePages = page< pages;
            startY += maxHeight;
        }
    };
    printDoc.PrinterSettings = printDialog.PrinterSettings;
    printDoc.Print();
}

这两种方法都可以实现打印宽高比/整页的功能。具体使用哪种方法,需要根据实际情况进行选择。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

面试官:CSS如何实现固定宽高比

如果有一天你被问到:“你能说一下如何实现一个固定宽高比的元素吗?” 听到这个的时候你一定不要盲目的说出答案。因为这么问的话,题目并不明确。所以你可以帮面试官补充题设或提问来确认要求。...所以本文主要分为可替换元素和普通元素如何实现固定宽高比。 一、可替换元素实现固定宽高比 可替换元素(如、)和其他元素不同,它们本身有像素宽度和高度的概念。...显然,这并不灵活,那我们该如何针对普通元素实现固定宽高比呢。 首先我们来看看最经典的padding-bottom/padding-top的 hack 方式。...下面让我们一起来看看是如何的便利吧。 aspect-ratio的语法格式如下:aspect-ratio: /。...三、总结 本文总结了如何实现元素的固定宽高比。如果你再在面试的过程中被问到这个问题。你就可以像这样回答了。 如果元素的尺寸已知的话,没什么好说的,计算好宽高写上去就行了。

7.5K51

c#打印机脱机检查及阻塞打印

在使用winform编写自动打印服务的过程中,发现只要进行了打印命令的调用,文档就会进入到打印等待队列,如果打印机无法正常工作,则会影响到相关业务数据的正确转换,所以需要检查打印机的状态来保障每次打印打印机处于空闲状态...,打印时队列中也只能有一个文档,本文是通过引用System.Management来实现对打印机状态的查询 打印机状态获取 enum PrinterStatus {...其他 = 1, 未知 = 2, 空闲 = 3, 打印 = 4, 预热 = 5, 停止打印...这里主要是通过一个while循环来不停的获取打印机的状态,空闲时才会进行下一次打印,通过两个标志位来配合轮询的外部介入退出 FinishWait标志位是任务内部的标识,如果打印机检查到了错误状态则进行轮询退出...|| State == PrinterStatus.预热) { //正在打印/预热时循环去查询打印机状态,如果变成了就绪就开始打印

40630

如何打印日志

如何打印日志 日志打印对研发来说,是很有必要的, 如何打印好日志,让日志能反映出处理流程,让日志能反映出问题所在,这个很重要,不好的日志,会加大研发排查问题的难度,过多的日志也会对研发造成干扰,如何打印日志...日志存在的问题 安全问题 将用户的敏感信息打印在了日志中 日志级别不合理 warning日志较为泛滥,且少有人关注 部分阻塞业务流程的错误,未正确使用error日志 错误日志重复打印 同一个错误在不同的位置重复打印...除外) 【建议】谨慎的使用日志进行打点 合理分级 【强制】日志打印时应选择合适的级别 保证安全 【强制】原则上禁止日志汇总禁止打印用户L4级别的日志 【强制】日志打印满足飞书日志打印安全规范 【建议】使用合适的脱敏方式对敏感信息进行脱敏...MQ消息的唯一标记MsgID 案例二:日志打印时未传入ctx导致日志缺乏logID,无法通过logID检索到该日志 案例三:在程序的关键分岔点未打印日志 案例四:在特殊的条件分岔未打印日志 【强制】关键日志必须打印路径...,打印日志必须带上关键信息 【强制】日志打印时必须携带logID

42320

标签打印软件如何打印指定页码

标签打印软件中有一个功能叫指定页码,很多用户不知道这个功能是怎么使用的,指定页码的意思就是在标签打印软件中制作好标签之后,如果不需要打印全部的内容,只需要打印特定页的内容,可以按照以下方法进行设置。...1.在标签打印软件中制作好标签之后,预览没有问题的话,可以点击软件上方工具栏中的打印按钮进行打印,这里以条形码标签为例。...2.点击打印按钮,弹出打印设置对话框,在打印设置对话框中可以设置打印的范围、矫正的角度以及打印的方式。...3.在打印设置中设置好打印范围之后,,如果想要打印指定页码的话,可以勾选指定页码前面的复选框,把开始页码设置为899 结束页码设置为995,这里指的注意的是,标签数量一定不能小于结束页码。...以上就是在标签设计软件中指定打印页码的步骤,不管标签上的内容是手动输入还是数据库导入的,都可以在标签打印软件中进行设置,软件的设置比较灵活,可以根据不同的需求进行设置。

1.3K30

打印标签时如何解决打印偏移

我们在打印标签时,使用的纸张一般都是不干胶卷纸,这样的卷纸又有单排、双排、三排和四排的规格。这些不同规格的标签纸在条码打印中经常会出现打印偏移的问题,甚至会跳纸,遇到这样的情况该如何调整呢?...01.png 小编的办公桌上有一台TSC的TTP-244 Pro打印机,里面装的是三排的标签纸,尺寸是30*10mm,可以打印条形码或者小的标签。下面就以这台打印机为例来介绍。...首先确认软件中设置的标签大小和打印机的纸张是否一致。...然后矫正纸张并测试纸张:关闭打印机(开关在打印机的后右侧),左手按住PAUSE键(上面的那个按键)不放,右手开启打印机开关,等到机器一开始吐纸松开左手的按键,机器开始走纸,直到停止走纸,才算测纸完毕;...打印出来的效果:条码在标签纸上布局很好,这样设置就可以啦!

2.1K60

web调用打印机自动打印_网页打印如何设置默认打印

(当然,用户有各种各样的需求和打印格式要求,愿意使用打印控件的,开发的打印功能当然很好。) 所以直接使用浏览器自带的打印功能,就成为一个选择。 2....打印功能介绍 2.1 普通打印 如果要将当前网页的内容直接打印到白纸上,很简单,使用如下js代码即可实现。...window.print(); 2.2 打印指定区域 2.2.1 简单打印某一区域 如果只需要简单打印当前网页的某一块内容,不难实现。...2.4 iframe打印 如果你的打印格式比较复杂,在现有页面通过上边介绍的方式实现起来比较麻烦,那就干脆使用iframe打印吧。...WEB打印如何设置默认为”仅选定打印框架”?

6.2K20

如何打印好日志

1.选择恰当的日志级别 error warn info debug 2.日志要打印出参入参数 方便甩锅 3.选择合适的日志格式 时间戳 线程名字 日志级别等 4.if-else ,switch 等分支语句都建议打印日志...等日志系统,建议使用slf4j框架,方便统一处理 7.建议使用参数占位符{},而不是+拼接,简洁且提升性能 8.建议使用异步日志,能有效提升IO性能 9.不要使用e.printStackTrace ()打印错误信息...,因为太多信息,且是堆栈信息,会使得内存溢出 10.异常不要只打一半,要完成输出 11.禁止在线上开启debug 会把磁盘打满 12.不要记录了异常,又抛出异常 13.避免重复打印日志,浪费磁盘空间 14....日志文件分离,不同级别日志存放在不同文件中 15.核心功能模块,建议打印详细的日志

8810

TSC条码机打印如何设置打印速度

在条码标签打印软件中设计好标签,连接打印机进行打印时,如果需要根据实际情况改变打印机的打印速度和深度的话,可以按照以下步骤进行设置。...1.点击左下角的开始-设备和打印机,在所需的打印机上右击-打印首选项,在选项页面, 可以对打印机的打印速度和深度进行调整,如图: 注意:在打印机选项中所做的改变,只会在打印时使用而不会被保存到标签中。...2.打开条码标签打印软件,在文档设置-纸张-打印机/纸张中,选择所需的TSC打印机之后,点击后面的属性,弹出打印机首选项对话框,在选项界面,可以设置打印机的打印速度和深度。...以上两种方法都可以根据自己的需求自定义设置打印机的打印浓度和深度。想要了解更多关于条码标签打印软件的操作技巧,可以进入条码打印软件官网,也可以关注小编的后续文章。

2.8K10
领券