#!/usr/bin/perl -w # # dymo-address - print on "DYMO 30252" address labels via PostScript laser printer # # VERS DATE AUTHOR COMMENTS # 1.00 07/13/1996 erco@netcom.com Initial implementation for avery labels # 1.10 12/04/2010 erco@3dsite.com Modified for Dymo 450 printer with 30252 labels # # How to use: # dymo-address "Some Name" "Main St. Apt 7" "Anytown, CA 91000" | lp -d "LabelWriter_450" - # -or- # perl -e 'print "Some Name\nMain St. Apt 7\nAnytown, CA 91000\n"' | dymo-address | lp -d LabelWriter_450 - # # Handle escaping parens, which are special chars in PostScript sub PostscriptEscape($) { my $s = $_[0]; $s =~ s/\(/\\\(/g; $s =~ s/\)/\\\)/g; return($s); } # MAIN { my $x = .8; my $y = -.1; my @lines; if ( $#ARGV < 0 ) { print STDERR "Enter string for label (6 lines max, hit ^D when done):\n"; @lines = ; } else { @lines = @ARGV; } # PostScript header print <<"EOF"; %!PS-Adobe-1.0 %%DocumentFonts: Courier-Bold %%Title: Dymo 450 Label %%Creator: Erco's Dymo 450 Label printer for 30252 labels %%Pages: (atend) %%EndComments %%EndProlog %%Page 1 1 save % -- FROM HERE ON, CONVERT EVERYTHING TO INCHES 72 72 scale % -- Fonts we might want /Helv_Font { /Helvetica findfont FontSize scalefont setfont 0 setgray } def /HelvB_Font { /Helvetica-Bold findfont FontSize scalefont setfont 0 setgray } def /HelvC_Font { /Helvetica-Condensed findfont FontSize scalefont setfont 0 setgray } def /HelvCB_Font { /Helvetica-Condensed-Bold findfont FontSize scalefont setfont 0 setgray } def /HelvCBI_Font { /Helvetica-Condensed-Bold-Italic findfont FontSize scalefont setfont 0 setgray } def /Locate { x y moveto } def /Feed { /y y FontSize sub def Locate } def % -------------------------------------------------------- % --- DOCUMENT % -------------------------------------------------------- 90 rotate /FontSize 0.16 def Helv_Font /x .8 def /y -.1 FontSize sub def Locate EOF # The lines of text the user supplied foreach my $line ( @lines ) { chomp($line); printf("(%s) show Feed\n", PostscriptEscape($line)); } # PostScript trailer print <<"EOF"; showpage %%Trailer %%Pages: 1 EOF exit(0); }