We help IT Professionals succeed at work.

Check out our new AWS podcast with Certified Expert, Phil Phillips! Listen to "How to Execute a Seamless AWS Migration" on EE or on your favorite podcast platform. Listen Now


printer looses alignment when printing labels (VB)

nedwob asked
Medium Priority
Last Modified: 2008-02-20
I wrote an DOS based programme some years ago in QuickBasic, to print Names and Addresses on labels. One of my own printers was and still is an Epson EX800 which provides excellent service. The program was/is used on other DMP's and inkjets, It works fine on all types.

I am upgrading the programme to VB 4 and 5. It works fine on
inkjet printers using 'cut sheet' label pages, but has a problem on DMP's as described below.

I have a system that can boot Win3.11, Win95 or Win98. In
order to cater for some users who still have DMP,s I need
to include their use in my programme, described below.

I have tested the programme under Win 3.11, Win 95 and Win
98 in the 16 bit VB4 version, and under Win 95 and Win 98
in the 32 bit VB5 versions. I have tested it using both Epson EX800 and LQ550 printers.

Using continuous fan-fold labal paper, correctly set for 12 inch 'fold' pages, (in Printer Setup), the label row spacing is not adjusted correctly. The labels very slowly 'creep' up the page, so that after about 30 to 60 rows (3 to 10 'folds' depending on label height setting), label printing has moved 'UP' by app. one line, slowly encroaching on to previous rows.

Internally I have checked settings. With ScaleMode = 1, the
ScaleHeight seems correct at 17280 twips for 12 inch page, Label Spacing which is correct at 2880 twips (testing with 2 inch high labels).

I have tried to 'fool' the printer(s) by setting a custom page size just below or above 12 inches. I have also tried changing the internal 'ScaleHeight' value marginally.

Although some of my tests produce changes, the results are undesirable, and none of them cure the basic problem.

The 'creepage' is small, ammounting to about .1 inch in 30/40 labels, although occasionally there will be the odd place where the inter-label 'gap' will fall up to .25 inches short, and this does not occur at 'page' break' positions.

Can you suggest any remedy or point me at a solution. As it
occurs with all thre OS's I can't see that it is related to
this, and since it occurs with two different DM printers, I
cannot see that it is printer related.

It seems to be a programming problem, but I cannot see a way
to resolve it. All attempts to make the printer adjust its
position marginally after each page fails to produce the desired result.

Watch Question

Is your printer set to tractor feed? If you have it set to friction feed you'll get exactly the symptom you're experiencing. This is a lever adjustment at the end of the carriage. You cannot friction feed "tractor" forms accurately.



Sorry I didn't say, but yes, tractor mode is used. More tests done tonight - after passing 10 - 12 inch pages through, the slippage is .2 inches as near as I can measure it - .02 inch per 'fold' and seems consistent.

Metric paper?

Unlock this solution and get a sample of our free trial.
(No credit card required)


Thanks for the suggestion, but this would create large problems in getting the formatting right, which don't arise in the VB Printer object.

Even printing BLANK pages produces the same result ie; about .02 inch per page is not getting ejected

eg For X = 1 to 10
   next X

ejects 10 pages, but .2 inches short on the last page.

I think it must be a driver problem, but unfortunately, no more recent drivers are available.

Since putting the question, I have evolved a work-around. Use 'Custom' page setup, and tell the printer that each page is for example 12.02 inches long instead of 12 inches.

It's a messy solution though, an shouldn't be necessary.

We have had nothing but problems with printing in VB I doubt that there is a problem with the printer drivers. We had good luck printing in WIN95 and VB4
But after upgrading cretin applications or going to VB5,6 the printing format and line spacing changed but not the code. The same VB program on NT4.0 prints totally different to our printers
We have not found any info on what is Different from printing in VB4 to VB5 or VB6 and why NT and WIN95/98 print differently. The custom page trick only worked on WIN95 and VB4 after that nothing worked right!

Public Function PrintLabels(job As String, cust As String, desc As String, thedate As String, prog As String, rev As String, num As Integer) As Boolean
'this function will print out the product labels
'and return true if ok, false if not
Dim I As Integer

On Error GoTo OpenError

For I = 1 To num
    Printer.Print Tab(25); job:
    Printer.Print Tab(2); cust:
    Printer.Print Tab(2); desc:
    Printer.Print Tab(2); thedate;
    Printer.Print Tab(15); prog;
    Printer.Print Tab(25); "REV " + rev:
    Printer.CurrentY = Printer.CurrentY + 625
PrintLabels = True
Exit Function

    PrintLabels = False
    Exit Function
End Function

we had to add this code later as to get NT close but not the same:

Dim I As Integer, F As New StdFont

F.Name = "SIMPLEX"
F.Size = 10
F.Bold = True
Set Printer.Font = F


to lame

Thank you for your comments. I am now using VB6, and to be honest I have only tried printing a short run of labels on the old DMP once. I am not sure if the problem is still present - I will make some tests and look at your approach.

Your approach of incrementing CurrentY between labels is worth trying - my code was incrementing it after each line

I only use the old DMP rarely, and the results are still the same, so I have to 'work around' the problem, as before.

Unlock the solution to this question.
Thanks for using Experts Exchange.

Please provide your email to receive a sample view!

*This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.


Please enter a first name

Please enter a last name

8+ characters (letters, numbers, and a symbol)

By clicking, you agree to the Terms of Use and Privacy Policy.