繁体   English   中英

Winform-标签打印?

[英]Winform - Label Printing?

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

我玩弄了2种不同的方法。

方法一:读取xml并在表单上找到项目,创建表单的图像,然后进行打印。 这可行,但似乎有点胡扯?? 我必须显示表单一秒钟才能创建图像,我真的不想这样做。

方法二:我研究了使用MigraDoc创建标签文档,然后将其发送到打印机。 这种方法将创建表格并将其发送给打印机而不显示,但是,我看不到如何根据xy坐标在文档中定位项目? 也许我在这里错过了一些东西,但是所有内容似乎都是由段落和段落驱动的。

最佳/最简单的方法是什么?

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

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

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

gr.SmoothingMode = Drawing.Drawing2D.SmoothingMode.HighQuality
gr.TextRenderingHint = Drawing.Text.TextRenderingHint.SingleBitPerPixelGridFit
gr.CompositingQuality = Drawing.Drawing2D.CompositingQuality.HighQuality

重新方法二:
使用MigraDoc,您可以使用TextFrames使用XY坐标来定位项目。 文本框可能会重叠,如果您使用此方法,则有责任确保所有内容都适合指定区域。

使用MigraDoc的更好方法是使用具有精确高度或间距的表和/或段落。 但是,在您使用带有坐标的XML文件的方法时,这不容易使用,因为间距必须相对于上一项。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM