import java.io.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.util.*;
import java.applet.*;
import java.net.URL;

public class Split {

    static void writeLine(BufferedWriter bw, String s) {
        try {
            bw.write(s, 0, s.length());
            bw.newLine();
        }
        catch (Exception anyExc) {
        }
    }

    static void writeLine(BufferedWriter bw) {
        try {
            bw.newLine();
        }
        catch (Exception anyExc) {
        }
    }

    public static void split(String name) throws Exception {

        BufferedReader br= null;
        BufferedReader ar = null;
        BufferedWriter bw = null;
        String s = "";
        Vector preamble = new Vector();
        int[] bb = new int[4];

        try {
            br = new BufferedReader(new FileReader(name + ".ps"));
            ar = new BufferedReader(new FileReader(name + ".aux"));
            s = br.readLine();
            while (!s.startsWith("%[")) {
                preamble.addElement(s);
                s = br.readLine();
            }
            s += " ";
            int p1 = s.indexOf(' '), p2 = 0;
            for (int ii = 0; ii < 4; ii++) {
                p2 = s.indexOf(' ', p1+1);
                bb[ii] = Integer.parseInt(s.substring(p1+1, p2));
                p1 = p2;
            }

            s = br.readLine();
            while (!s.startsWith("%]")) { // must be %%Page: n n
                p1 = s.indexOf(' ');
                p2 = s.indexOf(' ', p1+1);
                bw = new BufferedWriter(new FileWriter(name + "-" +
                        s.substring(p1+1,p2) + ".ps"));
                String auxLine = ar.readLine();
                int pgHt = Integer.parseInt(auxLine);
                writeLine(bw, "%%BoundingBox:"
                        + " " + bb[0]
                        + " " + (bb[1]-pgHt)
                        + " " + bb[2]
                        + " " + bb[3]);
                for (int ii = 0; ii < preamble.size(); ii++)
                    writeLine(bw, (String) preamble.elementAt(ii));
                s = br.readLine();
                while (!s.startsWith("%%Page") && !s.startsWith("%]")) {
                    writeLine(bw, s);
                    s = br.readLine();
                }
                bw.close();
            }
            br.close();
            ar.close();
        }
        catch (Exception anyExc) {
            System.out.println(anyExc);
            System.exit(0);
        }

    }

    public static void main(String[] args) throws Exception {
        String[] names = {
                "xder", "bder", "dder", "eder", "ider", "bbder",
        };
        if (args.length > 0) names = args;
        for (int ii = 0; ii < names.length; ii++) {
            split(names[ii]);
        }
    }

} 