从Winforms应用程序打印条形码
本文关键字:条形码 打印 应用程序 Winforms | 更新日期: 2023-09-27 18:30:26
我想使用普通打印工具在winforms应用程序中打印条形码,而不是通过类似ZPL的语言。我可以打印任何东西,只是不是普通的条形码
using (PrintDocument pd = new PrintDocument())
{
pd.PrintController = new StandardPrintController();
pd.PrinterSettings.PrinterName = "Printer";
pd.PrintPage += new PrintPageEventHandler(pd_PrintLabel);
pd.Print();
}
private void pdPrintLabel(object sender, PrintPageEventArgs ev)
{
Graphics g = ev.Graphics;
using (Font f = new Font(FontFamily.GenericSansSerif, 6))
{
g.DrawString(????????? what to do for barcode????);
}
}
我们使用的是条形码渲染框架:
BarcodeDraw bdraw = BarcodeDrawFactory.GetSymbology(BarcodeSymbology.Code128);
Image barcodeImage = bdraw.Draw("barcodetext", barcodeImageHeight);
g.DrawImage(barcodeImage, barcodeRect);
void printDoc()
{
PrintDocument document = new PrintDocument();
BarcodeDraw bdraw = BarcodeDrawFactory.GetSymbology(BarcodeSymbology.Code128);
Image barcodeImage = bdraw.Draw("PO7120172733039800", 50);
document.PrintPage += delegate(object sender, PrintPageEventArgs e)
{
e.Graphics.DrawImage(barcodeImage, 0, 0);
e.Graphics.DrawString("PO7120172733039800", new Font("arial", 8), new SolidBrush(Color.Black),0,50);
};
document.Print();
}
我使用了Infragistics UltraCode128Barcode1条形码,它对我有用
Private Sub btnprintbarcodes_Click(sender As Object, e As EventArgs) Handles btnprintbarcodes.Click
PrintDocument1.Print()
End Sub
Private Sub PrintDocument1_PrintPage(sender As Object, e As PrintPageEventArgs) Handles PrintDocument1.PrintPage
e.PageSettings.PrinterSettings.PrinterName = ApplicationHelper.GetApplicationSettingValue("Barcode_Printer_Name")
Dim barcodeImageFile As String = String.Empty
If UltraCode128Barcode1.Data IsNot Nothing Then
barcodeImageFile = String.Concat(Path.GetTempPath(), Guid.NewGuid(), ".tiff")
UltraCode128Barcode1.SaveTo(barcodeImageFile, ImageFormat.Tiff)
Dim barcodeimage = Image.FromFile(barcodeImageFile)
e.Graphics.DrawImage(barcodeimage, 0, 0)
e.Graphics.DrawString(UltraCode128Barcode1.Data, New Font("arial", 8), New SolidBrush(Color.Black), 0, 50)
End If
If (File.Exists(barcodeImageFile)) Then
'File.Delete(barcodeImageFile)
End If
End Sub
Private Sub PrintDocument1_BeginPrint(sender As Object, e As PrintEventArgs) Handles PrintDocument1.BeginPrint
ApplicationHelper.ShowGeneralDialog("The Program is about to print barcode(s).Make sure your barcode printer is on and loaded")
End Sub