【问题标题】:VB. NEt Printing LabelsVB。 NET 印刷标签
【发布时间】:2021-07-05 11:23:11
【问题描述】:

我制作了一个软件,用于在 TCS 条码打印机 DA200 机器上打印特定类型的标签 (100x150),当我打印时,它打印在杂乱无章的两页上,大部分文本在第一页,其余在第二页.我尝试更改几乎所有代码,但它不起作用。我想让打印响应并只停留在一页上。

输出代码:

Sub Print()
    TextBox5.Text = ""
    TextBox5.AppendText("Produced By:" + vbTab + vbTab + "Company")
    TextBox5.AppendText("" + vbNewLine)
    TextBox5.AppendText("" + vbTab + vbTab + vbTab + "Address")
    TextBox5.AppendText("" + vbNewLine)
    TextBox5.AppendText("" + vbTab + vbTab + vbTab + "No. 1")
    TextBox5.AppendText("" + vbNewLine)
    TextBox5.AppendText("" + vbTab + vbTab + vbTab + "City")
    TextBox5.AppendText("" + vbNewLine)
    TextBox5.AppendText("" + vbNewLine)
    TextBox5.AppendText("Product:" + vbTab + vbTab + "SPECIE")
    TextBox5.AppendText("" + vbNewLine)
    TextBox5.AppendText("Product Format:" + vbTab + "Fresh Skin OFF Loin")
    TextBox5.AppendText("" + vbNewLine)
    TextBox5.AppendText("Grade:" + vbTab + vbTab + vbTab + "GRADE")
    TextBox5.AppendText("" + vbNewLine)
    TextBox5.AppendText("Catch Area:" + vbTab + vbTab + "FAO 51")
    TextBox5.AppendText("" + vbNewLine)
    TextBox5.AppendText("Storage Instructions:" + vbTab + "0.5º to 1.5º Celcius")
    TextBox5.AppendText("" + vbNewLine)
    TextBox5.AppendText("Establishment No.:" + vbTab + "A22.1")
    TextBox5.AppendText("" + vbNewLine)
    TextBox5.AppendText("Origin:" + vbTab + vbTab + vbTab + "Origin")
    TextBox5.AppendText("" + vbNewLine)
    TextBox5.AppendText("Vessel Name/s:" + vbTab + vbTab + vesselcmb.SelectedItem)
    TextBox5.AppendText("" + vbNewLine)
    TextBox5.AppendText("" + vbNewLine)
    TextBox5.AppendText("" + vbNewLine)
    TextBox5.AppendText("Product Date:" + vbTab + vbTab + Date.Now.Date)
    TextBox5.AppendText("" + vbNewLine)
    TextBox5.AppendText("Best Before:" + vbTab + vbTab + Date.Now.Date.AddDays(16))
    TextBox5.AppendText("" + vbNewLine)
    TextBox5.AppendText("Project code:" + vbTab + vbTab + voyageprint.Text)
    TextBox5.AppendText("" + vbNewLine)
    TextBox5.AppendText("Net Weight:" + vbTab + vbTab + "")
    TextBox5.AppendText("" + vbNewLine)
    TextBox5.AppendText("" + vbNewLine)
    TextBox5.AppendText("" + vbTab + "To be further prepared for consumption")
    TextBox5.AppendText("" + vbNewLine)
    TextBox5.AppendText("" + vbTab + vbTab + "100% Natural")
    '' TextBox5.AppendText(vbTab + vbTab + vbTab + PictureBox1.Text + vbNewLine)
    PrintPreviewDialog1.ShowDialog()

打印文件代码:

Private Sub PrintDocument1_PrintPage(sender As Object, e As Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
        Dim printfont As New Font("Arial", 12, FontStyle.Bold)
        Dim SizeP As New PaperSize("Label 100x150", 100, 150)
        e.Graphics.DrawString(TextBox5.Text, printfont, Brushes.Black, 4, 6)
        '' e.Graphics.DrawImage(Me.PictureBox1.Image, 120, 130, PictureBox1.Width - 15, PictureBox1.Height - 25)
    End Sub

如何打印:

【问题讨论】:

  • 那是疯狂的糟糕代码。当您可以将代码以在PrintPage 事件处理程序中完全按照您想要的位置和位置绘制文本的每个部分时,为什么要将所有文本放入TextBox?摆脱第一种方法,将所有逻辑放在PrintPage 事件处理程序中,包括所需数量的DrawString 调用。
  • 我该怎么做?评论一个我必须如何做到这一点的例子,我已经很久没有使用VB了。网。
  • 您已经很久没有使用 VB.NET 了,这并不意味着您必须坐下来让其他人为您编写代码。这意味着您必须付出更多而不是更少的努力才能完成您需要做的事情。努力学习你需要做什么,努力去做,然后,如果它不起作用,你有一个问题要问。 “我不知道怎么做,也懒得去发现,所以你这样做”不是 SO 的工作原理。
  • 谢谢,但这个意见还不够好。我在 StackOverFlow 上问这个问题的简单事实意味着我尽了最大的努力来解决这个案例,因为我使用我的知识库和研究能够编写上面的代码,至少我设法得到了一个结果。我只是问你一个继续的基础,以防万一我不知道我会用你给我的基础做更多的研究,这样我才能得到最终的结果。你不需要给我写所有的代码,只写我能用的base就行了。
  • 除了不好的方法,应该仍然有效。但是,从您的图像来看,与打印相比,第一个标签的顶部的确切位置并不是那么清楚。您是否检查过打印机上的打印设置、介质设置、校准等,以确保没有超出上边距?如果打印的顶部位于预期的位置,那么对我来说,当前格式/布局中的页面看起来太多了

标签: vb.net visual-studio printing label


【解决方案1】:

考虑将文本转换为图像并将图像打印到打印机。

您可能需要的一些代码:

Private img As Bitmap
Private str As StringBuilder = New StringBuilder
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    str.Append("Produced By:" + vbTab + vbTab + "Company")
    str.Append("" + vbNewLine)
    str.Append("" + vbTab + vbTab + vbTab + "Address")
    str.Append("" + vbNewLine)
    str.Append("" + vbTab + vbTab + vbTab + "No. 1")
    str.Append("" + vbNewLine)
    str.Append("" + vbTab + vbTab + vbTab + "City")
    str.Append("" + vbNewLine)
    str.Append("" + vbNewLine)
    str.Append("Product:" + vbTab + vbTab + "SPECIE")
    str.Append("" + vbNewLine)
    str.Append("Product Format:" + vbTab + "Fresh Skin OFF Loin")
    str.Append("" + vbNewLine)
    str.Append("Grade:" + vbTab + vbTab + vbTab + "GRADE")
    str.Append("" + vbNewLine)
    str.Append("Catch Area:" + vbTab + vbTab + "FAO 51")
    str.Append("" + vbNewLine)
    str.Append("Storage Instructions:" + vbTab + "0.5º to 1.5º Celcius")
    str.Append("" + vbNewLine)
    str.Append("Establishment No.:" + vbTab + "A22.1")
    str.Append("" + vbNewLine)
    str.Append("Origin:" + vbTab + vbTab + vbTab + "Origin")
    str.Append("" + vbNewLine)
    str.Append("Vessel Name/s:" + vbTab + vbTab + "vesselcmb.SelectedItem")
    str.Append("" + vbNewLine)
    str.Append("" + vbNewLine)
    str.Append("" + vbNewLine)
    str.Append("Product Date:" + vbTab + vbTab + Date.Now.Date)
    str.Append("" + vbNewLine)
    str.Append("Best Before:" + vbTab + vbTab + Date.Now.Date.AddDays(16))
    str.Append("" + vbNewLine)
    str.Append("Project code:" + vbTab + vbTab + "voyageprint.Text")
    str.Append("" + vbNewLine)
    str.Append("Net Weight:" + vbTab + vbTab + "")
    str.Append("" + vbNewLine)
    str.Append("" + vbNewLine)
    str.Append("" + vbTab + "To be further prepared for consumption")
    str.Append("" + vbNewLine)
    str.Append("" + vbTab + vbTab + "100% Natural")
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    img = ConvertTextToImage(str.ToString, "Arial", 12, Color.White, Color.Black, 840, 1188)
    Dim printDialog1 As PrintDialog = New PrintDialog()
    printDialog1.Document = PrintDocument1
    Dim result As DialogResult = printDialog1.ShowDialog()

    If result = DialogResult.OK Then
        PrintDocument1.Print()
    End If
End Sub
Private Sub PrintDocument1_PrintPage(sender As Object, e As Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
    e.Graphics.DrawImage(img, e.MarginBounds)
End Sub
Public Function ConvertTextToImage(ByVal txt As String, ByVal fontname As String, ByVal fontsize As Integer, ByVal bgcolor As Color, ByVal fcolor As Color, ByVal width As Integer, ByVal Height As Integer) As Bitmap
    Dim bmp As Bitmap = New Bitmap(width, Height)

    Using graphics As Graphics = Graphics.FromImage(bmp)
        Dim font As Font = New Font(fontname, fontsize)
        graphics.FillRectangle(New SolidBrush(bgcolor), 0, 0, bmp.Width, bmp.Height)
        graphics.DrawString(txt, font, New SolidBrush(fcolor), 0, 0)
        graphics.Flush()
        font.Dispose()
        graphics.Dispose()
    End Using

    Return bmp
End Function

我的测试结果。

【讨论】:

  • 太棒了。我做了一些基本的调整,但它解决了我的问题。留住那颗善良的心。非常感谢,你让我很开心。
猜你喜欢
  • 2021-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多