Q: We do have a pure ASCII-file and those problems:
1. The data stream has three leading empty lines, how can I erase them
2. The next page data is starting on the previous page and is even moving on the following pages up
3. Some lines have too many characters, 2 characters are missing on the right side.

These problems can be solved by
A) A proper initialization
B) Inserting FormFeeds to handle correct page breaks
C) Search for Row 3 on every page and reposition it to any new position on the page..

Here is the inifile:

[GLOBAL]

ELP=ON

; The next command does nothing (one copy), but is used to activate the ELP_init_job key (Proper initialization), You may add here any addition forms etc.

ELP_COMMAND=K1;

; proper initialization: Ascii files should be correct initialized here just an example:

ELP_INIT_JOB=\x1B%-12345X\x1BE\x1B(10U\x1B(sp10.25hsb4099T\x1B&l26a1eO\x1B&l8C

; -------------------------Init
; ----------------------------IBM PC 8 Symnbolset maybe you need to change that
; ------------------------------------------10.25 cpi Courier for missing characters ; A4 1 headline portrait
; -----------------------------------------------------------------------6 lpi, you can also use here ##.##C for precise line spacing
; You may change the 10.25 cpi, if still not all characters fit use 10.5 or even smaller.

; You also my change the printer setting to WIDE Printing.

; If the 6 lpi is not correct, then change the value so you may expand or compress the text

[search row 3 to reposition the print position]

; Search Row 3 on every page

Search_Rowno=3

; Reposition it to any other position. Value in 1/720 inch

Add_Binary=\x1B&a100V

; Note: if only on the first page are 3 lines too much, then add Search_Only_Once=ON here

ReadOnlySearchKeys=ON

[search row X to add a form feed]

; Now we search the last row on the page, remember that we need on the next page 3 empty lines, so I think in your case it is around 60 lines per page.

search_rowno=60

; Insert a form feed, This will also reset the line counter to 1. I mean in this case row 60 is the first row on the next page!

add_binary=\x0C

ReadOnlySearchKeys=ON

; Often the ASCII files are designed for dot matrix printers, having too many lines to fit in 6 lines per inch (lpi) on a A4 page. So either use a smaller line spacing, or keep 6 lines per inch and set at the last printed line plus one the line spacing to 0:

[search row 68 to switch to 0 lpi]

search_rowno=68

ReadOnlySearchKeys=ON

add_binary=\x1B&l0C

[search row 72 to add a form feed and switch back to 6 lpi]

search_rowno=72

add_binary=\x0C\x1B&l8C

ReadOnlySearchKeys=ON

There are some more commands, which insert PCL or any other statements into the data stream, while writing the stream out. You may also use variables in the terms at any time.

ELP_EXIT_Job Any valid PCL or PJL commands will be added at the end of the data stream. Together with ELP_INIT_JOB you may for example turn stapling for the whole job on. Example is above.
ELP_EXIT_PCL Any valid PCL commands will be inserted at the end of the data stream
ELP_INIT_Job Any valid PCL or PJL commands will be inserted at the beginning of the data stream. Pretty similar to the file function job_init.mac, but used on selective data streams, as the mac file content is send with every stream to the printer.
ELP_INIT_PCL Any valid PCL commands will be inserted at the beginning of the data stream right before the page initialization. Only valid in conjunction with a valid ELP_COMMAND!
ELP_PageInit_PCL Any valid PCL commands will be inserted at the beginning of each page. Do not use any commands which may cause an empty page at the end of the data stream. Only valid in conjunction with am valid ELP_COMMAND!


You can find on www.hp.com a PCL5 Technical Reference Manual