首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Winform - Label Printing?

Winform - Label Printing?
EN

Stack Overflow用户
提问于 2013-05-14 01:27:47
回答 2查看 1.4K关注 0票数 0

我正在开发一个应用程序,其中我需要打印从1"x3“到8"x10”的标签。将在标签上打印的文本和图像在一个xml文件中定义,该文件包含所有需要的信息,包括其在标签上的位置(由左上角xy坐标定义)。我不想预览打印作业,只要按命令将其发送到打印机即可。我的问题是,做这件事的首选方法是什么?

我已经尝试了两种不同的方法。

方法一:读取xml并定位表单上的项,创建表单的图像,然后打印它。这是有效的,但它似乎有点做作??我必须显示表单一秒钟才能创建图像,我真的不想这样做。

方法二:我已经研究过使用MigraDoc创建标签文档,然后将其发送到打印机。这种方法将创建表单并将其发送到打印机而不显示,但是,我不知道如何根据xy坐标定位文档中的项??也许我在这里遗漏了一些东西,但一切似乎都是由章节和段落驱动的。

实现这一目标的最佳/最简单的方法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-14 16:44:48

Re方法二:

在MigraDoc中,您可以使用TextFrames使用XY坐标来定位项目。文本帧可以重叠,如果您使用此方法,您将负责确保所有内容都适合指定的区域。

使用MigraDoc的更好方法是使用具有精确高度或间距的表格和/或段落。然而,这不能很容易地与您使用带有坐标的XML文件的方法一起使用,因为间距必须相对于前一项。

您可以使用PDFsharp创建一个PDF文件,在正确的位置绘制所有内容。但打印可能会出现问题-您可以调用Adobe Reader传递命令行参数来自动打印,但不能设置复杂的打印机选项。如果您只创建了几个打印作业,并且手动干预不是问题,则可以选择此选项(并且PDF文件允许在打印文档之前对其进行视觉检查)。

票数 0
EN

Stack Overflow用户

发布于 2013-05-14 02:06:46

您可以使用System.Drawing名称空间中的功能将文本和图像直接绘制到位图中,这样就不必显示表单。

代码语言:javascript
复制
Dim bm As Bitmap = New Bitmap(200, 200)
Dim gr As Graphics = Graphics.FromImage(bm)

Dim img As Image = Image.FromFile("image.jpg")
gr.DrawImage(img, x, y)

Dim fn As Font = New Font("Comic Sans MS",72)
Dim solidBlack As SolidBrush = New SolidBrush(Color.Black)
gr.DrawString("My Picture", fn, solidBlack, x, y)

然后用位图bm做你想做的,保存,打印,任何东西。

更多的例子,http://www.websupergoo.com/helppdf9net/source/4-examples/20-systemdrawing.htm

编辑:我不记得上一次使用它时是如何克服文本质量问题的,但我确实在代码中设置了这个东西。

代码语言:javascript
复制
gr.SmoothingMode = Drawing.Drawing2D.SmoothingMode.HighQuality
gr.TextRenderingHint = Drawing.Text.TextRenderingHint.SingleBitPerPixelGridFit
gr.CompositingQuality = Drawing.Drawing2D.CompositingQuality.HighQuality
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16527745

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档