Hi K2RFP

Just occured to me I had a similar problem, my client had pages of vouchers
that needed to be printed, minimum of 5 per line, each page has 20
vouchers, much like labels.
You probably won't get away from the end doc feed, but changing the page
size to be one row of labels will help you.

In other words, keep the width of you label page but make the page height
the height of the 1 row of labels, this will spool line by line.

I also created  a basic printer object to help me with what I wanted to do,
not sure why I did not use TPrinter, perhaps I didn't want to use Canvas or
wanted to use the default printer fonts

TRawPrinter = object
    N : DWORD;
    DocInfo : TDocInfo1;
    function  RWOpenPrinter (APrinter : String; ADocName: String = 'print')
: THandle;
    procedure RWStartPage (AHandle: THandle);
    procedure RWWriteLine (AHandle : THandle; ALine: String = #13#10);
    procedure RWClosePage (AHandle: THandle);
    procedure RWEndDoc (AHandle: THandle);
    procedure RWClosePrinter (AHandle: THandle);
  end;

{ TRawPrinter }

procedure TRawPrinter.RWClosePage(AHandle: THandle);
begin
  EndPagePrinter(AHandle);
end;

procedure TRawPrinter.RWClosePrinter(AHandle: THandle);
begin
  EndDocPrinter(AHandle);
  ClosePrinter(AHandle);
end;

procedure TRawPrinter.RWEndDoc(AHandle: THandle);
begin
  EndDocPrinter(AHandle);
end;

function TRawPrinter.RWOpenPrinter(APrinter, ADocName: String): CARDINAL;
var
  Handle : THandle;
begin
  if not OpenPrinter(PChar(APrinter), Handle, nil) then
  begin
    Handle := 0;
  end;
  if (Handle <> 0) then
  begin
    DocInfo.pDocName := PChar(ADocName);
    DocInfo.pOutputFile := nil;
    DocInfo.pDataType := 'RAW';
  end;
  StartDocPrinter(Handle, 1, @DocInfo);
  Result := Handle;
end;

procedure TRawPrinter.RWStartPage(AHandle: THandle);
begin
  StartPagePrinter(AHandle);
end;

procedure TRawPrinter.RWWriteLine(AHandle: THandle; ALine: String);
begin
  ALine := Aline+#13#10;
  WritePrinter(AHandle, PChar(ALine), Length(ALine), N);
end;

Anyway I hope this may provide you with a solution.

On Wed, Oct 3, 2012 at 4:32 PM, K2RFP <rn...@verizon.net> wrote:

> Steve:
> Writing a procedure to handle a batch of labels is
> not a problem but that is not what I want. As a ham
> radio operator I have, from time to time, to send
> a postcard to someone in my log book. So it is an
> individual label and the procedure is not called for
> every time I run the logbook program. So it doesn't
> make sense for the printer to do a form feed to a
> new page after printing one or two labels.
>
> I did some google searching and found out that
> EndDoc always results in a form feed and a way
> around it is to do a raw printing to the printer
> port. I haven't tried that. Another way I'll try
> is to set the physical size of the printer's page
> to the height of the label. You would think there
> would be an EndDoc2 procedure that does what EndDoc
> does but stops the printer in its tracks so I would
> not have to jump through hoops to do what I want.
>
>
>
> On 10/3/2012 9:55 AM, Stephen Posey wrote:
>
>> I'm not sure I understand the question here.
>>
>> Normally you don't call Printer.EndDoc until you're done printing. If you
>> have multiple labels to print, then you'll want to handle them as a "batch"
>> and compose them all onto your label page(s) before calling Printer.EndDoc.
>>
>> If the number of labels you have to print is more than will fit on a page
>> of labels, then you'll call Printer.NewPage between page batches.
>>
>> If that doesn't clarify the situation then I'll need you to describe your
>> setup and exactly what you're trying accomplish in more detail.
>>
>> Stephen Posey
>> stephenlpo...@earthlink.net
>>
>> -----Original Message-----
>>
>>> From: -K2RFP- <rn...@verizon.net>
>>> Sent: Oct 2, 2012 1:25 PM
>>> To: Delphi-Talk Discussion List <delphi-talk@elists.org>
>>> Subject: Printing Labels
>>>
>>> I want to print individual 1-inch labels on fan-fold
>>> tractor feed paper. The label prints okay but the
>>> EndDoc statement causes thepaper to move to the next
>>> page. How do I get it tomove to the next label?
>>>
>>> The printer does not have any setting for labels.
>>>
>>>
>>>
>>> ______________________________**____________________
>>> Delphi-Talk mailing list -> Delphi-Talk@elists.org
>>> http://lists.elists.org/cgi-**bin/mailman/listinfo/delphi-**talk<http://lists.elists.org/cgi-bin/mailman/listinfo/delphi-talk>
>>>
>> ______________________________**____________________
>> Delphi-Talk mailing list -> Delphi-Talk@elists.org
>> http://lists.elists.org/cgi-**bin/mailman/listinfo/delphi-**talk<http://lists.elists.org/cgi-bin/mailman/listinfo/delphi-talk>
>>
>>
> ______________________________**____________________
> Delphi-Talk mailing list -> Delphi-Talk@elists.org
> http://lists.elists.org/cgi-**bin/mailman/listinfo/delphi-**talk<http://lists.elists.org/cgi-bin/mailman/listinfo/delphi-talk>
>



-- 
<http://spiceware.co.za>
__________________________________________________
Delphi-Talk mailing list -> Delphi-Talk@elists.org
http://lists.elists.org/cgi-bin/mailman/listinfo/delphi-talk

Reply via email to