Java command line tool (and library as well) for dumping PCL printer data streams. pclbox is used for parsing the data stream.
Apache Commons-IO is required in any case. If pcldumper is used as a command line tool then Apache Commons-CLI is also required.
For your convenience pcldumper comes in two flavours - as a regular JAR and as a single runnable JAR (called a "fat JAR") that contains all required dependencies. This runnable JAR is very handy if pcldumper is used as a command line tool because you do not have to specify the Java CLASSPATH with all the required dependencies yourself.
Just invoke the pcldumper from a command line without any additional parameter to get a list of all available options:
$ java -jar pcldumper-1.4-all.jar -h
usage: pcldumper [OPTION]... [FILE]
PCL-Dumper reads a PCL printer data stream and dumps every printer
command.
-f,--file <arg> output file for the dump
-h,--help shows this help
-o,--offsets show the offsets of the printer commands
-q,--quiet do not show the PCL-Dumper header
-v,--verbose show more details
Please report issues at https://github.com/michaelknigge/pcldumper/issues
Because pcldumper is available at Maven Central, it is very easy to use pcldumper in your projects. At first, add pcldumper to your build file. If you use Maven, add the following to your build file:
<dependency>
<groupId>de.textmode.pcldumper</groupId>
<artifactId>pcldumper</artifactId>
<version>1.5</version>
<type>pom</type>
</dependency>If you use Gradle, add this:
dependencies {
implementation 'de.textmode.pcldumper:pcldumper:1.5'
}
If you want to use pcldumper in your own code to create PCL dumps, you need to use the PclDumperBuilder to build a PclDumper. Then invoke the method dump of the PclDumper to create the dump. That's all.
Dump of a PCL file without offsets and without details:
$ java -jar pcldumper-1.4-all.jar -q myfile.pcl
PCL %-12345X Universal Exit Language
PJL @PJL @PJL
PJL @PJL @PJL COMMENT THIS IS A TEST CASE
PJL @PJL @PJL ENTER LANGUAGE=PCL
PCL E Printer Reset
PCL &l26A Page Size (A4)
TEXT This file contains all types printer commands that are supported
CNTL 0x0D Carriage Return
CNTL 0x0A Line Feed
TEXT by PclDumper.
PCL *c72W User Defined Pattern
PCL %0B Enter HP-GL/2 Mode (Position pen at previous HP-GL/2 pen position)
HPGL IN Initialize
HPGL SP Select Pen
HPGL CO Comment
HPGL SC Screened Vectors
PCL %0A Enter PCL Mode (Position cursor at previous PCL cursor position)
CNTL 0x0D Carriage Return
CNTL 0x0A Line Feed
PCL %-12345X Universal Exit Language
Dump of a PCL file with offsets and with details:
$ java -jar pcldumper-1.4-all.jar -qvo myfile.pcl
00000000 : PCL %-12345X Universal Exit Language
00000009 : PJL @PJL @PJL
0000000F : PJL @PJL @PJL COMMENT THIS IS A TEST CASE
0000005C : PJL @PJL @PJL ENTER LANGUAGE=PCL
00000075 : PCL E Printer Reset
00000077 : PCL &l26A Page Size (A4)
0000007D : TEXT Printable text
>>> Length (Bytes) : 64
>>> Parsing Method : Default, 1 byte per character
>>> Hexadecimal : 546869732066696C6520636F6E7461696E7320616C6C207479706573207072696E74657220636F6D6D616E647320746861742061726520737570706F72746564
>>> Decoded : This file contains all types printer commands that are supported
000000BD : CNTL 0x0D Carriage Return
000000BE : CNTL 0x0A Line Feed
000000BF : TEXT Printable text
>>> Length (Bytes) : 13
>>> Parsing Method : Default, 1 byte per character
>>> Hexadecimal : 62792050636C44756D7065722E
>>> Decoded : by PclDumper.
000000CC : PCL *c72W User Defined Pattern
>>> 00000000 00 00 01 00 00 10 00 20 FF FF FF FF 7F FF FF FE ....... ........
>>> 00000010 3F FF FF FC 1F FF FF F8 0F FF FF F0 07 FF FF E0 ?...............
>>> 00000020 03 FF FF C0 01 FF FF 80 00 FF FF 00 00 7F FE 00 ................
>>> 00000030 00 3F FC 00 00 1F F8 00 00 0F F0 00 00 07 E0 00 .?..............
>>> 00000040 00 03 C0 00 00 01 80 00 ........
0000011A : PCL %0B Enter HP-GL/2 Mode (Position pen at previous HP-GL/2 pen position)
0000011E : HPGL IN Initialize
>>> IN
00000121 : HPGL SP Select Pen
>>> SP1
00000125 : HPGL CO Comment
>>> CO"This includes HP/GL-2 comments in double quotes"
00000159 : HPGL SC Screened Vectors
>>> SC0,100,0,100
0000019D : PCL %0A Enter PCL Mode (Position cursor at previous PCL cursor position)
000001A1 : CNTL 0x0D Carriage Return
000001A2 : CNTL 0x0A Line Feed
000001A3 : CNTL 0x0D Carriage Return
000001A4 : CNTL 0x0A Line Feed
000001A5 : PCL &p48X Transparent Print Data
>>> 00000000 41 6E 64 20 74 65 78 74 20 69 6E 20 50 43 4C 2D And text in PCL-
>>> 00000010 43 6F 6D 6D 61 6E 64 20 22 54 72 61 6E 73 70 61 Command "Transpa
>>> 00000020 72 65 6E 74 20 50 72 69 6E 74 20 44 61 74 61 22 rent Print Data"
000001DB : CNTL 0x0D Carriage Return
000001DC : CNTL 0x0A Line Feed
000001FE : PCL &t1008P Text Parsing Method (UTF-8)
00000206 : PCL (18N Primary Symbol Set (Unicode)
0000020B : PCL (s0P Primary Spacing (Fixed spacing)
00000210 : PCL (s6H Primary Pitch (Characters Per Inch)
00000212 : PCL (s0S Primary Style (Upright, solid)
00000214 : PCL (s0B Primary Stroke Weight (Medium, Book, or Text)
00000216 : PCL (s4099T Primary Typeface (Courier from AGFA)
0000021B : TEXT Printable text
>>> Length (Bytes) : 5
>>> Parsing Method : UTF-8
>>> Hexadecimal : C2A3E282AC
>>> Decoded : £€
00000220 : PCL %-12345X Universal Exit Language