Home | History | Annotate | Download | only in psutils
      1 @PERL@
      2 # fixdlsrps: fix DviLaser/PS document to work with PSUtils
      3 #
      4 # Copyright (C) Angus J. C. Duggan 1991-1995
      5 # See file LICENSE for details.
      6 
      7 $nesting = 0;
      8 $page = 1;
      9 $infont = 0;
     10 
     11 @fonts = ();
     12 @body = ();
     13 $header = 1;
     14 
     15 while (<>) {
     16    if (/^XP/) {
     17       $infont++;
     18       push(@fonts, $_);
     19       $infont-- if /PXL.*RP/ || /DN?F.*RP/;
     20    } elsif ($infont) {
     21       push(@fonts, $_);
     22       $infont-- if /PXL.*RP/ || /DN?F.*RP/;
     23    } elsif ((/^%%EndSetup/ || /^%%Page:/) && $header) {
     24       print @body;
     25       @body = ("%%EndSetup\n");
     26       $header = 0;
     27    } elsif (/^%%EndProlog/ && !$nesting) {
     28       push(@body,
     29 	   "\$DviLaser begin/GlobalMode{}bdef/LocalMode{}bdef/XP{}def/RP{}def",
     30 	   "/DoInitialScaling{72.0 Resolution div dup scale}bdef end\n", $_);
     31    } elsif (/^%%BeginPageSetup/ && !$nesting) {
     32       push(@body, "%%Page: $page $page\n", $_,
     33 	    "Resolution 72 div dup scale Magnification 1000 div dup scale\n",
     34 	    "/DocumentInitState where {\n",
     35 	    "/DocumentInitState [ matrix currentmatrix currentlinewidth",
     36 	    " currentlinecap currentlinejoin currentdash currentgray",
     37 	    " currentmiterlimit] cvx put}if\n");
     38       $page++;
     39    } elsif (/^%%BeginDocument:/ || /^%%BeginBinary:/ || /^%%BeginFile:/) {
     40       push(@body, $_);
     41       $nesting++;
     42    } elsif (/^%%EndDocument/ || /^%%EndBinary/ || /^%%EndFile/) {
     43       push(@body, $_);
     44       $nesting--;
     45    } elsif (!/^%%PageBoundingBox:/ && !/^%%Page:/) {
     46       push(@body, $_);
     47    }
     48 }
     49 
     50 print @fonts;
     51 print @body;
     52 
     53 exit 0;
     54 @END@
     55