views:

43

answers:

1

I am using Visual Studio 2008 and all the components that come with it as well as Infragisitics for Winforms.

I need to design a label that will print to a label printer.

None of the controls are databound and will most likely be set in code eg/Label.Text = "My Heading"; as there will be minimal information on the label.

One piece of information is a barcode so I need the functionality to do that, I assume I can just set the font of the label to barcode and it will do its thing.

Can I just add a Crystal Report to a form design it, set the label text properties in code, tell it what printer to print to and then call report.Print();

I've had a quick go and seems not as easy as I thought.

Thanks

UPDATE: I have added a Crystal Report to the project and use the following code to access labels/text objects on the report.

            CrystalReport2 d = new CrystalReport2();
            CrystalDecisions.CrystalReports.Engine.TextObject txtReportHeader;
            txtReportHeader = d.ReportDefinition.ReportObjects["Text1"] as CrystalDecisions.CrystalReports.Engine.TextObject;
            txtReportHeader.Text = "TESTING 123";
+1  A: 

If this is for use in a heavy use environment (lots of labels on a regular basis), it may be worth your time to work out the printer specific escape codes to print your label and send the codes directly to the printer port.

Sending windows fonts (including barcode fonts) to a label printer can be pretty slow. This slowness is probably acceptable if you are occasionally printing a few labels at a time, but in a industrial environment (think fast moving assembly line) this could be a problem. Using printer specific codes and the printer's internal fonts allows the printer to operate at much higher speeds.

The downside to this approach is that if you change printer models, application code would likely need to be updated as well.

JSR